Changeset e68c834 in mainline for uspace/srv/fs/ext4fs/ext4fs_ops.c
- Timestamp:
- 2011-10-10T06:48:16Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7a68fe5
- Parents:
- 1114173
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/fs/ext4fs/ext4fs_ops.c
r1114173 re68c834 147 147 int ext4fs_global_init(void) 148 148 { 149 EXT4FS_DBG("");150 151 149 if (!hash_table_create(&open_nodes, OPEN_NODES_BUCKETS, 152 150 OPEN_NODES_KEYS, &open_nodes_ops)) { … … 159 157 int ext4fs_global_fini(void) 160 158 { 161 EXT4FS_DBG("");162 163 159 hash_table_destroy(&open_nodes); 164 160 return EOK; … … 172 168 int ext4fs_instance_get(service_id_t service_id, ext4fs_instance_t **inst) 173 169 { 174 EXT4FS_DBG("");175 176 170 ext4fs_instance_t *tmp; 177 171 … … 200 194 int ext4fs_root_get(fs_node_t **rfn, service_id_t service_id) 201 195 { 202 EXT4FS_DBG("");203 204 196 return ext4fs_node_get(rfn, service_id, EXT4_INODE_ROOT_INDEX); 205 197 } … … 208 200 int ext4fs_match(fs_node_t **rfn, fs_node_t *pfn, const char *component) 209 201 { 210 EXT4FS_DBG("");211 212 202 ext4fs_node_t *eparent = EXT4FS_NODE(pfn); 213 203 ext4_filesystem_t *fs; … … 413 403 int ext4fs_create_node(fs_node_t **rfn, service_id_t service_id, int flags) 414 404 { 415 EXT4FS_DBG(" ");405 EXT4FS_DBG("not supported"); 416 406 417 407 // TODO … … 422 412 int ext4fs_destroy_node(fs_node_t *fn) 423 413 { 424 EXT4FS_DBG(" ");414 EXT4FS_DBG("not supported"); 425 415 426 416 // TODO … … 431 421 int ext4fs_link(fs_node_t *pfn, fs_node_t *cfn, const char *name) 432 422 { 433 EXT4FS_DBG(" ");423 EXT4FS_DBG("not supported"); 434 424 435 425 // TODO … … 440 430 int ext4fs_unlink(fs_node_t *pfn, fs_node_t *cfn, const char *nm) 441 431 { 442 EXT4FS_DBG(" ");432 EXT4FS_DBG("not supported"); 443 433 444 434 // TODO … … 449 439 int ext4fs_has_children(bool *has_children, fs_node_t *fn) 450 440 { 451 EXT4FS_DBG(""); 452 453 // TODO 441 ext4fs_node_t *enode = EXT4FS_NODE(fn); 442 ext4_directory_iterator_t it; 443 ext4_filesystem_t *fs; 444 int rc; 445 bool found = false; 446 size_t name_size; 447 448 fs = enode->instance->filesystem; 449 450 if (!ext4_inode_is_type(fs->superblock, enode->inode_ref->inode, 451 EXT4_INODE_MODE_DIRECTORY)) { 452 *has_children = false; 453 return EOK; 454 } 455 456 rc = ext4_directory_iterator_init(&it, fs, enode->inode_ref, 0); 457 if (rc != EOK) { 458 return rc; 459 } 460 461 /* Find a non-empty directory entry */ 462 while (it.current != NULL) { 463 if (it.current->inode != 0) { 464 name_size = ext4_directory_entry_ll_get_name_length(fs->superblock, 465 it.current); 466 if (!ext4fs_is_dots(&it.current->name, name_size)) { 467 found = true; 468 break; 469 } 470 } 471 472 rc = ext4_directory_iterator_next(&it); 473 if (rc != EOK) { 474 ext4_directory_iterator_fini(&it); 475 return rc; 476 } 477 } 478 479 rc = ext4_directory_iterator_fini(&it); 480 if (rc != EOK) { 481 return rc; 482 } 483 484 *has_children = found; 485 454 486 return EOK; 455 487 } … … 482 514 bool ext4fs_is_directory(fs_node_t *fn) 483 515 { 484 EXT4FS_DBG("");485 486 // TODO487 return false;516 ext4fs_node_t *enode = EXT4FS_NODE(fn); 517 bool is_dir = ext4_inode_is_type(enode->instance->filesystem->superblock, 518 enode->inode_ref->inode, EXT4_INODE_MODE_DIRECTORY); 519 return is_dir; 488 520 } 489 521 … … 500 532 service_id_t ext4fs_service_get(fs_node_t *fn) 501 533 { 502 EXT4FS_DBG(""); 503 504 // TODO 505 return 0; 534 ext4fs_node_t *enode = EXT4FS_NODE(fn); 535 return enode->instance->service_id; 506 536 } 507 537 … … 536 566 fs_index_t *index, aoff64_t *size, unsigned *lnkcnt) 537 567 { 538 EXT4FS_DBG("");539 540 568 int rc; 541 569 ext4_filesystem_t *fs; … … 616 644 static int ext4fs_unmounted(service_id_t service_id) 617 645 { 618 EXT4FS_DBG("");619 620 646 int rc; 621 647 ext4fs_instance_t *inst; … … 651 677 size_t *rbytes) 652 678 { 653 EXT4FS_DBG("");654 655 679 ext4fs_instance_t *inst; 656 680 ext4_inode_ref_t *inode_ref; … … 712 736 ext4fs_instance_t *inst, ext4_inode_ref_t *inode_ref, size_t *rbytes) 713 737 { 714 EXT4FS_DBG("");715 738 716 739 ext4_directory_iterator_t it; … … 720 743 int rc; 721 744 bool found = false; 745 746 EXT4FS_DBG("inode = \%d", inode_ref->index); 722 747 723 748 rc = ext4_directory_iterator_init(&it, inst->filesystem, inode_ref, pos); … … 732 757 */ 733 758 while (it.current != NULL) { 759 734 760 if (it.current->inode == 0) { 735 761 goto skip; … … 738 764 name_size = ext4_directory_entry_ll_get_name_length( 739 765 inst->filesystem->superblock, it.current); 766 767 768 char* name = (char *)(&it.current->name); 769 770 EXT4FS_DBG("name: \%s", name); 771 EXT4FS_DBG("inode-number: \%d", it.current->inode); 740 772 741 773 /* skip . and .. */ … … 878 910 size_t *wbytes, aoff64_t *nsize) 879 911 { 912 EXT4FS_DBG("not supported"); 913 880 914 // TODO 881 915 return ENOTSUP; … … 886 920 ext4fs_truncate(service_id_t service_id, fs_index_t index, aoff64_t size) 887 921 { 922 EXT4FS_DBG("not supported"); 923 888 924 // TODO 889 925 return ENOTSUP; … … 900 936 static int ext4fs_destroy(service_id_t service_id, fs_index_t index) 901 937 { 938 EXT4FS_DBG("not supported"); 939 902 940 //TODO 903 941 return ENOTSUP; … … 907 945 static int ext4fs_sync(service_id_t service_id, fs_index_t index) 908 946 { 947 EXT4FS_DBG("not supported"); 948 909 949 // TODO 910 950 return ENOTSUP;
Note:
See TracChangeset
for help on using the changeset viewer.