Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix TestSuite.msg-file
authorpaul bedaride <paul.bedaride@gmail.com>
Thu, 15 Nov 2012 14:24:29 +0000 (15:24 +0100)
committerpaul bedaride <paul.bedaride@gmail.com>
Thu, 15 Nov 2012 14:24:29 +0000 (15:24 +0100)
src/surf/storage.c
src/surf/storage_private.h

index cf54feb..268f141 100644 (file)
@@ -140,6 +140,16 @@ static surf_action_t storage_action_close(void *storage, surf_file_t fp)
 {
   char *filename = fp->name;
   XBT_DEBUG("\tClose file '%s' size '%f'",filename,fp->content->stat.size);
+  // unref write actions from storage
+  surf_action_storage_t write_action;
+  unsigned int i;
+  xbt_dynar_foreach(((storage_t)storage)->write_actions,i,write_action) {
+    if ((write_action->generic_lmm_action.generic_action.file) == fp) {
+      xbt_dynar_cursor_rm(((storage_t)storage)->write_actions, &i);
+      storage_action_unref((surf_action_t) write_action);
+    }
+  }
+
   free(fp->name);
   fp->content = NULL;
   xbt_free(fp);
@@ -209,6 +219,7 @@ static surf_action_t storage_action_execute (void *storage, double size, e_surf_
     lmm_expand(storage_maxmin_system, STORAGE->constraint_write,
                GENERIC_LMM_ACTION(action).variable, 1.0);
     xbt_dynar_push(((storage_t)storage)->write_actions,&action);
+    surf_action_ref((surf_action_t) action);
     break;
   }
   action->type = type;
index c62f265..e41cde0 100644 (file)
@@ -54,4 +54,6 @@ typedef struct surf_action_storage {
   void *storage;
 } s_surf_action_storage_t, *surf_action_storage_t;
 
+static int storage_action_unref(surf_action_t action);
+
 #endif /* STORAGE_PRIVATE_H_ */