summaryrefslogtreecommitdiff
path: root/lib/ext2fs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ext2fs')
-rw-r--r--lib/ext2fs/csum.c27
-rw-r--r--lib/ext2fs/ext2fs.h1
-rw-r--r--lib/ext2fs/inode.c3
-rw-r--r--lib/ext2fs/rw_bitmaps.c26
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;