Changeset 1924bd43 in mainline for uspace/srv/fs/mfs/mfs_ops.c


Ignore:
Timestamp:
2011-09-25T12:07:26Z (13 years ago)
Author:
Frantisek Princ <frantisek.princ@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5dd4f77a
Parents:
6fe0bf8d (diff), 113093a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge with mainline

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/mfs/mfs_ops.c

    r6fe0bf8d r1924bd43  
    7373
    7474
    75 static LIST_INITIALIZE(inst_list);
    76 static FIBRIL_MUTEX_INITIALIZE(inst_list_mutex);
    7775static hash_table_t open_nodes;
    7876static FIBRIL_MUTEX_INITIALIZE(open_nodes_lock);
     
    179177                return ENOMEM;
    180178        }
    181 
    182         instance->open_nodes_cnt = 0;
    183179
    184180        sb = malloc(MFS_SUPERBLOCK_SIZE);
     
    268264                free(instance);
    269265                free(sbi);
    270                 free(sb);
    271266                block_cache_fini(service_id);
    272267                block_fini(service_id);
     
    275270        }
    276271
    277         /*Initialize the instance structure and add it to the list*/
    278         link_initialize(&instance->link);
     272        /*Initialize the instance structure and remember it*/
    279273        instance->service_id = service_id;
    280274        instance->sbi = sbi;
    281 
    282         fibril_mutex_lock(&inst_list_mutex);
    283         list_append(&instance->link, &inst_list);
    284         fibril_mutex_unlock(&inst_list_mutex);
     275        instance->open_nodes_cnt = 0;
     276        rc = fs_instance_create(service_id, instance);
     277        if (rc != EOK) {
     278                free(instance);
     279                free(sbi);
     280                block_cache_fini(service_id);
     281                block_fini(service_id);
     282                mfsdebug("fs instance creation failed\n");
     283                return rc;
     284        }
    285285
    286286        mfsdebug("mount successful\n");
     
    315315        block_fini(service_id);
    316316
    317         /* Remove the instance from the list */
    318         fibril_mutex_lock(&inst_list_mutex);
    319         list_remove(&inst->link);
    320         fibril_mutex_unlock(&inst_list_mutex);
    321 
     317        /* Remove and destroy the instance */
     318        (void) fs_instance_destroy(service_id);
    322319        free(inst->sbi);
    323320        free(inst);
     
    10121009mfs_instance_get(service_id_t service_id, struct mfs_instance **instance)
    10131010{
    1014         struct mfs_instance *instance_ptr;
    1015 
    1016         fibril_mutex_lock(&inst_list_mutex);
    1017 
    1018         if (list_empty(&inst_list)) {
    1019                 fibril_mutex_unlock(&inst_list_mutex);
    1020                 return EINVAL;
    1021         }
    1022 
    1023         list_foreach(inst_list, link) {
    1024                 instance_ptr = list_get_instance(link, struct mfs_instance,
    1025                                                  link);
    1026 
    1027                 if (instance_ptr->service_id == service_id) {
    1028                         *instance = instance_ptr;
    1029                         fibril_mutex_unlock(&inst_list_mutex);
    1030                         return EOK;
    1031                 }
    1032         }
    1033 
    1034         mfsdebug("Instance not found\n");
    1035 
    1036         fibril_mutex_unlock(&inst_list_mutex);
    1037         return EINVAL;
     1011        void *data;
     1012        int rc;
     1013
     1014        rc = fs_instance_get(service_id, &data);
     1015        if (rc == EOK) {
     1016                *instance = (struct mfs_instance *) data;
     1017        } else {
     1018                mfsdebug("instance not found\n");
     1019        }
     1020
     1021        return rc;
    10381022}
    10391023
Note: See TracChangeset for help on using the changeset viewer.