Changes in uspace/srv/vfs/vfs_ops.c [feeac0d:6f2c1ff] in mainline
- File:
-
- 1 edited
-
uspace/srv/vfs/vfs_ops.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/vfs/vfs_ops.c
rfeeac0d r6f2c1ff 266 266 } 267 267 268 void vfs_mount (ipc_callid_t rid, ipc_call_t *request)268 void vfs_mount_srv(ipc_callid_t rid, ipc_call_t *request) 269 269 { 270 270 service_id_t service_id; … … 405 405 } 406 406 407 void vfs_unmount (ipc_callid_t rid, ipc_call_t *request)407 void vfs_unmount_srv(ipc_callid_t rid, ipc_call_t *request) 408 408 { 409 409 int rc; … … 637 637 else 638 638 fibril_rwlock_read_unlock(&namespace_rwlock); 639 640 if (!node) { 641 async_answer_0(rid, ENOMEM); 642 return; 643 } 639 644 640 645 /* Truncate the file if requested and if necessary. */ … … 1412 1417 } 1413 1418 1419 void vfs_statfs(ipc_callid_t rid, ipc_call_t *request) 1420 { 1421 char *path; 1422 int rc = async_data_write_accept((void **) &path, true, 0, 0, 0, NULL); 1423 if (rc != EOK) { 1424 async_answer_0(rid, rc); 1425 return; 1426 } 1427 1428 ipc_callid_t callid; 1429 if (!async_data_read_receive(&callid, NULL)) { 1430 free(path); 1431 async_answer_0(callid, EINVAL); 1432 async_answer_0(rid, EINVAL); 1433 return; 1434 } 1435 1436 vfs_lookup_res_t lr; 1437 fibril_rwlock_read_lock(&namespace_rwlock); 1438 rc = vfs_lookup_internal(path, L_NONE, &lr, NULL); 1439 free(path); 1440 if (rc != EOK) { 1441 fibril_rwlock_read_unlock(&namespace_rwlock); 1442 async_answer_0(callid, rc); 1443 async_answer_0(rid, rc); 1444 return; 1445 } 1446 vfs_node_t *node = vfs_node_get(&lr); 1447 if (!node) { 1448 fibril_rwlock_read_unlock(&namespace_rwlock); 1449 async_answer_0(callid, ENOMEM); 1450 async_answer_0(rid, ENOMEM); 1451 return; 1452 } 1453 1454 fibril_rwlock_read_unlock(&namespace_rwlock); 1455 1456 async_exch_t *exch = vfs_exchange_grab(node->fs_handle); 1457 1458 aid_t msg; 1459 msg = async_send_3(exch, VFS_OUT_STATFS, node->service_id, 1460 node->index, false, NULL); 1461 async_forward_fast(callid, exch, 0, 0, 0, IPC_FF_ROUTE_FROM_ME); 1462 1463 vfs_exchange_release(exch); 1464 1465 sysarg_t rv; 1466 async_wait_for(msg, &rv); 1467 1468 async_answer_0(rid, rv); 1469 1470 vfs_node_put(node); 1471 } 1472 1414 1473 /** 1415 1474 * @}
Note:
See TracChangeset
for help on using the changeset viewer.
