Changes in uspace/lib/ext4/src/ops.c [b7fd2a0:38d150e] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ext4/src/ops.c
rb7fd2a0 r38d150e 58 58 /* Forward declarations of auxiliary functions */ 59 59 60 static errno_t ext4_read_directory(ipc_callid_t, aoff64_t, size_t,60 static int ext4_read_directory(ipc_callid_t, aoff64_t, size_t, 61 61 ext4_instance_t *, ext4_inode_ref_t *, size_t *); 62 static errno_t ext4_read_file(ipc_callid_t, aoff64_t, size_t, ext4_instance_t *,62 static int ext4_read_file(ipc_callid_t, aoff64_t, size_t, ext4_instance_t *, 63 63 ext4_inode_ref_t *, size_t *); 64 64 static bool ext4_is_dots(const uint8_t *, size_t); 65 static errno_t ext4_instance_get(service_id_t, ext4_instance_t **);65 static int ext4_instance_get(service_id_t, ext4_instance_t **); 66 66 67 67 /* Forward declarations of ext4 libfs operations. */ 68 68 69 static errno_t ext4_root_get(fs_node_t **, service_id_t);70 static errno_t ext4_match(fs_node_t **, fs_node_t *, const char *);71 static errno_t ext4_node_get(fs_node_t **, service_id_t, fs_index_t);72 static errno_t ext4_node_open(fs_node_t *);73 errno_t ext4_node_put(fs_node_t *);74 static errno_t ext4_create_node(fs_node_t **, service_id_t, int);75 static errno_t ext4_destroy_node(fs_node_t *);76 static errno_t ext4_link(fs_node_t *, fs_node_t *, const char *);77 static errno_t ext4_unlink(fs_node_t *, fs_node_t *, const char *);78 static errno_t ext4_has_children(bool *, fs_node_t *);69 static int ext4_root_get(fs_node_t **, service_id_t); 70 static int ext4_match(fs_node_t **, fs_node_t *, const char *); 71 static int ext4_node_get(fs_node_t **, service_id_t, fs_index_t); 72 static int ext4_node_open(fs_node_t *); 73 int ext4_node_put(fs_node_t *); 74 static int ext4_create_node(fs_node_t **, service_id_t, int); 75 static int ext4_destroy_node(fs_node_t *); 76 static int ext4_link(fs_node_t *, fs_node_t *, const char *); 77 static int ext4_unlink(fs_node_t *, fs_node_t *, const char *); 78 static int ext4_has_children(bool *, fs_node_t *); 79 79 static fs_index_t ext4_index_get(fs_node_t *); 80 80 static aoff64_t ext4_size_get(fs_node_t *); … … 83 83 static bool ext4_is_file(fs_node_t *node); 84 84 static service_id_t ext4_service_get(fs_node_t *node); 85 static errno_t ext4_size_block(service_id_t, uint32_t *);86 static errno_t ext4_total_block_count(service_id_t, uint64_t *);87 static errno_t ext4_free_block_count(service_id_t, uint64_t *);85 static int ext4_size_block(service_id_t, uint32_t *); 86 static int ext4_total_block_count(service_id_t, uint64_t *); 87 static int ext4_free_block_count(service_id_t, uint64_t *); 88 88 89 89 /* Static variables */ … … 138 138 * 139 139 */ 140 errno_t ext4_global_init(void)140 int ext4_global_init(void) 141 141 { 142 142 if (!hash_table_create(&open_nodes, 0, 0, &open_nodes_ops)) … … 152 152 * @return Error code 153 153 */ 154 errno_t ext4_global_fini(void)154 int ext4_global_fini(void) 155 155 { 156 156 hash_table_destroy(&open_nodes); … … 170 170 * 171 171 */ 172 errno_t ext4_instance_get(service_id_t service_id, ext4_instance_t **inst)172 int ext4_instance_get(service_id_t service_id, ext4_instance_t **inst) 173 173 { 174 174 fibril_mutex_lock(&instance_list_mutex); … … 199 199 * 200 200 */ 201 errno_t ext4_root_get(fs_node_t **rfn, service_id_t service_id)201 int ext4_root_get(fs_node_t **rfn, service_id_t service_id) 202 202 { 203 203 return ext4_node_get(rfn, service_id, EXT4_INODE_ROOT_INDEX); … … 215 215 * 216 216 */ 217 errno_t ext4_match(fs_node_t **rfn, fs_node_t *pfn, const char *component)217 int ext4_match(fs_node_t **rfn, fs_node_t *pfn, const char *component) 218 218 { 219 219 ext4_node_t *eparent = EXT4_NODE(pfn); … … 226 226 /* Try to find entry */ 227 227 ext4_directory_search_result_t result; 228 errno_t rc = ext4_directory_find_entry(&result, eparent->inode_ref,228 int rc = ext4_directory_find_entry(&result, eparent->inode_ref, 229 229 component); 230 230 if (rc != EOK) { … … 247 247 248 248 /* Destroy search result structure */ 249 errno_t const rc2 = ext4_directory_destroy_result(&result);249 int const rc2 = ext4_directory_destroy_result(&result); 250 250 return rc == EOK ? rc2 : rc; 251 251 } … … 262 262 * 263 263 */ 264 errno_t ext4_node_get(fs_node_t **rfn, service_id_t service_id, fs_index_t index)264 int ext4_node_get(fs_node_t **rfn, service_id_t service_id, fs_index_t index) 265 265 { 266 266 ext4_instance_t *inst; 267 errno_t rc = ext4_instance_get(service_id, &inst);267 int rc = ext4_instance_get(service_id, &inst); 268 268 if (rc != EOK) 269 269 return rc; … … 281 281 * 282 282 */ 283 errno_t ext4_node_get_core(fs_node_t **rfn, ext4_instance_t *inst,283 int ext4_node_get_core(fs_node_t **rfn, ext4_instance_t *inst, 284 284 fs_index_t index) 285 285 { … … 322 322 /* Load i-node from filesystem */ 323 323 ext4_inode_ref_t *inode_ref; 324 errno_t rc = ext4_filesystem_get_inode_ref(inst->filesystem, index,324 int rc = ext4_filesystem_get_inode_ref(inst->filesystem, index, 325 325 &inode_ref); 326 326 if (rc != EOK) { … … 355 355 * 356 356 */ 357 static errno_t ext4_node_put_core(ext4_node_t *enode)357 static int ext4_node_put_core(ext4_node_t *enode) 358 358 { 359 359 hash_table_remove_item(&open_nodes, &enode->link); … … 362 362 363 363 /* Put inode back in filesystem */ 364 errno_t rc = ext4_filesystem_put_inode_ref(enode->inode_ref);364 int rc = ext4_filesystem_put_inode_ref(enode->inode_ref); 365 365 if (rc != EOK) 366 366 return rc; … … 382 382 * 383 383 */ 384 errno_t ext4_node_open(fs_node_t *fn)384 int ext4_node_open(fs_node_t *fn) 385 385 { 386 386 /* Stateless operation */ … … 396 396 * 397 397 */ 398 errno_t ext4_node_put(fs_node_t *fn)398 int ext4_node_put(fs_node_t *fn) 399 399 { 400 400 fibril_mutex_lock(&open_nodes_lock); … … 404 404 enode->references--; 405 405 if (enode->references == 0) { 406 errno_t rc = ext4_node_put_core(enode);406 int rc = ext4_node_put_core(enode); 407 407 if (rc != EOK) { 408 408 fibril_mutex_unlock(&open_nodes_lock); … … 425 425 * 426 426 */ 427 errno_t ext4_create_node(fs_node_t **rfn, service_id_t service_id, int flags)427 int ext4_create_node(fs_node_t **rfn, service_id_t service_id, int flags) 428 428 { 429 429 /* Allocate enode */ … … 443 443 /* Load instance */ 444 444 ext4_instance_t *inst; 445 errno_t rc = ext4_instance_get(service_id, &inst);445 int rc = ext4_instance_get(service_id, &inst); 446 446 if (rc != EOK) { 447 447 free(enode); … … 486 486 * 487 487 */ 488 errno_t ext4_destroy_node(fs_node_t *fn)488 int ext4_destroy_node(fs_node_t *fn) 489 489 { 490 490 /* If directory, check for children */ 491 491 bool has_children; 492 errno_t rc = ext4_has_children(&has_children, fn);492 int rc = ext4_has_children(&has_children, fn); 493 493 if (rc != EOK) { 494 494 ext4_node_put(fn); … … 537 537 * 538 538 */ 539 errno_t ext4_link(fs_node_t *pfn, fs_node_t *cfn, const char *name)539 int ext4_link(fs_node_t *pfn, fs_node_t *cfn, const char *name) 540 540 { 541 541 /* Check maximum name length */ … … 548 548 549 549 /* Add entry to parent directory */ 550 errno_t rc = ext4_directory_add_entry(parent->inode_ref, name,550 int rc = ext4_directory_add_entry(parent->inode_ref, name, 551 551 child->inode_ref); 552 552 if (rc != EOK) … … 610 610 * 611 611 */ 612 errno_t ext4_unlink(fs_node_t *pfn, fs_node_t *cfn, const char *name)612 int ext4_unlink(fs_node_t *pfn, fs_node_t *cfn, const char *name) 613 613 { 614 614 bool has_children; 615 errno_t rc = ext4_has_children(&has_children, cfn);615 int rc = ext4_has_children(&has_children, cfn); 616 616 if (rc != EOK) 617 617 return rc; … … 683 683 * 684 684 */ 685 errno_t ext4_has_children(bool *has_children, fs_node_t *fn)685 int ext4_has_children(bool *has_children, fs_node_t *fn) 686 686 { 687 687 ext4_node_t *enode = EXT4_NODE(fn); … … 696 696 697 697 ext4_directory_iterator_t it; 698 errno_t rc = ext4_directory_iterator_init(&it, enode->inode_ref, 0);698 int rc = ext4_directory_iterator_init(&it, enode->inode_ref, 0); 699 699 if (rc != EOK) 700 700 return rc; … … 824 824 } 825 825 826 errno_t ext4_size_block(service_id_t service_id, uint32_t *size)826 int ext4_size_block(service_id_t service_id, uint32_t *size) 827 827 { 828 828 ext4_instance_t *inst; 829 errno_t rc = ext4_instance_get(service_id, &inst);829 int rc = ext4_instance_get(service_id, &inst); 830 830 if (rc != EOK) 831 831 return rc; … … 840 840 } 841 841 842 errno_t ext4_total_block_count(service_id_t service_id, uint64_t *count)842 int ext4_total_block_count(service_id_t service_id, uint64_t *count) 843 843 { 844 844 ext4_instance_t *inst; 845 errno_t rc = ext4_instance_get(service_id, &inst);845 int rc = ext4_instance_get(service_id, &inst); 846 846 if (rc != EOK) 847 847 return rc; … … 856 856 } 857 857 858 errno_t ext4_free_block_count(service_id_t service_id, uint64_t *count)858 int ext4_free_block_count(service_id_t service_id, uint64_t *count) 859 859 { 860 860 ext4_instance_t *inst; 861 errno_t rc = ext4_instance_get(service_id, &inst);861 int rc = ext4_instance_get(service_id, &inst); 862 862 if (rc != EOK) 863 863 return rc; … … 907 907 * @return Error code 908 908 */ 909 static errno_t ext4_fsprobe(service_id_t service_id, vfs_fs_probe_info_t *info)909 static int ext4_fsprobe(service_id_t service_id, vfs_fs_probe_info_t *info) 910 910 { 911 911 return ext4_filesystem_probe(service_id); … … 924 924 * 925 925 */ 926 static errno_t ext4_mounted(service_id_t service_id, const char *opts,926 static int ext4_mounted(service_id_t service_id, const char *opts, 927 927 fs_index_t *index, aoff64_t *size) 928 928 { … … 948 948 /* Initialize the filesystem */ 949 949 aoff64_t rnsize; 950 errno_t rc = ext4_filesystem_open(inst, service_id, cmode, &rnsize, &fs);950 int rc = ext4_filesystem_open(inst, service_id, cmode, &rnsize, &fs); 951 951 if (rc != EOK) { 952 952 free(inst); … … 974 974 * 975 975 */ 976 static errno_t ext4_unmounted(service_id_t service_id)976 static int ext4_unmounted(service_id_t service_id) 977 977 { 978 978 ext4_instance_t *inst; 979 errno_t rc = ext4_instance_get(service_id, &inst);979 int rc = ext4_instance_get(service_id, &inst); 980 980 if (rc != EOK) 981 981 return rc; … … 1016 1016 * 1017 1017 */ 1018 static errno_t ext4_read(service_id_t service_id, fs_index_t index, aoff64_t pos,1018 static int ext4_read(service_id_t service_id, fs_index_t index, aoff64_t pos, 1019 1019 size_t *rbytes) 1020 1020 { … … 1030 1030 1031 1031 ext4_instance_t *inst; 1032 errno_t rc = ext4_instance_get(service_id, &inst);1032 int rc = ext4_instance_get(service_id, &inst); 1033 1033 if (rc != EOK) { 1034 1034 async_answer_0(callid, rc); … … 1059 1059 } 1060 1060 1061 errno_t const rc2 = ext4_filesystem_put_inode_ref(inode_ref);1061 int const rc2 = ext4_filesystem_put_inode_ref(inode_ref); 1062 1062 1063 1063 return rc == EOK ? rc2 : rc; … … 1095 1095 * 1096 1096 */ 1097 errno_t ext4_read_directory(ipc_callid_t callid, aoff64_t pos, size_t size,1097 int ext4_read_directory(ipc_callid_t callid, aoff64_t pos, size_t size, 1098 1098 ext4_instance_t *inst, ext4_inode_ref_t *inode_ref, size_t *rbytes) 1099 1099 { 1100 1100 ext4_directory_iterator_t it; 1101 errno_t rc = ext4_directory_iterator_init(&it, inode_ref, pos);1101 int rc = ext4_directory_iterator_init(&it, inode_ref, pos); 1102 1102 if (rc != EOK) { 1103 1103 async_answer_0(callid, rc); … … 1186 1186 * 1187 1187 */ 1188 errno_t ext4_read_file(ipc_callid_t callid, aoff64_t pos, size_t size,1188 int ext4_read_file(ipc_callid_t callid, aoff64_t pos, size_t size, 1189 1189 ext4_instance_t *inst, ext4_inode_ref_t *inode_ref, size_t *rbytes) 1190 1190 { … … 1211 1211 /* Get the real block number */ 1212 1212 uint32_t fs_block; 1213 errno_t rc = ext4_filesystem_get_inode_data_block_index(inode_ref,1213 int rc = ext4_filesystem_get_inode_data_block_index(inode_ref, 1214 1214 file_block, &fs_block); 1215 1215 if (rc != EOK) { … … 1275 1275 * 1276 1276 */ 1277 static errno_t ext4_write(service_id_t service_id, fs_index_t index, aoff64_t pos,1277 static int ext4_write(service_id_t service_id, fs_index_t index, aoff64_t pos, 1278 1278 size_t *wbytes, aoff64_t *nsize) 1279 1279 { 1280 1280 fs_node_t *fn; 1281 errno_t rc = ext4_node_get(&fn, service_id, index);1281 int rc = ext4_node_get(&fn, service_id, index); 1282 1282 if (rc != EOK) 1283 1283 return rc; … … 1397 1397 ; 1398 1398 1399 errno_t const rc2 = ext4_node_put(fn);1399 int const rc2 = ext4_node_put(fn); 1400 1400 return rc == EOK ? rc2 : rc; 1401 1401 } … … 1412 1412 * 1413 1413 */ 1414 static errno_t ext4_truncate(service_id_t service_id, fs_index_t index,1414 static int ext4_truncate(service_id_t service_id, fs_index_t index, 1415 1415 aoff64_t new_size) 1416 1416 { 1417 1417 fs_node_t *fn; 1418 errno_t rc = ext4_node_get(&fn, service_id, index);1418 int rc = ext4_node_get(&fn, service_id, index); 1419 1419 if (rc != EOK) 1420 1420 return rc; … … 1424 1424 1425 1425 rc = ext4_filesystem_truncate_inode(inode_ref, new_size); 1426 errno_t const rc2 = ext4_node_put(fn);1426 int const rc2 = ext4_node_put(fn); 1427 1427 1428 1428 return rc == EOK ? rc2 : rc; … … 1437 1437 * 1438 1438 */ 1439 static errno_t ext4_close(service_id_t service_id, fs_index_t index)1439 static int ext4_close(service_id_t service_id, fs_index_t index) 1440 1440 { 1441 1441 return EOK; … … 1450 1450 * 1451 1451 */ 1452 static errno_t ext4_destroy(service_id_t service_id, fs_index_t index)1452 static int ext4_destroy(service_id_t service_id, fs_index_t index) 1453 1453 { 1454 1454 fs_node_t *fn; 1455 errno_t rc = ext4_node_get(&fn, service_id, index);1455 int rc = ext4_node_get(&fn, service_id, index); 1456 1456 if (rc != EOK) 1457 1457 return rc; … … 1467 1467 * 1468 1468 */ 1469 static errno_t ext4_sync(service_id_t service_id, fs_index_t index)1469 static int ext4_sync(service_id_t service_id, fs_index_t index) 1470 1470 { 1471 1471 fs_node_t *fn; 1472 errno_t rc = ext4_node_get(&fn, service_id, index);1472 int rc = ext4_node_get(&fn, service_id, index); 1473 1473 if (rc != EOK) 1474 1474 return rc;
Note:
See TracChangeset
for help on using the changeset viewer.