Whamcloud - gitweb
LU-11525 kernel: new kernel [RHEL7.6 3.10.0-957.el7]
[fs/lustre-release.git] / ldiskfs / kernel_patches / patches / rhel7.6 / ext4-dont-check-before-replay.patch
diff --git a/ldiskfs/kernel_patches/patches/rhel7.6/ext4-dont-check-before-replay.patch b/ldiskfs/kernel_patches/patches/rhel7.6/ext4-dont-check-before-replay.patch
new file mode 100644 (file)
index 0000000..74ea752
--- /dev/null
@@ -0,0 +1,34 @@
+Index: linux-stage/fs/ext4/super.c
+When ldiskfs run in failover mode whith read-only disk.
+Part of allocation updates are lost and ldiskfs may fail
+while mounting this is due to inconsistent state of
+group-descriptor. Group-descriptor check is added after
+journal replay.
+===================================================================
+--- linux-stage/fs/ext4/super.c        2016-11-06 15:15:30.892386878 +0530
++++ linux-stage.orig.1/fs/ext4/super.c 2016-11-08 10:56:45.579892189 +0530
+@@ -4156,11 +4156,6 @@ static int ext4_fill_super(struct super_
+               }
+       }
+       sbi->s_gdb_count = db_count;
+-      if (!ext4_check_descriptors(sb, logical_sb_block, &first_not_zeroed)) {
+-              ext4_msg(sb, KERN_ERR, "group descriptors corrupted!");
+-              goto failed_mount2;
+-      }
+-
+       get_random_bytes(&sbi->s_next_generation, sizeof(u32));
+       spin_lock_init(&sbi->s_next_gen_lock);
+@@ -4280,6 +4275,12 @@ static int ext4_fill_super(struct super_
+       sbi->s_journal->j_commit_callback = ext4_journal_commit_callback;
+ no_journal:
++
++      if (!ext4_check_descriptors(sb, logical_sb_block, &first_not_zeroed)) {
++              ext4_msg(sb, KERN_ERR, "group descriptors corrupted!");
++              goto failed_mount_wq;
++      }
++
+       /*
+        * Get the # of file system overhead blocks from the
+        * superblock if present.