Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/fat/fat_idx.c

    r393bef1 r1e4cada  
    149149{
    150150        dev_handle_t dev_handle = (dev_handle_t)key[UPH_DH_KEY];
    151         fat_cluster_t pfc;
    152         unsigned pdi;
     151        fat_cluster_t pfc = (fat_cluster_t)key[UPH_PFC_KEY];
     152        unsigned pdi = (unsigned)key[UPH_PDI_KEY];
    153153        fat_idx_t *fidx = list_get_instance(item, fat_idx_t, uph_link);
    154154
    155         switch (keys) {
    156         case 1:
    157                 return (dev_handle == fidx->dev_handle);
    158         case 3:
    159                 pfc = (fat_cluster_t) key[UPH_PFC_KEY];
    160                 pdi = (unsigned) key[UPH_PDI_KEY];
    161                 return (dev_handle == fidx->dev_handle) && (pfc == fidx->pfc) &&
    162                     (pdi == fidx->pdi);
    163         default:
    164                 assert((keys == 1) || (keys == 3));
    165         }
    166 
    167         return 0;
     155        return (dev_handle == fidx->dev_handle) && (pfc == fidx->pfc) &&
     156            (pdi == fidx->pdi);
    168157}
    169158
     
    208197{
    209198        dev_handle_t dev_handle = (dev_handle_t)key[UIH_DH_KEY];
    210         fs_index_t index;
     199        fs_index_t index = (fs_index_t)key[UIH_INDEX_KEY];
    211200        fat_idx_t *fidx = list_get_instance(item, fat_idx_t, uih_link);
    212201
    213         switch (keys) {
    214         case 1:
    215                 return (dev_handle == fidx->dev_handle);
    216         case 2:
    217                 index = (fs_index_t) key[UIH_INDEX_KEY];
    218                 return (dev_handle == fidx->dev_handle) &&
    219                     (index == fidx->index);
    220         default:
    221                 assert((keys == 1) || (keys == 2));
    222         }
    223 
    224         return 0;
     202        return (dev_handle == fidx->dev_handle) && (index == fidx->index);
    225203}
    226204
    227205static void idx_remove_callback(link_t *item)
    228206{
    229         fat_idx_t *fidx = list_get_instance(item, fat_idx_t, uih_link);
    230 
    231         free(fidx);
     207        /* nothing to do */
    232208}
    233209
     
    510486                [UIH_INDEX_KEY] = idx->index,
    511487        };
    512         dev_handle_t dev_handle = idx->dev_handle;
    513         fs_index_t index = idx->index;
    514488
    515489        assert(idx->pfc == FAT_CLST_RES0);
     
    524498        fibril_mutex_unlock(&used_lock);
    525499        /* Release the VFS index. */
    526         fat_index_free(dev_handle, index);
    527         /* The index structure itself is freed in idx_remove_callback(). */
     500        fat_index_free(idx->dev_handle, idx->index);
     501        /* Deallocate the structure. */
     502        free(idx);
    528503}
    529504
     
    556531        unused_initialize(u, dev_handle);
    557532        fibril_mutex_lock(&unused_lock);
    558         if (!unused_find(dev_handle, false)) {
     533        if (!unused_find(dev_handle, false))
    559534                list_append(&u->link, &unused_head);
    560         } else {
    561                 free(u);
     535        else
    562536                rc = EEXIST;
    563         }
    564537        fibril_mutex_unlock(&unused_lock);
    565538        return rc;
     
    568541void fat_idx_fini_by_dev_handle(dev_handle_t dev_handle)
    569542{
    570         unsigned long ikey[] = {
    571                 [UIH_DH_KEY] = dev_handle
    572         };
    573         unsigned long pkey[] = {
    574                 [UPH_DH_KEY] = dev_handle
    575         };
    576 
    577         /*
    578          * Remove this instance's index structure from up_hash and ui_hash.
    579          * Process up_hash first and ui_hash second because the index structure
    580          * is actually removed in idx_remove_callback().
    581          */
    582         fibril_mutex_lock(&used_lock);
    583         hash_table_remove(&up_hash, pkey, 1);
    584         hash_table_remove(&ui_hash, ikey, 1);
    585         fibril_mutex_unlock(&used_lock);
    586 
    587         /*
    588          * Free the unused and freed structures for this instance.
    589          */
    590         unused_t *u = unused_find(dev_handle, true);
     543        unused_t *u;
     544
     545        u = unused_find(dev_handle, true);
    591546        assert(u);
    592547        list_remove(&u->link);
Note: See TracChangeset for help on using the changeset viewer.