Ignore:
File:
1 edited

Legend:

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

    r5ca5eaa7 r96b02eb9  
    4242#include <libfs.h>
    4343#include <libblock.h>
     44#include <ipc/ipc.h>
    4445#include <ipc/services.h>
    4546#include <ipc/devmap.h>
     
    325326                    uint16_t_le2host(d->firstc));
    326327                if (rc != EOK) {
    327                         (void) block_put(b);
    328328                        (void) fat_node_put(FS_NODE(nodep));
    329329                        return rc;
     
    812812        fibril_mutex_unlock(&childp->idx->lock);
    813813        childp->lnkcnt = 0;
    814         childp->refcnt++;       /* keep the node in memory until destroyed */
    815814        childp->dirty = true;
    816815        fibril_mutex_unlock(&childp->lock);
     
    956955       
    957956        if (rc != EOK) {
    958                 async_answer_0(rid, rc);
     957                ipc_answer_0(rid, rc);
    959958                return;
    960959        }
     
    971970        rc = block_init(devmap_handle, BS_SIZE);
    972971        if (rc != EOK) {
    973                 async_answer_0(rid, rc);
     972                ipc_answer_0(rid, rc);
    974973                return;
    975974        }
     
    979978        if (rc != EOK) {
    980979                block_fini(devmap_handle);
    981                 async_answer_0(rid, rc);
     980                ipc_answer_0(rid, rc);
    982981                return;
    983982        }
     
    988987        if (BPS(bs) != BS_SIZE) {
    989988                block_fini(devmap_handle);
    990                 async_answer_0(rid, ENOTSUP);
     989                ipc_answer_0(rid, ENOTSUP);
    991990                return;
    992991        }
     
    996995        if (rc != EOK) {
    997996                block_fini(devmap_handle);
    998                 async_answer_0(rid, rc);
     997                ipc_answer_0(rid, rc);
    999998                return;
    1000999        }
     
    10051004                (void) block_cache_fini(devmap_handle);
    10061005                block_fini(devmap_handle);
    1007                 async_answer_0(rid, rc);
     1006                ipc_answer_0(rid, rc);
    10081007                return;
    10091008        }
     
    10131012                (void) block_cache_fini(devmap_handle);
    10141013                block_fini(devmap_handle);
    1015                 async_answer_0(rid, rc);
     1014                ipc_answer_0(rid, rc);
    10161015                return;
    10171016        }
     
    10231022                block_fini(devmap_handle);
    10241023                fat_idx_fini_by_devmap_handle(devmap_handle);
    1025                 async_answer_0(rid, ENOMEM);
     1024                ipc_answer_0(rid, ENOMEM);
    10261025                return;
    10271026        }
     
    10331032                block_fini(devmap_handle);
    10341033                fat_idx_fini_by_devmap_handle(devmap_handle);
    1035                 async_answer_0(rid, ENOMEM);
     1034                ipc_answer_0(rid, ENOMEM);
    10361035                return;
    10371036        }
     
    10451044                block_fini(devmap_handle);
    10461045                fat_idx_fini_by_devmap_handle(devmap_handle);
    1047                 async_answer_0(rid, ENOMEM);
     1046                ipc_answer_0(rid, ENOMEM);
    10481047                return;
    10491048        }
     
    10631062        fibril_mutex_unlock(&ridxp->lock);
    10641063
    1065         async_answer_3(rid, EOK, ridxp->index, rootp->size, rootp->lnkcnt);
     1064        ipc_answer_3(rid, EOK, ridxp->index, rootp->size, rootp->lnkcnt);
    10661065}
    10671066
     
    10801079        rc = fat_root_get(&fn, devmap_handle);
    10811080        if (rc != EOK) {
    1082                 async_answer_0(rid, rc);
     1081                ipc_answer_0(rid, rc);
    10831082                return;
    10841083        }
     
    10911090        if (nodep->refcnt != 2) {
    10921091                (void) fat_node_put(fn);
    1093                 async_answer_0(rid, EBUSY);
     1092                ipc_answer_0(rid, EBUSY);
    10941093                return;
    10951094        }
     
    11111110        block_fini(devmap_handle);
    11121111
    1113         async_answer_0(rid, EOK);
     1112        ipc_answer_0(rid, EOK);
    11141113}
    11151114
     
    11391138        rc = fat_node_get(&fn, devmap_handle, index);
    11401139        if (rc != EOK) {
    1141                 async_answer_0(rid, rc);
     1140                ipc_answer_0(rid, rc);
    11421141                return;
    11431142        }
    11441143        if (!fn) {
    1145                 async_answer_0(rid, ENOENT);
     1144                ipc_answer_0(rid, ENOENT);
    11461145                return;
    11471146        }
     
    11521151        if (!async_data_read_receive(&callid, &len)) {
    11531152                fat_node_put(fn);
    1154                 async_answer_0(callid, EINVAL);
    1155                 async_answer_0(rid, EINVAL);
     1153                ipc_answer_0(callid, EINVAL);
     1154                ipc_answer_0(rid, EINVAL);
    11561155                return;
    11571156        }
     
    11761175                        if (rc != EOK) {
    11771176                                fat_node_put(fn);
    1178                                 async_answer_0(callid, rc);
    1179                                 async_answer_0(rid, rc);
     1177                                ipc_answer_0(callid, rc);
     1178                                ipc_answer_0(rid, rc);
    11801179                                return;
    11811180                        }
     
    11851184                        if (rc != EOK) {
    11861185                                fat_node_put(fn);
    1187                                 async_answer_0(rid, rc);
     1186                                ipc_answer_0(rid, rc);
    11881187                                return;
    11891188                        }
     
    12421241miss:
    12431242                rc = fat_node_put(fn);
    1244                 async_answer_0(callid, rc != EOK ? rc : ENOENT);
    1245                 async_answer_1(rid, rc != EOK ? rc : ENOENT, 0);
     1243                ipc_answer_0(callid, rc != EOK ? rc : ENOENT);
     1244                ipc_answer_1(rid, rc != EOK ? rc : ENOENT, 0);
    12461245                return;
    12471246
    12481247err:
    12491248                (void) fat_node_put(fn);
    1250                 async_answer_0(callid, rc);
    1251                 async_answer_0(rid, rc);
     1249                ipc_answer_0(callid, rc);
     1250                ipc_answer_0(rid, rc);
    12521251                return;
    12531252
     
    12581257
    12591258        rc = fat_node_put(fn);
    1260         async_answer_1(rid, rc, (sysarg_t)bytes);
     1259        ipc_answer_1(rid, rc, (sysarg_t)bytes);
    12611260}
    12621261
     
    12781277        rc = fat_node_get(&fn, devmap_handle, index);
    12791278        if (rc != EOK) {
    1280                 async_answer_0(rid, rc);
     1279                ipc_answer_0(rid, rc);
    12811280                return;
    12821281        }
    12831282        if (!fn) {
    1284                 async_answer_0(rid, ENOENT);
     1283                ipc_answer_0(rid, ENOENT);
    12851284                return;
    12861285        }
     
    12911290        if (!async_data_write_receive(&callid, &len)) {
    12921291                (void) fat_node_put(fn);
    1293                 async_answer_0(callid, EINVAL);
    1294                 async_answer_0(rid, EINVAL);
     1292                ipc_answer_0(callid, EINVAL);
     1293                ipc_answer_0(rid, EINVAL);
    12951294                return;
    12961295        }
     
    13201319                if (rc != EOK) {
    13211320                        (void) fat_node_put(fn);
    1322                         async_answer_0(callid, rc);
    1323                         async_answer_0(rid, rc);
     1321                        ipc_answer_0(callid, rc);
     1322                        ipc_answer_0(rid, rc);
    13241323                        return;
    13251324                }
     
    13271326                if (rc != EOK) {
    13281327                        (void) fat_node_put(fn);
    1329                         async_answer_0(callid, rc);
    1330                         async_answer_0(rid, rc);
     1328                        ipc_answer_0(callid, rc);
     1329                        ipc_answer_0(rid, rc);
    13311330                        return;
    13321331                }
     
    13371336                if (rc != EOK) {
    13381337                        (void) fat_node_put(fn);
    1339                         async_answer_0(rid, rc);
     1338                        ipc_answer_0(rid, rc);
    13401339                        return;
    13411340                }
     
    13461345                size = nodep->size;
    13471346                rc = fat_node_put(fn);
    1348                 async_answer_2(rid, rc, bytes, nodep->size);
     1347                ipc_answer_2(rid, rc, bytes, nodep->size);
    13491348                return;
    13501349        } else {
     
    13621361                        /* could not allocate a chain of nclsts clusters */
    13631362                        (void) fat_node_put(fn);
    1364                         async_answer_0(callid, rc);
    1365                         async_answer_0(rid, rc);
     1363                        ipc_answer_0(callid, rc);
     1364                        ipc_answer_0(rid, rc);
    13661365                        return;
    13671366                }
     
    13711370                        (void) fat_free_clusters(bs, devmap_handle, mcl);
    13721371                        (void) fat_node_put(fn);
    1373                         async_answer_0(callid, rc);
    1374                         async_answer_0(rid, rc);
     1372                        ipc_answer_0(callid, rc);
     1373                        ipc_answer_0(rid, rc);
    13751374                        return;
    13761375                }
     
    13801379                        (void) fat_free_clusters(bs, devmap_handle, mcl);
    13811380                        (void) fat_node_put(fn);
    1382                         async_answer_0(callid, rc);
    1383                         async_answer_0(rid, rc);
     1381                        ipc_answer_0(callid, rc);
     1382                        ipc_answer_0(rid, rc);
    13841383                        return;
    13851384                }
     
    13911390                        (void) fat_free_clusters(bs, devmap_handle, mcl);
    13921391                        (void) fat_node_put(fn);
    1393                         async_answer_0(rid, rc);
     1392                        ipc_answer_0(rid, rc);
    13941393                        return;
    13951394                }
     
    14021401                        (void) fat_free_clusters(bs, devmap_handle, mcl);
    14031402                        (void) fat_node_put(fn);
    1404                         async_answer_0(rid, rc);
     1403                        ipc_answer_0(rid, rc);
    14051404                        return;
    14061405                }
     
    14081407                nodep->dirty = true;            /* need to sync node */
    14091408                rc = fat_node_put(fn);
    1410                 async_answer_2(rid, rc, bytes, size);
     1409                ipc_answer_2(rid, rc, bytes, size);
    14111410                return;
    14121411        }
     
    14261425        rc = fat_node_get(&fn, devmap_handle, index);
    14271426        if (rc != EOK) {
    1428                 async_answer_0(rid, rc);
     1427                ipc_answer_0(rid, rc);
    14291428                return;
    14301429        }
    14311430        if (!fn) {
    1432                 async_answer_0(rid, ENOENT);
     1431                ipc_answer_0(rid, ENOENT);
    14331432                return;
    14341433        }
     
    14761475out:
    14771476        fat_node_put(fn);
    1478         async_answer_0(rid, rc);
     1477        ipc_answer_0(rid, rc);
    14791478        return;
    14801479}
     
    14821481void fat_close(ipc_callid_t rid, ipc_call_t *request)
    14831482{
    1484         async_answer_0(rid, EOK);
     1483        ipc_answer_0(rid, EOK);
    14851484}
    14861485
     
    14901489        fs_index_t index = (fs_index_t)IPC_GET_ARG2(*request);
    14911490        fs_node_t *fn;
    1492         fat_node_t *nodep;
    14931491        int rc;
    14941492
    14951493        rc = fat_node_get(&fn, devmap_handle, index);
    14961494        if (rc != EOK) {
    1497                 async_answer_0(rid, rc);
     1495                ipc_answer_0(rid, rc);
    14981496                return;
    14991497        }
    15001498        if (!fn) {
    1501                 async_answer_0(rid, ENOENT);
    1502                 return;
    1503         }
    1504 
    1505         nodep = FAT_NODE(fn);
    1506         /*
    1507          * We should have exactly two references. One for the above
    1508          * call to fat_node_get() and one from fat_unlink().
    1509          */
    1510         assert(nodep->refcnt == 2);
     1499                ipc_answer_0(rid, ENOENT);
     1500                return;
     1501        }
    15111502
    15121503        rc = fat_destroy_node(fn);
    1513         async_answer_0(rid, rc);
     1504        ipc_answer_0(rid, rc);
    15141505}
    15151506
     
    15321523        int rc = fat_node_get(&fn, devmap_handle, index);
    15331524        if (rc != EOK) {
    1534                 async_answer_0(rid, rc);
     1525                ipc_answer_0(rid, rc);
    15351526                return;
    15361527        }
    15371528        if (!fn) {
    1538                 async_answer_0(rid, ENOENT);
     1529                ipc_answer_0(rid, ENOENT);
    15391530                return;
    15401531        }
     
    15461537       
    15471538        fat_node_put(fn);
    1548         async_answer_0(rid, rc);
     1539        ipc_answer_0(rid, rc);
    15491540}
    15501541
Note: See TracChangeset for help on using the changeset viewer.