static xbt_dict_t parse_storage_content(char *filename, size_t *used_size);
static int storage_action_unref(surf_action_t action);
static void storage_action_state_set(surf_action_t action, e_surf_action_state_t state);
-static surf_action_t storage_action_execute (void *storage, double size, e_surf_action_storage_type_t type);
+static surf_action_t storage_action_execute (void *storage, size_t size, e_surf_action_storage_type_t type);
static surf_action_t storage_action_ls(void *storage, const char* path)
{
surf_file_t file = xbt_new0(s_surf_file_t,1);
file->name = xbt_strdup(path);
file->size = size;
- file->storage = xbt_strdup(mount);
+ file->mount = xbt_strdup(mount);
surf_action_t action = storage_action_execute(storage,0, OPEN);
action->file = (void *)file;
}
free(fd->name);
- free(fd->storage);
+ free(fd->mount);
xbt_free(fd);
surf_action_t action = storage_action_execute(storage,0, CLOSE);
return action;
}
-static surf_action_t storage_action_read(void *storage, void* ptr,
- size_t size, surf_file_t fd)
+static surf_action_t storage_action_read(void *storage, size_t size,
+ surf_file_t fd)
{
if(size > fd->size)
size = fd->size;
return action;
}
-static surf_action_t storage_action_write(void *storage, const void* ptr,
- size_t size, surf_file_t fd)
+static surf_action_t storage_action_write(void *storage, size_t size,
+ surf_file_t fd)
{
char *filename = fd->name;
XBT_DEBUG("\tWrite file '%s' size '%zu/%zu'",filename,size,fd->size);
return action;
}
-static surf_action_t storage_action_execute (void *storage, double size, e_surf_action_storage_type_t type)
+static surf_action_t storage_action_execute (void *storage, size_t size, e_surf_action_storage_type_t type)
{
surf_action_storage_t action = NULL;
storage_t STORAGE = storage;
- XBT_IN("(%s,%f", surf_resource_name(STORAGE), size);
+ XBT_IN("(%s,%zu", surf_resource_name(STORAGE), size);
action =
surf_action_new(sizeof(s_surf_action_storage_t), size, surf_storage_model,
STORAGE->state_current != SURF_RESOURCE_ON);
if(action->type == WRITE)
{
double rate = lmm_variable_getvalue(GENERIC_LMM_ACTION(action).variable);
- ((storage_t)(action->storage))->used_size += delta * rate; // disk usage
- ((surf_action_t)action)->file->size += delta * rate; // file size
+ /* Hack to avoid rounding differences between x86 and x86_64
+ * (note that the next sizes are of type size_t). */
+ long incr = delta * rate + MAXMIN_PRECISION;
+ ((storage_t)(action->storage))->used_size += incr; // disk usage
+ ((surf_action_t)action)->file->size += incr; // file size
}
}
stype->properties = storage_type->properties;
stype->content = xbt_strdup(storage_type->content);
stype->type_id = xbt_strdup(storage_type->id);
- stype->size = storage_type->size * 1000000000; /* storage_type->size is in Gbytes and stype->sizeis in bytes */
+ stype->size = storage_type->size;
XBT_DEBUG("ROUTING Create a storage type id '%s' with model '%s' content '%s'",
stype->type_id,