mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-24 12:44:23 +08:00
ext4: Only update number of of unused inodes if GDT_CSUM feature is set
e2fsck warns about "Group descriptor 0 marked uninitialized without feature set." The bg_itable_unused field is only defined if FEATURE_RO_COMPAT_GDT_CSUM is set, and should be set (kept) zero otherwise. Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de> Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
This commit is contained in:
parent
b7dd40d052
commit
398d6fad92
@ -988,12 +988,13 @@ int ext4fs_get_new_inode_no(void)
|
||||
if (!journal_buffer || !zero_buffer)
|
||||
goto fail;
|
||||
struct ext2_block_group *bgd = (struct ext2_block_group *)fs->gdtable;
|
||||
int has_gdt_chksum = le32_to_cpu(fs->sb->feature_ro_compat) &
|
||||
EXT4_FEATURE_RO_COMPAT_GDT_CSUM ? 1 : 0;
|
||||
|
||||
if (fs->first_pass_ibmap == 0) {
|
||||
for (i = 0; i < fs->no_blkgrp; i++) {
|
||||
if (bgd[i].free_inodes) {
|
||||
if (bgd[i].bg_itable_unused !=
|
||||
bgd[i].free_inodes)
|
||||
if (has_gdt_chksum)
|
||||
bgd[i].bg_itable_unused =
|
||||
bgd[i].free_inodes;
|
||||
if (le16_to_cpu(bgd[i].bg_flags) & EXT4_BG_INODE_UNINIT) {
|
||||
@ -1014,7 +1015,8 @@ int ext4fs_get_new_inode_no(void)
|
||||
(i * inodes_per_grp);
|
||||
fs->first_pass_ibmap++;
|
||||
ext4fs_bg_free_inodes_dec(&bgd[i]);
|
||||
ext4fs_bg_itable_unused_dec(&bgd[i]);
|
||||
if (has_gdt_chksum)
|
||||
ext4fs_bg_itable_unused_dec(&bgd[i]);
|
||||
ext4fs_sb_free_inodes_dec(fs->sb);
|
||||
status = ext4fs_devread(
|
||||
(lbaint_t)le32_to_cpu(bgd[i].inode_id) *
|
||||
@ -1069,12 +1071,10 @@ restart:
|
||||
goto fail;
|
||||
prev_inode_bitmap_index = ibmap_idx;
|
||||
}
|
||||
if (bgd[ibmap_idx].bg_itable_unused !=
|
||||
bgd[ibmap_idx].free_inodes)
|
||||
ext4fs_bg_free_inodes_dec(&bgd[ibmap_idx]);
|
||||
if (has_gdt_chksum)
|
||||
bgd[ibmap_idx].bg_itable_unused =
|
||||
bgd[ibmap_idx].free_inodes;
|
||||
ext4fs_bg_free_inodes_dec(&bgd[ibmap_idx]);
|
||||
ext4fs_bg_itable_unused_dec(&bgd[ibmap_idx]);
|
||||
ext4fs_sb_free_inodes_dec(fs->sb);
|
||||
goto success;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user