Changeset 936132f in mainline
- Timestamp:
- 2012-04-08T12:19:12Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b73530a
- Parents:
- 847f2cb
- Location:
- uspace/lib/ext4
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ext4/libext4_extent.c
r847f2cb r936132f 550 550 uint64_t inode_size = ext4_inode_get_size(sb, inode_ref->inode); 551 551 552 ext4_extent_header_t *header =553 ext4_inode_get_extent_header(inode_ref->inode);554 555 // Initialize if empty inode556 if (inode_size == 0) {557 ext4_extent_t *first = EXT4_EXTENT_FIRST(header);558 ext4_extent_set_block_count(first, 0);559 ext4_extent_set_first_block(first, 0);560 ext4_extent_set_start(first, 0);561 562 ext4_extent_header_set_depth(header, 0);563 ext4_extent_header_set_entries_count(header, 1);564 }565 566 552 uint32_t block_size = ext4_superblock_get_block_size(sb); 567 553 uint32_t new_block_idx = inode_size / block_size; … … 579 565 } 580 566 581 // Check if extent exists 582 assert(path_ptr->extent != NULL); 567 // if extent == NULL -> add extent to leaf 568 if (path_ptr->extent == NULL) { 569 ext4_extent_t *ext = EXT4_EXTENT_FIRST(path_ptr->header); 570 ext4_extent_set_block_count(ext, 0); 571 572 ext4_extent_header_set_entries_count(path_ptr->header, 1); 573 574 path_ptr->extent = ext; 575 } 583 576 584 577 uint32_t phys_block; -
uspace/lib/ext4/libext4_filesystem.c
r847f2cb r936132f 342 342 } 343 343 344 if (ext4_superblock_has_feature_incompatible(345 fs->superblock, EXT4_FEATURE_INCOMPAT_EXTENTS)) {346 ext4_inode_set_flag(inode, EXT4_INODE_FLAG_EXTENTS);347 }348 349 344 ext4_inode_set_uid(inode, 0); 350 345 ext4_inode_set_gid(inode, 0); … … 358 353 ext4_inode_set_generation(inode, 0); 359 354 355 // Reset blocks array 360 356 for (uint32_t i = 0; i < EXT4_INODE_BLOCKS; i++) { 361 357 inode->blocks[i] = 0; 358 } 359 360 if (ext4_superblock_has_feature_incompatible( 361 fs->superblock, EXT4_FEATURE_INCOMPAT_EXTENTS)) { 362 363 ext4_inode_set_flag(inode, EXT4_INODE_FLAG_EXTENTS); 364 365 // Initialize extent root header 366 ext4_extent_header_t *header = ext4_inode_get_extent_header(inode); 367 ext4_extent_header_set_depth(header, 0); 368 ext4_extent_header_set_entries_count(header, 0); 369 ext4_extent_header_set_generation(header, 0); 370 ext4_extent_header_set_magic(header, EXT4_EXTENT_MAGIC); 371 372 uint16_t max_entries = (EXT4_INODE_BLOCKS * sizeof (uint32_t) - sizeof(ext4_extent_header_t)) 373 / sizeof(ext4_extent_t); 374 375 ext4_extent_header_set_max_entries_count(header, max_entries); 362 376 } 363 377
Note:
See TracChangeset
for help on using the changeset viewer.