Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' into hypervisor
[simgrid.git] / src / surf / storage.c
index 4d82cd3..2e35c45 100644 (file)
@@ -103,7 +103,6 @@ static surf_action_t storage_action_unlink(void *storage, surf_file_t stream)
   xbt_dict_remove(content_dict,stream->name);
 
   free(stream->name);
-  stream->content = NULL;
   xbt_free(stream);
 
   return action;
@@ -152,7 +151,6 @@ static surf_action_t storage_action_close(void *storage, surf_file_t fp)
   }
 
   free(fp->name);
-  fp->content = NULL;
   xbt_free(fp);
   surf_action_t action = storage_action_execute(storage,0, CLOSE);
   return action;
@@ -232,7 +230,7 @@ static void* storage_create_resource(const char* id, const char* model,const cha
 {
   storage_t storage = NULL;
 
-  xbt_assert(!surf_storage_resource_by_name(id),
+  xbt_assert(!surf_storage_resource_priv(surf_storage_resource_by_name(id)),
               "Storage '%s' declared several times in the platform file",
               id);
   storage = (storage_t) surf_resource_new(sizeof(s_storage_t),
@@ -269,27 +267,26 @@ static void* storage_create_resource(const char* id, const char* model,const cha
   return storage;
 }
 
-static void storage_finalize(void)
+static void storage_finalize(surf_model_t storage_model)
 {
   lmm_system_free(storage_maxmin_system);
   storage_maxmin_system = NULL;
 
-  surf_model_exit(surf_storage_model);
-  surf_storage_model = NULL;
+  surf_model_exit(storage_model);
+  storage_model = NULL;
 
-  if(storage_list)
-    xbt_dynar_free(&storage_list);
+  xbt_dynar_free(&storage_list);
 
   xbt_swag_free
       (storage_running_action_set_that_does_not_need_being_checked);
   storage_running_action_set_that_does_not_need_being_checked = NULL;
 }
 
-static void storage_update_actions_state(double now, double delta)
+static void storage_update_actions_state(surf_model_t storage_model, double now, double delta)
 {
   surf_action_storage_t action = NULL;
   surf_action_storage_t next_action = NULL;
-  xbt_swag_t running_actions = surf_storage_model->states.running_action_set;
+  xbt_swag_t running_actions = storage_model->states.running_action_set;
 
   // Update the disk usage
   // Update the file size
@@ -333,7 +330,7 @@ static void storage_update_actions_state(double now, double delta)
   return;
 }
 
-static double storage_share_resources(double NOW)
+static double storage_share_resources(surf_model_t storage_model, double NOW)
 {
   XBT_DEBUG("storage_share_resources %f",NOW);
   s_surf_action_storage_t action;
@@ -341,7 +338,7 @@ static double storage_share_resources(double NOW)
   storage_t storage;
   surf_action_storage_t write_action;
 
-  double min_completion = generic_maxmin_share_resources(surf_storage_model->states.running_action_set,
+  double min_completion = generic_maxmin_share_resources(storage_model->states.running_action_set,
       xbt_swag_offset(action, generic_lmm_action.variable),
       storage_maxmin_system, lmm_solve);
 
@@ -495,6 +492,7 @@ static void surf_storage_model_init_internal(void)
       xbt_swag_new(xbt_swag_offset(action, state_hookup));
 
   surf_storage_model->name = "Storage";
+  surf_storage_model->type = SURF_MODEL_TYPE_STORAGE;
   surf_storage_model->action_unref = storage_action_unref;
   surf_storage_model->action_cancel = storage_action_cancel;
   surf_storage_model->action_state_set = storage_action_state_set;
@@ -593,25 +591,26 @@ static xbt_dict_t parse_storage_content(char *filename, unsigned long *used_size
 
   surf_stat_t content;
 
-  while ((read = getline(&line, &len, file)) != -1) {
+  while ((read = xbt_getline(&line, &len, file)) != -1) {
+    if (read){
     content = xbt_new0(s_surf_stat_t,1);
     if(sscanf(line,"%s %d %s %s %ld %s %s %s",user_rights,&nb,user,group,&size,date,time,path)==8) {
-      content->stat.date = xbt_strdup(date);
-      content->stat.group = xbt_strdup(group);
-      content->stat.size = size;
-      content->stat.time = xbt_strdup(time);
-      content->stat.user = xbt_strdup(user);
-      content->stat.user_rights = xbt_strdup(user_rights);
-      *used_size += content->stat.size;
-      xbt_dict_set(parse_content,path,content,NULL);
-    } else {
-      xbt_die("Be sure of passing a good format for content file.\n");
-      // You can generate this kind of file with command line:
-      // find /path/you/want -type f -exec ls -l {} \; 2>/dev/null > ./content.txt
+        content->stat.date = xbt_strdup(date);
+        content->stat.group = xbt_strdup(group);
+        content->stat.size = size;
+        content->stat.time = xbt_strdup(time);
+        content->stat.user = xbt_strdup(user);
+        content->stat.user_rights = xbt_strdup(user_rights);
+        *used_size += content->stat.size;
+        xbt_dict_set(parse_content,path,content,NULL);
+      } else {
+        xbt_die("Be sure of passing a good format for content file.\n");
+        // You can generate this kind of file with command line:
+        // find /path/you/want -type f -exec ls -l {} \; 2>/dev/null > ./content.txt
+      }
     }
   }
-  if (line)
-      free(line);
+  free(line);
   fclose(file);
   return parse_content;
 }
@@ -673,7 +672,7 @@ static void storage_parse_mount(sg_platf_mount_cbarg_t mount)
   XBT_DEBUG("ROUTING Mount '%s' on '%s'",mount->id, mount->name);
 
   s_mount_t mnt;
-  mnt.id = surf_storage_resource_by_name(mount->id);
+  mnt.id = surf_storage_resource_priv(surf_storage_resource_by_name(mount->id));
   mnt.name = xbt_strdup(mount->name);
 
   if(!mount_list){