Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/vfs/vfs_ops.c

    r5bb9907 r15f3c3f  
    5454
    5555/* Forward declarations of static functions. */
    56 static int vfs_truncate_internal(fs_handle_t, devmap_handle_t, fs_index_t,
     56static int vfs_truncate_internal(fs_handle_t, service_id_t, fs_index_t,
    5757    aoff64_t);
    5858
     
    6565vfs_pair_t rootfs = {
    6666        .fs_handle = 0,
    67         .devmap_handle = 0
     67        .service_id = 0
    6868};
    6969
    70 static void vfs_mount_internal(ipc_callid_t rid, devmap_handle_t devmap_handle,
     70static void vfs_mount_internal(ipc_callid_t rid, service_id_t service_id,
    7171    fs_handle_t fs_handle, char *mp, char *opts)
    7272{
     
    7676        vfs_node_t *mr_node;
    7777        fs_index_t rindex;
    78         aoff64_t rsize;
     78        size_t rsize;
    7979        unsigned rlnkcnt;
    8080        async_exch_t *exch;
     
    125125                        exch = vfs_exchange_grab(fs_handle);
    126126                        msg = async_send_1(exch, VFS_OUT_MOUNTED,
    127                             (sysarg_t) devmap_handle, &answer);
     127                            (sysarg_t) service_id, &answer);
    128128                        /* Send the mount options */
    129129                        rc = async_data_write_start(exch, (void *)opts,
     
    146146
    147147                        rindex = (fs_index_t) IPC_GET_ARG1(answer);
    148                         rsize = (aoff64_t) MERGE_LOUP32(IPC_GET_ARG2(answer), IPC_GET_ARG3(answer));
    149                         rlnkcnt = (unsigned) IPC_GET_ARG4(answer);
     148                        rsize = (size_t) IPC_GET_ARG2(answer);
     149                        rlnkcnt = (unsigned) IPC_GET_ARG3(answer);
    150150                       
    151151                        mr_res.triplet.fs_handle = fs_handle;
    152                         mr_res.triplet.devmap_handle = devmap_handle;
     152                        mr_res.triplet.service_id = service_id;
    153153                        mr_res.triplet.index = rindex;
    154154                        mr_res.size = rsize;
     
    157157                       
    158158                        rootfs.fs_handle = fs_handle;
    159                         rootfs.devmap_handle = devmap_handle;
     159                        rootfs.service_id = service_id;
    160160                       
    161161                        /* Add reference to the mounted root. */
     
    178178       
    179179        /*
    180          * At this point, we have all necessary pieces: file system and device
    181          * handles, and we know the mount point VFS node.
     180         * At this point, we have all necessary pieces: file system handle
     181         * and service ID, and we know the mount point VFS node.
    182182         */
    183183       
     
    187187        exch = vfs_exchange_grab(mp_res.triplet.fs_handle);
    188188        msg = async_send_4(exch, VFS_OUT_MOUNT,
    189             (sysarg_t) mp_res.triplet.devmap_handle,
     189            (sysarg_t) mp_res.triplet.service_id,
    190190            (sysarg_t) mp_res.triplet.index,
    191191            (sysarg_t) fs_handle,
    192             (sysarg_t) devmap_handle, &answer);
     192            (sysarg_t) service_id, &answer);
    193193       
    194194        /* Send connection */
     
    229229        if (rc == EOK) {
    230230                rindex = (fs_index_t) IPC_GET_ARG1(answer);
    231                 rsize = (aoff64_t) MERGE_LOUP32(IPC_GET_ARG2(answer),
    232                     IPC_GET_ARG3(answer));
    233                 rlnkcnt = (unsigned) IPC_GET_ARG4(answer);
     231                rsize = (size_t) IPC_GET_ARG2(answer);
     232                rlnkcnt = (unsigned) IPC_GET_ARG3(answer);
    234233               
    235234                mr_res.triplet.fs_handle = fs_handle;
    236                 mr_res.triplet.devmap_handle = devmap_handle;
     235                mr_res.triplet.service_id = service_id;
    237236                mr_res.triplet.index = rindex;
    238237                mr_res.size = rsize;
     
    255254void vfs_mount(ipc_callid_t rid, ipc_call_t *request)
    256255{
    257         devmap_handle_t devmap_handle;
     256        service_id_t service_id;
    258257
    259258        /*
     
    262261         * in the request.
    263262         */
    264         devmap_handle = (devmap_handle_t) IPC_GET_ARG1(*request);
     263        service_id = (service_id_t) IPC_GET_ARG1(*request);
    265264       
    266265        /*
     
    350349       
    351350        /* Do the mount */
    352         vfs_mount_internal(rid, devmap_handle, fs_handle, mp, opts);
     351        vfs_mount_internal(rid, service_id, fs_handle, mp, opts);
    353352        free(mp);
    354353        free(fs_name);
     
    409408         */
    410409        if (vfs_nodes_refcount_sum_get(mr_node->fs_handle,
    411             mr_node->devmap_handle) != 2) {
     410            mr_node->service_id) != 2) {
    412411                fibril_rwlock_write_unlock(&namespace_rwlock);
    413412                vfs_node_put(mr_node);
     
    430429                exch = vfs_exchange_grab(mr_node->fs_handle);
    431430                rc = async_req_1_0(exch, VFS_OUT_UNMOUNTED,
    432                     mr_node->devmap_handle);
     431                    mr_node->service_id);
    433432                vfs_exchange_release(exch);
    434433               
     
    441440               
    442441                rootfs.fs_handle = 0;
    443                 rootfs.devmap_handle = 0;
     442                rootfs.service_id = 0;
    444443        } else {
    445444               
     
    470469                exch = vfs_exchange_grab(mp_node->fs_handle);
    471470                rc = async_req_2_0(exch, VFS_OUT_UNMOUNT,
    472                     mp_node->devmap_handle, mp_node->index);
     471                    mp_node->service_id, mp_node->index);
    473472                vfs_exchange_release(exch);
    474473               
     
    575574                if (node->size) {
    576575                        rc = vfs_truncate_internal(node->fs_handle,
    577                             node->devmap_handle, node->index, 0);
     576                            node->service_id, node->index, 0);
    578577                        if (rc) {
    579578                                fibril_rwlock_write_unlock(&node->contents_rwlock);
     
    628627       
    629628        lr.triplet.fs_handle = IPC_GET_ARG1(*request);
    630         lr.triplet.devmap_handle = IPC_GET_ARG2(*request);
     629        lr.triplet.service_id = IPC_GET_ARG2(*request);
    631630        lr.triplet.index = IPC_GET_ARG3(*request);
    632631        int oflag = IPC_GET_ARG4(*request);
     
    649648                if (node->size) {
    650649                        rc = vfs_truncate_internal(node->fs_handle,
    651                             node->devmap_handle, node->index, 0);
     650                            node->service_id, node->index, 0);
    652651                        if (rc) {
    653652                                fibril_rwlock_write_unlock(&node->contents_rwlock);
     
    712711        aid_t msg;
    713712        ipc_call_t answer;
    714         msg = async_send_2(fs_exch, VFS_OUT_SYNC, file->node->devmap_handle,
     713        msg = async_send_2(fs_exch, VFS_OUT_SYNC, file->node->service_id,
    715714            file->node->index, &answer);
    716715       
     
    796795        ipc_call_t answer;
    797796        if (read) {
    798                 rc = async_data_read_forward_4_1(fs_exch, VFS_OUT_READ,
    799                     file->node->devmap_handle, file->node->index,
    800                     LOWER32(file->pos), UPPER32(file->pos), &answer);
     797                rc = async_data_read_forward_3_1(fs_exch, VFS_OUT_READ,
     798                    file->node->service_id, file->node->index, file->pos,
     799                    &answer);
    801800        } else {
    802801                if (file->append)
    803802                        file->pos = file->node->size;
    804803               
    805                 rc = async_data_write_forward_4_1(fs_exch, VFS_OUT_WRITE,
    806                     file->node->devmap_handle, file->node->index,
    807                     LOWER32(file->pos), UPPER32(file->pos), &answer);
     804                rc = async_data_write_forward_3_1(fs_exch, VFS_OUT_WRITE,
     805                    file->node->service_id, file->node->index, file->pos,
     806                    &answer);
    808807        }
    809808       
     
    822821                /* Update the cached version of node's size. */
    823822                if (rc == EOK)
    824                         file->node->size = MERGE_LOUP32(IPC_GET_ARG2(answer),
    825                             IPC_GET_ARG3(answer));
     823                        file->node->size = IPC_GET_ARG2(answer);
    826824                fibril_rwlock_write_unlock(&file->node->contents_rwlock);
    827825        }
     
    935933}
    936934
    937 int vfs_truncate_internal(fs_handle_t fs_handle, devmap_handle_t devmap_handle,
     935int vfs_truncate_internal(fs_handle_t fs_handle, service_id_t service_id,
    938936    fs_index_t index, aoff64_t size)
    939937{
    940938        async_exch_t *exch = vfs_exchange_grab(fs_handle);
    941939        sysarg_t rc = async_req_4_0(exch, VFS_OUT_TRUNCATE,
    942             (sysarg_t) devmap_handle, (sysarg_t) index, LOWER32(size),
     940            (sysarg_t) service_id, (sysarg_t) index, LOWER32(size),
    943941            UPPER32(size));
    944942        vfs_exchange_release(exch);
     
    963961        fibril_rwlock_write_lock(&file->node->contents_rwlock);
    964962        rc = vfs_truncate_internal(file->node->fs_handle,
    965             file->node->devmap_handle, file->node->index, size);
     963            file->node->service_id, file->node->index, size);
    966964        if (rc == EOK)
    967965                file->node->size = size;
     
    997995       
    998996        aid_t msg;
    999         msg = async_send_3(exch, VFS_OUT_STAT, file->node->devmap_handle,
     997        msg = async_send_3(exch, VFS_OUT_STAT, file->node->service_id,
    1000998            file->node->index, true, NULL);
    1001999        async_forward_fast(callid, exch, 0, 0, 0, IPC_FF_ROUTE_FROM_ME);
     
    10501048       
    10511049        aid_t msg;
    1052         msg = async_send_3(exch, VFS_OUT_STAT, node->devmap_handle,
     1050        msg = async_send_3(exch, VFS_OUT_STAT, node->service_id,
    10531051            node->index, false, NULL);
    10541052        async_forward_fast(callid, exch, 0, 0, 0, IPC_FF_ROUTE_FROM_ME);
     
    12271225        /* Check whether linking to the same file system instance. */
    12281226        if ((old_node->fs_handle != new_par_lr.triplet.fs_handle) ||
    1229             (old_node->devmap_handle != new_par_lr.triplet.devmap_handle)) {
     1227            (old_node->service_id != new_par_lr.triplet.service_id)) {
    12301228                fibril_rwlock_write_unlock(&namespace_rwlock);
    12311229                vfs_node_put(old_node);
Note: See TracChangeset for help on using the changeset viewer.