Changeset 15f3c3f in mainline for uspace/srv/fs/fat/fat_ops.c


Ignore:
Timestamp:
2011-06-22T22:00:52Z (13 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
86ffa27f
Parents:
ef09a7a
Message:

Rename devmap to loc, devfs to locfs.

File:
1 edited

Legend:

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

    ref09a7a r15f3c3f  
    4343#include <libblock.h>
    4444#include <ipc/services.h>
    45 #include <ipc/devmap.h>
     45#include <ipc/loc.h>
    4646#include <macros.h>
    4747#include <async.h>
     
    7272 * Forward declarations of FAT libfs operations.
    7373 */
    74 static int fat_root_get(fs_node_t **, devmap_handle_t);
     74static int fat_root_get(fs_node_t **, service_id_t);
    7575static int fat_match(fs_node_t **, fs_node_t *, const char *);
    76 static int fat_node_get(fs_node_t **, devmap_handle_t, fs_index_t);
     76static int fat_node_get(fs_node_t **, service_id_t, fs_index_t);
    7777static int fat_node_open(fs_node_t *);
    7878static int fat_node_put(fs_node_t *);
    79 static int fat_create_node(fs_node_t **, devmap_handle_t, int);
     79static int fat_create_node(fs_node_t **, service_id_t, int);
    8080static int fat_destroy_node(fs_node_t *);
    8181static int fat_link(fs_node_t *, fs_node_t *, const char *);
     
    8888static bool fat_is_directory(fs_node_t *);
    8989static bool fat_is_file(fs_node_t *node);
    90 static devmap_handle_t fat_device_get(fs_node_t *node);
     90static service_id_t fat_device_get(fs_node_t *node);
    9191
    9292/*
     
    120120        assert(node->dirty);
    121121
    122         bs = block_bb_get(node->idx->devmap_handle);
     122        bs = block_bb_get(node->idx->service_id);
    123123       
    124124        /* Read the block that contains the dentry of interest. */
    125         rc = _fat_block_get(&b, bs, node->idx->devmap_handle, node->idx->pfc,
     125        rc = _fat_block_get(&b, bs, node->idx->service_id, node->idx->pfc,
    126126            NULL, (node->idx->pdi * sizeof(fat_dentry_t)) / BPS(bs),
    127127            BLOCK_FLAGS_NONE);
     
    145145}
    146146
    147 static int fat_node_fini_by_devmap_handle(devmap_handle_t devmap_handle)
     147static int fat_node_fini_by_service_id(service_id_t service_id)
    148148{
    149149        fat_node_t *nodep;
     
    169169                        goto restart;
    170170                }
    171                 if (nodep->idx->devmap_handle != devmap_handle) {
     171                if (nodep->idx->service_id != service_id) {
    172172                        fibril_mutex_unlock(&nodep->idx->lock);
    173173                        fibril_mutex_unlock(&nodep->lock);
     
    299299                return rc;
    300300
    301         bs = block_bb_get(idxp->devmap_handle);
     301        bs = block_bb_get(idxp->service_id);
    302302
    303303        /* Read the block that contains the dentry of interest. */
    304         rc = _fat_block_get(&b, bs, idxp->devmap_handle, idxp->pfc, NULL,
     304        rc = _fat_block_get(&b, bs, idxp->service_id, idxp->pfc, NULL,
    305305            (idxp->pdi * sizeof(fat_dentry_t)) / BPS(bs), BLOCK_FLAGS_NONE);
    306306        if (rc != EOK) {
     
    323323                 */
    324324                uint16_t clusters;
    325                 rc = fat_clusters_get(&clusters, bs, idxp->devmap_handle,
     325                rc = fat_clusters_get(&clusters, bs, idxp->service_id,
    326326                    uint16_t_le2host(d->firstc));
    327327                if (rc != EOK) {
     
    357357 */
    358358
    359 int fat_root_get(fs_node_t **rfn, devmap_handle_t devmap_handle)
    360 {
    361         return fat_node_get(rfn, devmap_handle, 0);
     359int fat_root_get(fs_node_t **rfn, service_id_t service_id)
     360{
     361        return fat_node_get(rfn, service_id, 0);
    362362}
    363363
     
    370370        unsigned blocks;
    371371        fat_dentry_t *d;
    372         devmap_handle_t devmap_handle;
     372        service_id_t service_id;
    373373        block_t *b;
    374374        int rc;
    375375
    376376        fibril_mutex_lock(&parentp->idx->lock);
    377         devmap_handle = parentp->idx->devmap_handle;
     377        service_id = parentp->idx->service_id;
    378378        fibril_mutex_unlock(&parentp->idx->lock);
    379379
    380         bs = block_bb_get(devmap_handle);
     380        bs = block_bb_get(service_id);
    381381        blocks = parentp->size / BPS(bs);
    382382        for (i = 0; i < blocks; i++) {
     
    403403                                /* hit */
    404404                                fat_node_t *nodep;
    405                                 fat_idx_t *idx = fat_idx_get_by_pos(devmap_handle,
     405                                fat_idx_t *idx = fat_idx_get_by_pos(service_id,
    406406                                    parentp->firstc, i * DPS(bs) + j);
    407407                                if (!idx) {
     
    436436
    437437/** Instantiate a FAT in-core node. */
    438 int fat_node_get(fs_node_t **rfn, devmap_handle_t devmap_handle, fs_index_t index)
     438int fat_node_get(fs_node_t **rfn, service_id_t service_id, fs_index_t index)
    439439{
    440440        fat_node_t *nodep;
     
    442442        int rc;
    443443
    444         idxp = fat_idx_get_by_index(devmap_handle, index);
     444        idxp = fat_idx_get_by_index(service_id, index);
    445445        if (!idxp) {
    446446                *rfn = NULL;
     
    493493}
    494494
    495 int fat_create_node(fs_node_t **rfn, devmap_handle_t devmap_handle, int flags)
     495int fat_create_node(fs_node_t **rfn, service_id_t service_id, int flags)
    496496{
    497497        fat_idx_t *idxp;
     
    501501        int rc;
    502502
    503         bs = block_bb_get(devmap_handle);
     503        bs = block_bb_get(service_id);
    504504        if (flags & L_DIRECTORY) {
    505505                /* allocate a cluster */
    506                 rc = fat_alloc_clusters(bs, devmap_handle, 1, &mcl, &lcl);
     506                rc = fat_alloc_clusters(bs, service_id, 1, &mcl, &lcl);
    507507                if (rc != EOK)
    508508                        return rc;
    509509                /* populate the new cluster with unused dentries */
    510                 rc = fat_zero_cluster(bs, devmap_handle, mcl);
     510                rc = fat_zero_cluster(bs, service_id, mcl);
    511511                if (rc != EOK) {
    512                         (void) fat_free_clusters(bs, devmap_handle, mcl);
     512                        (void) fat_free_clusters(bs, service_id, mcl);
    513513                        return rc;
    514514                }
     
    517517        rc = fat_node_get_new(&nodep);
    518518        if (rc != EOK) {
    519                 (void) fat_free_clusters(bs, devmap_handle, mcl);
     519                (void) fat_free_clusters(bs, service_id, mcl);
    520520                return rc;
    521521        }
    522         rc = fat_idx_get_new(&idxp, devmap_handle);
    523         if (rc != EOK) {
    524                 (void) fat_free_clusters(bs, devmap_handle, mcl);       
     522        rc = fat_idx_get_new(&idxp, service_id);
     523        if (rc != EOK) {
     524                (void) fat_free_clusters(bs, service_id, mcl); 
    525525                (void) fat_node_put(FS_NODE(nodep));
    526526                return rc;
     
    571571        assert(!has_children);
    572572
    573         bs = block_bb_get(nodep->idx->devmap_handle);
     573        bs = block_bb_get(nodep->idx->service_id);
    574574        if (nodep->firstc != FAT_CLST_RES0) {
    575575                assert(nodep->size);
    576576                /* Free all clusters allocated to the node. */
    577                 rc = fat_free_clusters(bs, nodep->idx->devmap_handle,
     577                rc = fat_free_clusters(bs, nodep->idx->service_id,
    578578                    nodep->firstc);
    579579        }
     
    621621       
    622622        fibril_mutex_lock(&parentp->idx->lock);
    623         bs = block_bb_get(parentp->idx->devmap_handle);
     623        bs = block_bb_get(parentp->idx->service_id);
    624624
    625625        blocks = parentp->size / BPS(bs);
     
    660660                return ENOSPC;
    661661        }
    662         rc = fat_alloc_clusters(bs, parentp->idx->devmap_handle, 1, &mcl, &lcl);
     662        rc = fat_alloc_clusters(bs, parentp->idx->service_id, 1, &mcl, &lcl);
    663663        if (rc != EOK) {
    664664                fibril_mutex_unlock(&parentp->idx->lock);
    665665                return rc;
    666666        }
    667         rc = fat_zero_cluster(bs, parentp->idx->devmap_handle, mcl);
    668         if (rc != EOK) {
    669                 (void) fat_free_clusters(bs, parentp->idx->devmap_handle, mcl);
     667        rc = fat_zero_cluster(bs, parentp->idx->service_id, mcl);
     668        if (rc != EOK) {
     669                (void) fat_free_clusters(bs, parentp->idx->service_id, mcl);
    670670                fibril_mutex_unlock(&parentp->idx->lock);
    671671                return rc;
     
    673673        rc = fat_append_clusters(bs, parentp, mcl, lcl);
    674674        if (rc != EOK) {
    675                 (void) fat_free_clusters(bs, parentp->idx->devmap_handle, mcl);
     675                (void) fat_free_clusters(bs, parentp->idx->service_id, mcl);
    676676                fibril_mutex_unlock(&parentp->idx->lock);
    677677                return rc;
     
    790790        assert(childp->lnkcnt == 1);
    791791        fibril_mutex_lock(&childp->idx->lock);
    792         bs = block_bb_get(childp->idx->devmap_handle);
    793 
    794         rc = _fat_block_get(&b, bs, childp->idx->devmap_handle, childp->idx->pfc,
     792        bs = block_bb_get(childp->idx->service_id);
     793
     794        rc = _fat_block_get(&b, bs, childp->idx->service_id, childp->idx->pfc,
    795795            NULL, (childp->idx->pdi * sizeof(fat_dentry_t)) / BPS(bs),
    796796            BLOCK_FLAGS_NONE);
     
    842842       
    843843        fibril_mutex_lock(&nodep->idx->lock);
    844         bs = block_bb_get(nodep->idx->devmap_handle);
     844        bs = block_bb_get(nodep->idx->service_id);
    845845
    846846        blocks = nodep->size / BPS(bs);
     
    916916}
    917917
    918 devmap_handle_t fat_device_get(fs_node_t *node)
     918service_id_t fat_device_get(fs_node_t *node)
    919919{
    920920        return 0;
     
    948948void fat_mounted(ipc_callid_t rid, ipc_call_t *request)
    949949{
    950         devmap_handle_t devmap_handle = (devmap_handle_t) IPC_GET_ARG1(*request);
     950        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*request);
    951951        enum cache_mode cmode;
    952952        fat_bs_t *bs;
     
    970970
    971971        /* initialize libblock */
    972         rc = block_init(EXCHANGE_SERIALIZE, devmap_handle, BS_SIZE);
     972        rc = block_init(EXCHANGE_SERIALIZE, service_id, BS_SIZE);
    973973        if (rc != EOK) {
    974974                async_answer_0(rid, rc);
     
    977977
    978978        /* prepare the boot block */
    979         rc = block_bb_read(devmap_handle, BS_BLOCK);
    980         if (rc != EOK) {
    981                 block_fini(devmap_handle);
     979        rc = block_bb_read(service_id, BS_BLOCK);
     980        if (rc != EOK) {
     981                block_fini(service_id);
    982982                async_answer_0(rid, rc);
    983983                return;
     
    985985
    986986        /* get the buffer with the boot sector */
    987         bs = block_bb_get(devmap_handle);
     987        bs = block_bb_get(service_id);
    988988       
    989989        if (BPS(bs) != BS_SIZE) {
    990                 block_fini(devmap_handle);
     990                block_fini(service_id);
    991991                async_answer_0(rid, ENOTSUP);
    992992                return;
     
    994994
    995995        /* Initialize the block cache */
    996         rc = block_cache_init(devmap_handle, BPS(bs), 0 /* XXX */, cmode);
    997         if (rc != EOK) {
    998                 block_fini(devmap_handle);
     996        rc = block_cache_init(service_id, BPS(bs), 0 /* XXX */, cmode);
     997        if (rc != EOK) {
     998                block_fini(service_id);
    999999                async_answer_0(rid, rc);
    10001000                return;
     
    10021002
    10031003        /* Do some simple sanity checks on the file system. */
    1004         rc = fat_sanity_check(bs, devmap_handle);
    1005         if (rc != EOK) {
    1006                 (void) block_cache_fini(devmap_handle);
    1007                 block_fini(devmap_handle);
     1004        rc = fat_sanity_check(bs, service_id);
     1005        if (rc != EOK) {
     1006                (void) block_cache_fini(service_id);
     1007                block_fini(service_id);
    10081008                async_answer_0(rid, rc);
    10091009                return;
    10101010        }
    10111011
    1012         rc = fat_idx_init_by_devmap_handle(devmap_handle);
    1013         if (rc != EOK) {
    1014                 (void) block_cache_fini(devmap_handle);
    1015                 block_fini(devmap_handle);
     1012        rc = fat_idx_init_by_service_id(service_id);
     1013        if (rc != EOK) {
     1014                (void) block_cache_fini(service_id);
     1015                block_fini(service_id);
    10161016                async_answer_0(rid, rc);
    10171017                return;
     
    10211021        fs_node_t *rfn = (fs_node_t *)malloc(sizeof(fs_node_t));
    10221022        if (!rfn) {
    1023                 (void) block_cache_fini(devmap_handle);
    1024                 block_fini(devmap_handle);
    1025                 fat_idx_fini_by_devmap_handle(devmap_handle);
     1023                (void) block_cache_fini(service_id);
     1024                block_fini(service_id);
     1025                fat_idx_fini_by_service_id(service_id);
    10261026                async_answer_0(rid, ENOMEM);
    10271027                return;
     
    10311031        if (!rootp) {
    10321032                free(rfn);
    1033                 (void) block_cache_fini(devmap_handle);
    1034                 block_fini(devmap_handle);
    1035                 fat_idx_fini_by_devmap_handle(devmap_handle);
     1033                (void) block_cache_fini(service_id);
     1034                block_fini(service_id);
     1035                fat_idx_fini_by_service_id(service_id);
    10361036                async_answer_0(rid, ENOMEM);
    10371037                return;
     
    10391039        fat_node_initialize(rootp);
    10401040
    1041         fat_idx_t *ridxp = fat_idx_get_by_pos(devmap_handle, FAT_CLST_ROOTPAR, 0);
     1041        fat_idx_t *ridxp = fat_idx_get_by_pos(service_id, FAT_CLST_ROOTPAR, 0);
    10421042        if (!ridxp) {
    10431043                free(rfn);
    10441044                free(rootp);
    1045                 (void) block_cache_fini(devmap_handle);
    1046                 block_fini(devmap_handle);
    1047                 fat_idx_fini_by_devmap_handle(devmap_handle);
     1045                (void) block_cache_fini(service_id);
     1046                block_fini(service_id);
     1047                fat_idx_fini_by_service_id(service_id);
    10481048                async_answer_0(rid, ENOMEM);
    10491049                return;
     
    10741074void fat_unmounted(ipc_callid_t rid, ipc_call_t *request)
    10751075{
    1076         devmap_handle_t devmap_handle = (devmap_handle_t) IPC_GET_ARG1(*request);
     1076        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*request);
    10771077        fs_node_t *fn;
    10781078        fat_node_t *nodep;
    10791079        int rc;
    10801080
    1081         rc = fat_root_get(&fn, devmap_handle);
     1081        rc = fat_root_get(&fn, service_id);
    10821082        if (rc != EOK) {
    10831083                async_answer_0(rid, rc);
     
    11071107         * stop using libblock for this instance.
    11081108         */
    1109         (void) fat_node_fini_by_devmap_handle(devmap_handle);
    1110         fat_idx_fini_by_devmap_handle(devmap_handle);
    1111         (void) block_cache_fini(devmap_handle);
    1112         block_fini(devmap_handle);
     1109        (void) fat_node_fini_by_service_id(service_id);
     1110        fat_idx_fini_by_service_id(service_id);
     1111        (void) block_cache_fini(service_id);
     1112        block_fini(service_id);
    11131113
    11141114        async_answer_0(rid, EOK);
     
    11271127void fat_read(ipc_callid_t rid, ipc_call_t *request)
    11281128{
    1129         devmap_handle_t devmap_handle = (devmap_handle_t) IPC_GET_ARG1(*request);
     1129        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*request);
    11301130        fs_index_t index = (fs_index_t) IPC_GET_ARG2(*request);
    11311131        aoff64_t pos =
     
    11381138        int rc;
    11391139
    1140         rc = fat_node_get(&fn, devmap_handle, index);
     1140        rc = fat_node_get(&fn, service_id, index);
    11411141        if (rc != EOK) {
    11421142                async_answer_0(rid, rc);
     
    11581158        }
    11591159
    1160         bs = block_bb_get(devmap_handle);
     1160        bs = block_bb_get(service_id);
    11611161
    11621162        if (nodep->type == FAT_FILE) {
     
    12641264void fat_write(ipc_callid_t rid, ipc_call_t *request)
    12651265{
    1266         devmap_handle_t devmap_handle = (devmap_handle_t) IPC_GET_ARG1(*request);
     1266        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*request);
    12671267        fs_index_t index = (fs_index_t) IPC_GET_ARG2(*request);
    12681268        aoff64_t pos =
     
    12771277        int rc;
    12781278       
    1279         rc = fat_node_get(&fn, devmap_handle, index);
     1279        rc = fat_node_get(&fn, service_id, index);
    12801280        if (rc != EOK) {
    12811281                async_answer_0(rid, rc);
     
    12971297        }
    12981298
    1299         bs = block_bb_get(devmap_handle);
     1299        bs = block_bb_get(service_id);
    13001300
    13011301        /*
     
    13591359                nclsts = (ROUND_UP(pos + bytes, BPC(bs)) - boundary) / BPC(bs);
    13601360                /* create an independent chain of nclsts clusters in all FATs */
    1361                 rc = fat_alloc_clusters(bs, devmap_handle, nclsts, &mcl, &lcl);
     1361                rc = fat_alloc_clusters(bs, service_id, nclsts, &mcl, &lcl);
    13621362                if (rc != EOK) {
    13631363                        /* could not allocate a chain of nclsts clusters */
     
    13701370                rc = fat_fill_gap(bs, nodep, mcl, pos);
    13711371                if (rc != EOK) {
    1372                         (void) fat_free_clusters(bs, devmap_handle, mcl);
     1372                        (void) fat_free_clusters(bs, service_id, mcl);
    13731373                        (void) fat_node_put(fn);
    13741374                        async_answer_0(callid, rc);
     
    13761376                        return;
    13771377                }
    1378                 rc = _fat_block_get(&b, bs, devmap_handle, lcl, NULL,
     1378                rc = _fat_block_get(&b, bs, service_id, lcl, NULL,
    13791379                    (pos / BPS(bs)) % SPC(bs), flags);
    13801380                if (rc != EOK) {
    1381                         (void) fat_free_clusters(bs, devmap_handle, mcl);
     1381                        (void) fat_free_clusters(bs, service_id, mcl);
    13821382                        (void) fat_node_put(fn);
    13831383                        async_answer_0(callid, rc);
     
    13901390                rc = block_put(b);
    13911391                if (rc != EOK) {
    1392                         (void) fat_free_clusters(bs, devmap_handle, mcl);
     1392                        (void) fat_free_clusters(bs, service_id, mcl);
    13931393                        (void) fat_node_put(fn);
    13941394                        async_answer_0(rid, rc);
     
    14011401                rc = fat_append_clusters(bs, nodep, mcl, lcl);
    14021402                if (rc != EOK) {
    1403                         (void) fat_free_clusters(bs, devmap_handle, mcl);
     1403                        (void) fat_free_clusters(bs, service_id, mcl);
    14041404                        (void) fat_node_put(fn);
    14051405                        async_answer_0(rid, rc);
     
    14161416void fat_truncate(ipc_callid_t rid, ipc_call_t *request)
    14171417{
    1418         devmap_handle_t devmap_handle = (devmap_handle_t) IPC_GET_ARG1(*request);
     1418        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*request);
    14191419        fs_index_t index = (fs_index_t) IPC_GET_ARG2(*request);
    14201420        aoff64_t size =
     
    14251425        int rc;
    14261426
    1427         rc = fat_node_get(&fn, devmap_handle, index);
     1427        rc = fat_node_get(&fn, service_id, index);
    14281428        if (rc != EOK) {
    14291429                async_answer_0(rid, rc);
     
    14361436        nodep = FAT_NODE(fn);
    14371437
    1438         bs = block_bb_get(devmap_handle);
     1438        bs = block_bb_get(service_id);
    14391439
    14401440        if (nodep->size == size) {
     
    14631463                } else {
    14641464                        fat_cluster_t lastc;
    1465                         rc = fat_cluster_walk(bs, devmap_handle, nodep->firstc,
     1465                        rc = fat_cluster_walk(bs, service_id, nodep->firstc,
    14661466                            &lastc, NULL, (size - 1) / BPC(bs));
    14671467                        if (rc != EOK)
     
    14881488void fat_destroy(ipc_callid_t rid, ipc_call_t *request)
    14891489{
    1490         devmap_handle_t devmap_handle = (devmap_handle_t)IPC_GET_ARG1(*request);
     1490        service_id_t service_id = (service_id_t)IPC_GET_ARG1(*request);
    14911491        fs_index_t index = (fs_index_t)IPC_GET_ARG2(*request);
    14921492        fs_node_t *fn;
     
    14941494        int rc;
    14951495
    1496         rc = fat_node_get(&fn, devmap_handle, index);
     1496        rc = fat_node_get(&fn, service_id, index);
    14971497        if (rc != EOK) {
    14981498                async_answer_0(rid, rc);
     
    15271527void fat_sync(ipc_callid_t rid, ipc_call_t *request)
    15281528{
    1529         devmap_handle_t devmap_handle = (devmap_handle_t) IPC_GET_ARG1(*request);
     1529        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*request);
    15301530        fs_index_t index = (fs_index_t) IPC_GET_ARG2(*request);
    15311531       
    15321532        fs_node_t *fn;
    1533         int rc = fat_node_get(&fn, devmap_handle, index);
     1533        int rc = fat_node_get(&fn, service_id, index);
    15341534        if (rc != EOK) {
    15351535                async_answer_0(rid, rc);
Note: See TracChangeset for help on using the changeset viewer.