Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 9a15176 in mainline


Ignore:
Timestamp:
2009-10-01T11:32:04Z (11 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
master
Children:
8810c63
Parents:
0fc1e5d
Message:

Make fat_idx_get_new() return the exact error code.

Location:
uspace/srv/fs/fat
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/fat/fat.h

    r0fc1e5d r9a15176  
    215215extern void fat_sync(ipc_callid_t, ipc_call_t *);
    216216
    217 extern fat_idx_t *fat_idx_get_new(dev_handle_t);
     217extern int fat_idx_get_new(fat_idx_t **, dev_handle_t);
    218218extern fat_idx_t *fat_idx_get_by_pos(dev_handle_t, fat_cluster_t, unsigned);
    219219extern fat_idx_t *fat_idx_get_by_index(dev_handle_t, fs_index_t);
  • uspace/srv/fs/fat/fat_idx.c

    r0fc1e5d r9a15176  
    339339}
    340340
    341 static fat_idx_t *fat_idx_create(dev_handle_t dev_handle)
     341static int fat_idx_create(fat_idx_t **fidxp, dev_handle_t dev_handle)
    342342{
    343343        fat_idx_t *fidx;
     
    345345        fidx = (fat_idx_t *) malloc(sizeof(fat_idx_t));
    346346        if (!fidx)
    347                 return NULL;
     347                return ENOMEM;
    348348        if (!fat_index_alloc(dev_handle, &fidx->index)) {
    349349                free(fidx);
    350                 return NULL;
     350                return ENOSPC;
    351351        }
    352352               
     
    359359        fidx->nodep = NULL;
    360360
    361         return fidx;
    362 }
    363 
    364 fat_idx_t *fat_idx_get_new(dev_handle_t dev_handle)
     361        *fidxp = fidx;
     362        return EOK;
     363}
     364
     365int fat_idx_get_new(fat_idx_t **fidxp, dev_handle_t dev_handle)
    365366{
    366367        fat_idx_t *fidx;
     368        int rc;
    367369
    368370        fibril_mutex_lock(&used_lock);
    369         fidx = fat_idx_create(dev_handle);
    370         if (!fidx) {
     371        rc = fat_idx_create(&fidx, dev_handle);
     372        if (rc != EOK) {
    371373                fibril_mutex_unlock(&used_lock);
    372                 return NULL;
     374                return rc;
    373375        }
    374376               
     
    382384        fibril_mutex_unlock(&used_lock);
    383385
    384         return fidx;
     386        *fidxp = fidx;
     387        return EOK;
    385388}
    386389
     
    401404                fidx = hash_table_get_instance(l, fat_idx_t, uph_link);
    402405        } else {
    403                 fidx = fat_idx_create(dev_handle);
    404                 if (!fidx) {
     406                int rc;
     407
     408                rc = fat_idx_create(&fidx, dev_handle);
     409                if (rc != EOK) {
    405410                        fibril_mutex_unlock(&used_lock);
    406411                        return NULL;
  • uspace/srv/fs/fat/fat_ops.c

    r0fc1e5d r9a15176  
    462462                return rc;
    463463        }
    464         idxp = fat_idx_get_new(dev_handle);
    465         if (!idxp) {
     464        rc = fat_idx_get_new(&idxp, dev_handle);
     465        if (rc != EOK) {
    466466                (void) fat_free_clusters(bs, dev_handle, mcl); 
    467467                (void) fat_node_put(FS_NODE(nodep));
    468                 return ENOMEM;  /* FIXME: determine the true error code */
     468                return rc;
    469469        }
    470470        /* idxp->lock held */
Note: See TracChangeset for help on using the changeset viewer.