+static xbt_dict_t ws_get_properties(const void *ws)
+{
+ return surf_resource_properties(((workstation_CLM03_t) ws)->cpu);
+}
+
+static storage_t find_storage_on_mount_list(void *workstation,const char* storage)
+{
+ storage_t st = NULL;
+ s_mount_t mnt;
+ unsigned int cursor;
+ xbt_dynar_t storage_list = ((workstation_CLM03_t) workstation)->storage;
+
+ XBT_DEBUG("Search for storage name '%s' on '%s'",storage,((workstation_CLM03_t) workstation)->generic_resource.name);
+ xbt_dynar_foreach(storage_list,cursor,mnt)
+ {
+ XBT_DEBUG("See '%s'",mnt.name);
+ if(!strcmp(storage,mnt.name)){
+ st = mnt.id;
+ break;
+ }
+ }
+ if(!st) xbt_die("Can't find mount '%s' for '%s'",storage,((workstation_CLM03_t) workstation)->generic_resource.name);
+ return st;
+}
+
+static surf_action_t ws_action_open(void *workstation, const char* storage, const char* path, const char* mode)
+{
+ storage_t st = find_storage_on_mount_list(workstation, storage);
+ XBT_DEBUG("OPEN on disk '%s'",st->generic_resource.name);
+ surf_model_t model = st->generic_resource.model;
+ return model->extension.storage.open(st, path, mode);
+}
+
+static surf_action_t ws_action_close(void *workstation, const char* storage, surf_file_t fp)
+{
+ storage_t st = find_storage_on_mount_list(workstation, storage);
+ XBT_DEBUG("CLOSE on disk '%s'",st->generic_resource.name);
+ surf_model_t model = st->generic_resource.model;
+ return model->extension.storage.close(st, fp);
+}
+
+static surf_action_t ws_action_read(void *workstation, const char* storage, void* ptr, size_t size, size_t nmemb, surf_file_t stream)
+{
+ storage_t st = find_storage_on_mount_list(workstation, storage);
+ XBT_DEBUG("READ on disk '%s'",st->generic_resource.name);
+ surf_model_t model = st->generic_resource.model;
+ return model->extension.storage.read(st, ptr, size, nmemb, stream);
+}
+
+static surf_action_t ws_action_write(void *workstation, const char* storage, const void* ptr, size_t size, size_t nmemb, surf_file_t stream)
+{
+ storage_t st = find_storage_on_mount_list(workstation, storage);
+ XBT_DEBUG("WRITE on disk '%s'",st->generic_resource.name);
+ surf_model_t model = st->generic_resource.model;
+ return model->extension.storage.write(st, ptr, size, nmemb, stream);
+}
+
+static surf_action_t ws_action_stat(void *workstation, const char* storage, int fd, void* buf)
+{
+ storage_t st = find_storage_on_mount_list(workstation, storage);
+ XBT_DEBUG("STAT on disk '%s'",st->generic_resource.name);
+ surf_model_t model = st->generic_resource.model;
+ return model->extension.storage.stat(st, fd, buf);
+}
+