Changeset 5b0a3946 in mainline for uspace/lib/ext4/libext4_filesystem.c
- Timestamp:
- 2012-04-04T19:17:05Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9c2d19d
- Parents:
- e7ed26be
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ext4/libext4_filesystem.c
re7ed26be r5b0a3946 216 216 217 217 if (ref->dirty) { 218 218 uint16_t checksum = ext4_filesystem_bg_checksum( 219 219 ref->fs->superblock, ref->index, ref->block_group); 220 220 221 221 ext4_block_group_set_checksum(ref->block_group, checksum); 222 222 223 223 ref->block->dirty = true; … … 523 523 } 524 524 525 // starting from 1 because of logical blocks are numbered from 0 526 for (uint32_t i = 1; i <= diff_blocks_count; ++i) { 527 rc = ext4_filesystem_release_inode_block(inode_ref, old_blocks_count - i); 528 if (rc != EOK) { 529 return rc; 525 if (ext4_superblock_has_feature_incompatible( 526 inode_ref->fs->superblock, EXT4_FEATURE_INCOMPAT_EXTENTS) && 527 ext4_inode_has_flag(inode_ref->inode, EXT4_INODE_FLAG_EXTENTS)) { 528 529 rc = ext4_extent_release_blocks_from(inode_ref, old_blocks_count - diff_blocks_count); 530 if (rc != EOK) { 531 return rc; 532 } 533 } else { 534 // starting from 1 because of logical blocks are numbered from 0 535 for (uint32_t i = 1; i <= diff_blocks_count; ++i) { 536 rc = ext4_filesystem_release_inode_block(inode_ref, old_blocks_count - i); 537 if (rc != EOK) { 538 return rc; 539 } 530 540 } 531 541 } … … 783 793 ext4_filesystem_t *fs = inode_ref->fs; 784 794 785 if (ext4_superblock_has_feature_incompatible(fs->superblock, EXT4_FEATURE_INCOMPAT_EXTENTS) && 786 ext4_inode_has_flag(inode_ref->inode, EXT4_INODE_FLAG_EXTENTS)) { 787 788 return ext4_extent_release_block(inode_ref, iblock); 789 } 795 // EXTENTS are handled 796 assert(! (ext4_superblock_has_feature_incompatible(fs->superblock, 797 EXT4_FEATURE_INCOMPAT_EXTENTS) && 798 ext4_inode_has_flag(inode_ref->inode, EXT4_INODE_FLAG_EXTENTS))); 790 799 791 800 ext4_inode_t *inode = inode_ref->inode;
Note:
See TracChangeset
for help on using the changeset viewer.