Changeset a737667e in mainline for uspace/srv/vfs/vfs_ops.c
- Timestamp:
- 2017-03-08T09:56:06Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5126f80
- Parents:
- bb9ec2d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/vfs/vfs_ops.c
rbb9ec2d ra737667e 1317 1317 void vfs_statfs(ipc_callid_t rid, ipc_call_t *request) 1318 1318 { 1319 char *path; 1320 int rc = async_data_write_accept((void **) &path, true, 0, 0, 0, NULL); 1321 if (rc != EOK) { 1322 async_answer_0(rid, rc); 1323 return; 1324 } 1319 int fd = IPC_GET_ARG1(*request); 1325 1320 1326 1321 ipc_callid_t callid; 1327 1322 if (!async_data_read_receive(&callid, NULL)) { 1328 free(path);1329 1323 async_answer_0(callid, EINVAL); 1330 1324 async_answer_0(rid, EINVAL); … … 1332 1326 } 1333 1327 1334 vfs_lookup_res_t lr; 1335 fibril_rwlock_read_lock(&namespace_rwlock); 1336 rc = vfs_lookup_internal(root, path, L_NONE, &lr); 1337 free(path); 1338 if (rc != EOK) { 1339 fibril_rwlock_read_unlock(&namespace_rwlock); 1340 async_answer_0(callid, rc); 1341 async_answer_0(rid, rc); 1342 return; 1343 } 1344 vfs_node_t *node = vfs_node_get(&lr); 1345 if (!node) { 1346 fibril_rwlock_read_unlock(&namespace_rwlock); 1347 async_answer_0(callid, ENOMEM); 1348 async_answer_0(rid, ENOMEM); 1349 return; 1350 } 1351 1352 fibril_rwlock_read_unlock(&namespace_rwlock); 1328 vfs_file_t *file = vfs_file_get(fd); 1329 if (!file) { 1330 async_answer_0(callid, EBADF); 1331 async_answer_0(rid, EBADF); 1332 } 1333 1334 vfs_node_t *node = file->node; 1353 1335 1354 1336 async_exch_t *exch = vfs_exchange_grab(node->fs_handle); … … 1364 1346 async_wait_for(msg, &rv); 1365 1347 1348 vfs_file_put(file); 1349 1366 1350 async_answer_0(rid, rv); 1367 1368 vfs_node_put(node);1369 1351 } 1370 1352
Note:
See TracChangeset
for help on using the changeset viewer.