Changeset 83937ccd in mainline for uspace/srv
- Timestamp:
- 2009-05-19T21:49:05Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 854c564
- Parents:
- 27fd651
- Location:
- uspace/srv
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/fs/fat/fat_ops.c
r27fd651 r83937ccd 150 150 } 151 151 fat_node_initialize(nodep); 152 fs_node_initialize(fn); 152 153 fn->data = nodep; 153 154 nodep->bp = fn; … … 848 849 return; 849 850 } 851 fs_node_initialize(rfn); 850 852 fat_node_t *rootp = (fat_node_t *)malloc(sizeof(fat_node_t)); 851 853 if (!rootp) { … … 887 889 void fat_mount(ipc_callid_t rid, ipc_call_t *request) 888 890 { 889 ipc_answer_0(rid, ENOTSUP);891 libfs_mount(&fat_libfs_ops, rid, request); 890 892 } 891 893 -
uspace/srv/fs/tmpfs/tmpfs_ops.c
r27fd651 r83937ccd 251 251 return NULL; 252 252 } 253 fs_node_initialize(nodep->bp); 253 254 nodep->bp->data = nodep; /* link the FS and TMPFS nodes */ 254 255 if (!tmpfs_root_get(dev_handle)) -
uspace/srv/vfs/vfs_ops.c
r27fd651 r83937ccd 85 85 { 86 86 vfs_lookup_res_t mp_res; 87 vfs_lookup_res_t mr_res; 87 88 vfs_node_t *mp_node = NULL; 89 vfs_node_t *mr_node; 90 fs_index_t rindex; 91 size_t rsize; 92 unsigned rlnkcnt; 88 93 ipcarg_t rc; 89 94 int phone; 90 95 aid_t msg; 91 96 ipc_call_t answer; 97 92 98 93 99 /* Resolve the path to the mountpoint. */ … … 130 136 /* We still don't have the root file system mounted. */ 131 137 if (str_cmp(mp, "/") == 0) { 132 vfs_lookup_res_t mr_res;133 vfs_node_t *mr_node;134 fs_index_t rindex;135 size_t rsize;136 unsigned rlnkcnt;137 138 138 /* 139 139 * For this simple, but important case, … … 202 202 */ 203 203 204 int mountee_phone = vfs_grab_phone(fs_handle); 205 assert(mountee_phone >= 0); 206 vfs_release_phone(mountee_phone); 207 204 208 phone = vfs_grab_phone(mp_res.triplet.fs_handle); 205 209 msg = async_send_4(phone, VFS_MOUNT, … … 208 212 (ipcarg_t) fs_handle, 209 213 (ipcarg_t) dev_handle, &answer); 214 215 /* send connection */ 216 rc = async_req_1_0(phone, IPC_M_CONNECTION_CLONE, mountee_phone); 217 if (rc != EOK) { 218 async_wait_for(msg, NULL); 219 vfs_release_phone(phone); 220 /* Mount failed, drop reference to mp_node. */ 221 if (mp_node) 222 vfs_node_put(mp_node); 223 ipc_answer_0(rid, rc); 224 return; 225 } 226 210 227 /* send the mount options */ 211 228 rc = ipc_data_write_start(phone, (void *)opts, str_size(opts)); … … 228 245 } 229 246 247 rindex = (fs_index_t) IPC_GET_ARG1(answer); 248 rsize = (size_t) IPC_GET_ARG2(answer); 249 rlnkcnt = (unsigned) IPC_GET_ARG3(answer); 250 251 mr_res.triplet.fs_handle = fs_handle; 252 mr_res.triplet.dev_handle = dev_handle; 253 mr_res.triplet.index = rindex; 254 mr_res.size = rsize; 255 mr_res.lnkcnt = rlnkcnt; 256 mr_res.type = VFS_NODE_DIRECTORY; 257 258 /* Add reference to the mounted root. */ 259 mr_node = vfs_node_get(&mr_res); 260 assert(mr_node); 261 230 262 ipc_answer_0(rid, rc); 231 263 }
Note:
See TracChangeset
for help on using the changeset viewer.