Changeset ce8c848 in mainline for uspace/srv


Ignore:
Timestamp:
2010-01-25T22:26:16Z (15 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
bb0d3d24
Parents:
64af8f1 (diff), c888102 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge progress on the unmount feature.

Location:
uspace/srv
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/devfs/devfs.c

    r64af8f1 rce8c848  
    7575                        devfs_mount(callid, &call);
    7676                        break;
     77                case VFS_OUT_UNMOUNTED:
     78                        devfs_unmounted(callid, &call);
     79                        break;
     80                case VFS_OUT_UNMOUNT:
     81                        devfs_unmount(callid, &call);
     82                        break;
    7783                case VFS_OUT_LOOKUP:
    7884                        devfs_lookup(callid, &call);
  • uspace/srv/fs/devfs/devfs_ops.c

    r64af8f1 rce8c848  
    434434}
    435435
     436void devfs_unmounted(ipc_callid_t rid, ipc_call_t *request)
     437{
     438        ipc_answer_0(rid, ENOTSUP);
     439}
     440
     441void devfs_unmount(ipc_callid_t rid, ipc_call_t *request)
     442{
     443        libfs_unmount(&devfs_libfs_ops, rid, request);
     444}
     445
    436446void devfs_lookup(ipc_callid_t rid, ipc_call_t *request)
    437447{
  • uspace/srv/fs/devfs/devfs_ops.h

    r64af8f1 rce8c848  
    4141extern void devfs_mounted(ipc_callid_t, ipc_call_t *);
    4242extern void devfs_mount(ipc_callid_t, ipc_call_t *);
     43extern void devfs_unmounted(ipc_callid_t, ipc_call_t *);
     44extern void devfs_unmount(ipc_callid_t, ipc_call_t *);
    4345extern void devfs_lookup(ipc_callid_t, ipc_call_t *);
    4446extern void devfs_open_node(ipc_callid_t, ipc_call_t *);
  • uspace/srv/fs/fat/fat.c

    r64af8f1 rce8c848  
    100100                        fat_mount(callid, &call);
    101101                        break;
     102                case VFS_OUT_UNMOUNTED:
     103                        fat_unmounted(callid, &call);
     104                        break;
     105                case VFS_OUT_UNMOUNT:
     106                        fat_unmount(callid, &call);
     107                        break;
    102108                case VFS_OUT_LOOKUP:
    103109                        fat_lookup(callid, &call);
  • uspace/srv/fs/fat/fat.h

    r64af8f1 rce8c848  
    204204extern void fat_mounted(ipc_callid_t, ipc_call_t *);
    205205extern void fat_mount(ipc_callid_t, ipc_call_t *);
     206extern void fat_unmounted(ipc_callid_t, ipc_call_t *);
     207extern void fat_unmount(ipc_callid_t, ipc_call_t *);
    206208extern void fat_lookup(ipc_callid_t, ipc_call_t *);
    207209extern void fat_read(ipc_callid_t, ipc_call_t *);
  • uspace/srv/fs/fat/fat_ops.c

    r64af8f1 rce8c848  
    11171117}
    11181118
     1119void fat_unmounted(ipc_callid_t rid, ipc_call_t *request)
     1120{
     1121        ipc_answer_0(rid, ENOTSUP);
     1122}
     1123
     1124void fat_unmount(ipc_callid_t rid, ipc_call_t *request)
     1125{
     1126        libfs_unmount(&fat_libfs_ops, rid, request);
     1127}
     1128
    11191129void fat_lookup(ipc_callid_t rid, ipc_call_t *request)
    11201130{
  • uspace/srv/fs/tmpfs/tmpfs.c

    r64af8f1 rce8c848  
    106106                        tmpfs_mount(callid, &call);
    107107                        break;
     108                case VFS_OUT_UNMOUNTED:
     109                        tmpfs_unmounted(callid, &call);
     110                        break;
     111                case VFS_OUT_UNMOUNT:
     112                        tmpfs_unmount(callid, &call);
     113                        break;
    108114                case VFS_OUT_LOOKUP:
    109115                        tmpfs_lookup(callid, &call);
  • uspace/srv/fs/tmpfs/tmpfs.h

    r64af8f1 rce8c848  
    8383extern void tmpfs_mounted(ipc_callid_t, ipc_call_t *);
    8484extern void tmpfs_mount(ipc_callid_t, ipc_call_t *);
     85extern void tmpfs_unmounted(ipc_callid_t, ipc_call_t *);
     86extern void tmpfs_unmount(ipc_callid_t, ipc_call_t *);
    8587extern void tmpfs_lookup(ipc_callid_t, ipc_call_t *);
    8688extern void tmpfs_read(ipc_callid_t, ipc_call_t *);
  • uspace/srv/fs/tmpfs/tmpfs_ops.c

    r64af8f1 rce8c848  
    449449}
    450450
     451void tmpfs_unmounted(ipc_callid_t rid, ipc_call_t *request)
     452{
     453        ipc_answer_0(rid, ENOTSUP);
     454}
     455
     456void tmpfs_unmount(ipc_callid_t rid, ipc_call_t *request)
     457{
     458        libfs_unmount(&tmpfs_libfs_ops, rid, request);
     459}
     460
    451461void tmpfs_lookup(ipc_callid_t rid, ipc_call_t *request)
    452462{
  • uspace/srv/vfs/vfs_ops.c

    r64af8f1 rce8c848  
    9292                }
    9393               
    94                 rc = vfs_lookup_internal(mp, L_DIRECTORY, &mp_res, NULL);
     94                rc = vfs_lookup_internal(mp, L_MP, &mp_res, NULL);
    9595                if (rc != EOK) {
    9696                        /* The lookup failed for some reason. */
     
    459459         * Lookup the mounted root and instantiate it.
    460460         */
    461         rc = vfs_lookup_internal(mp, L_NONE, &mr_res, NULL);
     461        rc = vfs_lookup_internal(mp, L_ROOT, &mr_res, NULL);
    462462        if (rc != EOK) {
    463463                fibril_rwlock_write_unlock(&namespace_rwlock);
     
    521521                 */
    522522
    523                 /*
    524                  * The L_NOCROSS_LAST_MP flag is essential if we really want to
    525                  * lookup the mount point and not the mounted root.
    526                  */
    527                 rc = vfs_lookup_internal(mp, L_NOCROSS_LAST_MP, &mp_res, NULL);
     523                rc = vfs_lookup_internal(mp, L_MP, &mp_res, NULL);
    528524                free(mp);
    529525                if (rc != EOK) {
     
    542538
    543539                phone = vfs_grab_phone(mp_node->fs_handle);
    544                 rc = async_req_2_0(phone, VFS_OUT_UNMOUNT, mp_node->fs_handle,
    545                     mp_node->dev_handle);
     540                rc = async_req_2_0(phone, VFS_OUT_UNMOUNT, mp_node->dev_handle,
     541                    mp_node->index);
    546542                vfs_release_phone(phone);
    547543                if (rc != EOK) {
     
    595591        /*
    596592         * Make sure that we are called with exactly one of L_FILE and
    597          * L_DIRECTORY. Make sure that the user does not pass L_OPEN or
    598          * L_NOCROSS_LAST_MP.
     593         * L_DIRECTORY. Make sure that the user does not pass L_OPEN,
     594         * L_ROOT or L_MP.
    599595         */
    600596        if (((lflag & (L_FILE | L_DIRECTORY)) == 0) ||
    601597            ((lflag & (L_FILE | L_DIRECTORY)) == (L_FILE | L_DIRECTORY)) ||
    602             (lflag & L_OPEN) || (lflag & L_NOCROSS_LAST_MP)) {
     598            (lflag & (L_OPEN | L_ROOT | L_MP))) {
    603599                ipc_answer_0(rid, EINVAL);
    604600                return;
Note: See TracChangeset for help on using the changeset viewer.