diff options
Diffstat (limited to 'lib/ext2fs')
-rw-r--r-- | lib/ext2fs/csum.c | 27 | ||||
-rw-r--r-- | lib/ext2fs/ext2fs.h | 1 | ||||
-rw-r--r-- | lib/ext2fs/inode.c | 3 | ||||
-rw-r--r-- | lib/ext2fs/rw_bitmaps.c | 26 |
4 files changed, 20 insertions, 37 deletions
diff --git a/lib/ext2fs/csum.c b/lib/ext2fs/csum.c index 9ff21c3e..20b235a4 100644 --- a/lib/ext2fs/csum.c +++ b/lib/ext2fs/csum.c @@ -93,16 +93,14 @@ errcode_t ext2fs_set_gdt_csum(ext2_filsys fs) { struct ext2_super_block *sb = fs->super; struct ext2_group_desc *bg = fs->group_desc; - int blks, csum_flag, dirty = 0; + int blks, dirty = 0; dgrp_t i; if (!fs->inode_map) return EXT2_ET_NO_INODE_BITMAP; - csum_flag = EXT2_HAS_RO_COMPAT_FEATURE(fs->super, - EXT4_FEATURE_RO_COMPAT_GDT_CSUM); - if (!EXT2_HAS_COMPAT_FEATURE(fs->super, - EXT2_FEATURE_COMPAT_LAZY_BG) && !csum_flag) + if (!EXT2_HAS_RO_COMPAT_FEATURE(fs->super, + EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) return 0; for (i = 0; i < fs->group_desc_count; i++, bg++) { @@ -110,27 +108,16 @@ errcode_t ext2fs_set_gdt_csum(ext2_filsys fs) int old_unused = bg->bg_itable_unused; int old_flags = bg->bg_flags; - if (bg->bg_free_inodes_count == sb->s_inodes_per_group && - i > 0 && (i < fs->group_desc_count - 1 || csum_flag)) { - if (!(bg->bg_flags & EXT2_BG_INODE_UNINIT)) - bg->bg_flags |= EXT2_BG_INODE_UNINIT; - - if (csum_flag) - bg->bg_itable_unused = sb->s_inodes_per_group; - } else if (csum_flag) { + if (bg->bg_free_inodes_count == sb->s_inodes_per_group) { + bg->bg_flags |= EXT2_BG_INODE_UNINIT; + bg->bg_itable_unused = sb->s_inodes_per_group; + } else { bg->bg_flags &= ~EXT2_BG_INODE_UNINIT; bg->bg_itable_unused = sb->s_inodes_per_group - find_last_inode_ingrp(fs->inode_map, sb->s_inodes_per_group,i); } - /* skip first and last groups, or groups with GDT backups - * because the resize inode has blocks allocated in them. */ - if (i == 0 || i == fs->group_desc_count - 1 || - (ext2fs_bg_has_super(fs, i) && sb->s_reserved_gdt_blocks)) - goto checksum; - -checksum: ext2fs_group_desc_csum_set(fs, i); if (old_flags != bg->bg_flags) dirty = 1; diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h index e5988cdd..9283fd2b 100644 --- a/lib/ext2fs/ext2fs.h +++ b/lib/ext2fs/ext2fs.h @@ -489,7 +489,6 @@ typedef struct ext2_icount *ext2_icount_t; EXT3_FEATURE_COMPAT_HAS_JOURNAL|\ EXT2_FEATURE_COMPAT_RESIZE_INODE|\ EXT2_FEATURE_COMPAT_DIR_INDEX|\ - EXT2_FEATURE_COMPAT_LAZY_BG|\ EXT2_FEATURE_COMPAT_EXT_ATTR) /* This #ifdef is temporary until compression is fully supported */ diff --git a/lib/ext2fs/inode.c b/lib/ext2fs/inode.c index bd568b3d..d9150fbf 100644 --- a/lib/ext2fs/inode.c +++ b/lib/ext2fs/inode.c @@ -164,9 +164,6 @@ errcode_t ext2fs_open_inode_scan(ext2_filsys fs, int buffer_blocks, } if (scan->fs->badblocks && scan->fs->badblocks->num) scan->scan_flags |= EXT2_SF_CHK_BADBLOCKS; - if (EXT2_HAS_COMPAT_FEATURE(fs->super, - EXT2_FEATURE_COMPAT_LAZY_BG)) - scan->scan_flags |= EXT2_SF_DO_LAZY; if (EXT2_HAS_RO_COMPAT_FEATURE(fs->super, EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) scan->scan_flags |= EXT2_SF_DO_LAZY; diff --git a/lib/ext2fs/rw_bitmaps.c b/lib/ext2fs/rw_bitmaps.c index dd5dc46a..b7fda5a1 100644 --- a/lib/ext2fs/rw_bitmaps.c +++ b/lib/ext2fs/rw_bitmaps.c @@ -35,7 +35,7 @@ static errcode_t write_bitmaps(ext2_filsys fs, int do_inode, int do_block) unsigned int nbits; errcode_t retval; char *block_buf, *inode_buf; - int lazy_flag = 0; + int csum_flag = 0; blk_t blk; blk_t blk_itr = fs->super->s_first_data_block; ext2_ino_t ino_itr = 1; @@ -44,9 +44,11 @@ static errcode_t write_bitmaps(ext2_filsys fs, int do_inode, int do_block) if (!(fs->flags & EXT2_FLAG_RW)) return EXT2_ET_RO_FILSYS; - if (EXT2_HAS_COMPAT_FEATURE(fs->super, - EXT2_FEATURE_COMPAT_LAZY_BG)) - lazy_flag = 1; + + if (EXT2_HAS_RO_COMPAT_FEATURE(fs->super, + EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) + csum_flag = 1; + inode_nbytes = block_nbytes = 0; if (do_block) { block_nbytes = EXT2_BLOCKS_PER_GROUP(fs->super) / 8; @@ -68,7 +70,7 @@ static errcode_t write_bitmaps(ext2_filsys fs, int do_inode, int do_block) if (!do_block) goto skip_block_bitmap; - if (lazy_flag && fs->group_desc[i].bg_flags & + if (csum_flag && fs->group_desc[i].bg_flags & EXT2_BG_BLOCK_UNINIT) goto skip_this_block_bitmap; @@ -100,7 +102,7 @@ static errcode_t write_bitmaps(ext2_filsys fs, int do_inode, int do_block) if (!do_inode) continue; - if (lazy_flag && fs->group_desc[i].bg_flags & + if (csum_flag && fs->group_desc[i].bg_flags & EXT2_BG_INODE_UNINIT) goto skip_this_inode_bitmap; @@ -139,7 +141,7 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block) errcode_t retval; unsigned int block_nbytes = EXT2_BLOCKS_PER_GROUP(fs->super) / 8; unsigned inode_nbytes = EXT2_INODES_PER_GROUP(fs->super) / 8; - int lazy_flag = 0; + int csum_flag = 0; int do_image = fs->flags & EXT2_FLAG_IMAGE_FILE; unsigned int cnt; blk_t blk; @@ -152,11 +154,9 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block) fs->write_bitmaps = ext2fs_write_bitmaps; - if (EXT2_HAS_COMPAT_FEATURE(fs->super, - EXT2_FEATURE_COMPAT_LAZY_BG) || - EXT2_HAS_RO_COMPAT_FEATURE(fs->super, + if (EXT2_HAS_RO_COMPAT_FEATURE(fs->super, EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) - lazy_flag = 1; + csum_flag = 1; retval = ext2fs_get_mem(strlen(fs->device_name) + 80, &buf); if (retval) @@ -234,7 +234,7 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block) for (i = 0; i < fs->group_desc_count; i++) { if (block_bitmap) { blk = fs->group_desc[i].bg_block_bitmap; - if (lazy_flag && fs->group_desc[i].bg_flags & + if (csum_flag && fs->group_desc[i].bg_flags & EXT2_BG_BLOCK_UNINIT && ext2fs_group_desc_csum_verify(fs, i)) blk = 0; @@ -256,7 +256,7 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block) } if (inode_bitmap) { blk = fs->group_desc[i].bg_inode_bitmap; - if (lazy_flag && fs->group_desc[i].bg_flags & + if (csum_flag && fs->group_desc[i].bg_flags & EXT2_BG_INODE_UNINIT && ext2fs_group_desc_csum_verify(fs, i)) blk = 0; |