]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
UBUNTU: SAUCE: ext4: fix ext4_validate_inode_bitmap: comm stress-ng: Corrupt inode...
authorTheodore Y. Ts'o <tytso@mit.edu>
Tue, 10 Jul 2018 22:11:31 +0000 (15:11 -0700)
committerKhalid Elmously <khalid.elmously@canonical.com>
Tue, 10 Jul 2018 23:03:26 +0000 (19:03 -0400)
BugLink: http://bugs.launchpad.net/bugs/1780137
Fix regression triggered by the stress-ng[*] "chdir" test, with LKML test
patch.

Regression observed on some arm64 server platforms:

    EXT4-fs error (device sda1): ext4_validate_inode_bitmap:99: comm stress-ng: Corrupt inode bitmap

Reference: https://lkml.org/lkml/2018/7/7/2

Reported-by: dann frazier <dann.frazier@canonical.com>
Tested-by: dann frazier <dann.frazier@canonical.com>
Fixes: 044e6e3d74a3 ext4: don't update checksum of new initialized bitmaps
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Acked-by: Khalid Elmously <khalid.elmously@canonical.com>
Acked-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
fs/ext4/ialloc.c

index 8bd0759a88e65670d4e46d05f19deac453144a87..6e0804d7863394df4447df46b2d3e5a214678b74 100644 (file)
@@ -91,6 +91,8 @@ static int ext4_validate_inode_bitmap(struct super_block *sb,
                return -EFSCORRUPTED;
 
        ext4_lock_group(sb, block_group);
+       if (buffer_verified(bh))
+               goto verified;
        blk = ext4_inode_bitmap(sb, desc);
        if (!ext4_inode_bitmap_csum_verify(sb, block_group, desc, bh,
                                           EXT4_INODES_PER_GROUP(sb) / 8)) {
@@ -108,6 +110,7 @@ static int ext4_validate_inode_bitmap(struct super_block *sb,
                return -EFSBADCRC;
        }
        set_buffer_verified(bh);
+verified:
        ext4_unlock_group(sb, block_group);
        return 0;
 }