Changeset c888102 in mainline
- Timestamp:
- 2010-01-25T22:25:17Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4557462, ce8c848
- Parents:
- 3c11713
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/libfs/libfs.c
r3c11713 rc888102 228 228 void libfs_unmount(libfs_ops_t *ops, ipc_callid_t rid, ipc_call_t *request) 229 229 { 230 ipc_answer_0(rid, ENOTSUP); 230 dev_handle_t mp_dev_handle = (dev_handle_t) IPC_GET_ARG1(*request); 231 fs_index_t mp_fs_index = (fs_index_t) IPC_GET_ARG2(*request); 232 fs_node_t *fn; 233 int res; 234 235 res = ops->node_get(&fn, mp_dev_handle, mp_fs_index); 236 if ((res != EOK) || (!fn)) { 237 ipc_answer_0(rid, combine_rc(res, ENOENT)); 238 return; 239 } 240 241 /* 242 * We are clearly expecting to find the mount point active. 243 */ 244 if (!fn->mp_data.mp_active) { 245 (void) ops->node_put(fn); 246 ipc_answer_0(rid, EINVAL); 247 return; 248 } 249 250 /* 251 * Tell the mounted file system to unmount. 252 */ 253 res = async_req_1_0(fn->mp_data.phone, VFS_OUT_UNMOUNTED, 254 fn->mp_data.dev_handle); 255 256 /* 257 * If everything went well, perform the clean-up on our side. 258 */ 259 if (res == EOK) { 260 ipc_hangup(fn->mp_data.phone); 261 fn->mp_data.mp_active = false; 262 fn->mp_data.fs_handle = 0; 263 fn->mp_data.dev_handle = 0; 264 fn->mp_data.phone = 0; 265 /* Drop the reference created in libfs_mount(). */ 266 (void) ops->node_put(fn); 267 } 268 269 (void) ops->node_put(fn); 270 ipc_answer_0(rid, res); 231 271 } 232 272
Note:
See TracChangeset
for help on using the changeset viewer.