Whamcloud - gitweb
LU-11187 ldiskfs: don't mark mmp buffer head dirty 38/33038/10
authorLi Dongyang <dongyangli@ddn.com>
Tue, 21 Aug 2018 00:10:45 +0000 (10:10 +1000)
committerOleg Drokin <green@whamcloud.com>
Fri, 5 Oct 2018 22:28:18 +0000 (22:28 +0000)
Marking mmp bh dirty before writing it will make writeback
pick up mmp block later and submit a write, we don't want the
duplicate write as kmmpd thread should have full control of
reading and writing the mmp block.
Another reason is we will also have random I/O error on
the writeback request when blk integrity is enabled, because
kmmpd could modify the content of the mmp block(e.g. setting
new seq and time) while the mmp block is under I/O requested
by writeback.

Linux-commit: fe18d649891d813964d3aaeebad873f281627fbc

Test-Parameters: testgroup=review-ldiskfs testlist=mmp
Signed-off-by: Li Dongyang <dongyangli@ddn.com>
Change-Id: I5aa9fd384a4ea25ee52f1198528fae4ecc9c28c7
Reviewed-on: https://review.whamcloud.com/33038
Tested-by: Jenkins
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Wang Shilong <wshilong@ddn.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
29 files changed:
ldiskfs/kernel_patches/patches/rhel6.3/ext4-mmp-dont-mark-bh-dirty.patch [new file with mode: 0644]
ldiskfs/kernel_patches/patches/rhel6.6/ext4-mmp-dont-mark-bh-dirty.patch [new file with mode: 0644]
ldiskfs/kernel_patches/patches/rhel7/ext4-mmp-dont-mark-bh-dirty.patch [new file with mode: 0644]
ldiskfs/kernel_patches/patches/sles11sp2/ext4-mmp-dont-mark-bh-dirty.patch [new file with mode: 0644]
ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.4.series
ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.5.series
ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.6.series
ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.7.series
ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.8.series
ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.9.series
ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel6.series
ldiskfs/kernel_patches/series/ldiskfs-2.6-sles11.series
ldiskfs/kernel_patches/series/ldiskfs-3.0-sles11.series
ldiskfs/kernel_patches/series/ldiskfs-3.0-sles11sp3.series
ldiskfs/kernel_patches/series/ldiskfs-3.0-sles11sp4.series
ldiskfs/kernel_patches/series/ldiskfs-3.10-rhel7.2.series
ldiskfs/kernel_patches/series/ldiskfs-3.10-rhel7.3.series
ldiskfs/kernel_patches/series/ldiskfs-3.10-rhel7.4.series
ldiskfs/kernel_patches/series/ldiskfs-3.10-rhel7.5.series
ldiskfs/kernel_patches/series/ldiskfs-3.10-rhel7.series
ldiskfs/kernel_patches/series/ldiskfs-3.12-sles12.series
ldiskfs/kernel_patches/series/ldiskfs-3.12-sles12sp1.series
ldiskfs/kernel_patches/series/ldiskfs-4.15.0-20-ubuntu18.series
ldiskfs/kernel_patches/series/ldiskfs-4.4-sles12sp2.series
ldiskfs/kernel_patches/series/ldiskfs-4.4-sles12sp3.series
ldiskfs/kernel_patches/series/ldiskfs-4.4.0-45-ubuntu14+16.series
ldiskfs/kernel_patches/series/ldiskfs-4.4.0-49-ubuntu14+16.series
ldiskfs/kernel_patches/series/ldiskfs-4.4.0-62-ubuntu14+16.series
ldiskfs/kernel_patches/series/ldiskfs-4.4.0-73-ubuntu14+16.series

diff --git a/ldiskfs/kernel_patches/patches/rhel6.3/ext4-mmp-dont-mark-bh-dirty.patch b/ldiskfs/kernel_patches/patches/rhel6.3/ext4-mmp-dont-mark-bh-dirty.patch
new file mode 100644 (file)
index 0000000..ed25813
--- /dev/null
@@ -0,0 +1,35 @@
+From fe18d649891d813964d3aaeebad873f281627fbc Mon Sep 17 00:00:00 2001
+From: Li Dongyang <dongyangli@ddn.com>
+Date: Sat, 15 Sep 2018 17:11:25 -0400
+Subject: [PATCH] ext4: don't mark mmp buffer head dirty
+
+Marking mmp bh dirty before writing it will make writeback
+pick up mmp block later and submit a write, we don't want the
+duplicate write as kmmpd thread should have full control of
+reading and writing the mmp block.
+Another reason is we will also have random I/O error on
+the writeback request when blk integrity is enabled, because
+kmmpd could modify the content of the mmp block(e.g. setting
+new seq and time) while the mmp block is under I/O requested
+by writeback.
+
+Signed-off-by: Li Dongyang <dongyangli@ddn.com>
+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+Reviewed-by: Andreas Dilger <adilger@dilger.ca>
+Cc: stable@vger.kernel.org
+---
+ fs/ext4/mmp.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+Index: linux-stage/fs/ext4/mmp.c
+===================================================================
+--- linux-stage.orig/fs/ext4/mmp.c
++++ linux-stage/fs/ext4/mmp.c
+@@ -12,7 +12,6 @@
+  */
+ static int write_mmp_block(struct buffer_head *bh)
+ {
+-       mark_buffer_dirty(bh);
+        lock_buffer(bh);
+        bh->b_end_io = end_buffer_write_sync;
+        get_bh(bh);
diff --git a/ldiskfs/kernel_patches/patches/rhel6.6/ext4-mmp-dont-mark-bh-dirty.patch b/ldiskfs/kernel_patches/patches/rhel6.6/ext4-mmp-dont-mark-bh-dirty.patch
new file mode 100644 (file)
index 0000000..0de707a
--- /dev/null
@@ -0,0 +1,35 @@
+From fe18d649891d813964d3aaeebad873f281627fbc Mon Sep 17 00:00:00 2001
+From: Li Dongyang <dongyangli@ddn.com>
+Date: Sat, 15 Sep 2018 17:11:25 -0400
+Subject: [PATCH] ext4: don't mark mmp buffer head dirty
+
+Marking mmp bh dirty before writing it will make writeback
+pick up mmp block later and submit a write, we don't want the
+duplicate write as kmmpd thread should have full control of
+reading and writing the mmp block.
+Another reason is we will also have random I/O error on
+the writeback request when blk integrity is enabled, because
+kmmpd could modify the content of the mmp block(e.g. setting
+new seq and time) while the mmp block is under I/O requested
+by writeback.
+
+Signed-off-by: Li Dongyang <dongyangli@ddn.com>
+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+Reviewed-by: Andreas Dilger <adilger@dilger.ca>
+Cc: stable@vger.kernel.org
+---
+ fs/ext4/mmp.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+Index: linux-stage/fs/ext4/mmp.c
+===================================================================
+--- linux-stage.orig/fs/ext4/mmp.c
++++ linux-stage/fs/ext4/mmp.c
+@@ -18,7 +18,6 @@ static int write_mmp_block(struct super_
+        * on frozen filesystem.
+        */
+       sb_start_write(sb);
+-      mark_buffer_dirty(bh);
+       lock_buffer(bh);
+       bh->b_end_io = end_buffer_write_sync;
+       get_bh(bh);
diff --git a/ldiskfs/kernel_patches/patches/rhel7/ext4-mmp-dont-mark-bh-dirty.patch b/ldiskfs/kernel_patches/patches/rhel7/ext4-mmp-dont-mark-bh-dirty.patch
new file mode 100644 (file)
index 0000000..d4be849
--- /dev/null
@@ -0,0 +1,35 @@
+From fe18d649891d813964d3aaeebad873f281627fbc Mon Sep 17 00:00:00 2001
+From: Li Dongyang <dongyangli@ddn.com>
+Date: Sat, 15 Sep 2018 17:11:25 -0400
+Subject: [PATCH] ext4: don't mark mmp buffer head dirty
+
+Marking mmp bh dirty before writing it will make writeback
+pick up mmp block later and submit a write, we don't want the
+duplicate write as kmmpd thread should have full control of
+reading and writing the mmp block.
+Another reason is we will also have random I/O error on
+the writeback request when blk integrity is enabled, because
+kmmpd could modify the content of the mmp block(e.g. setting
+new seq and time) while the mmp block is under I/O requested
+by writeback.
+
+Signed-off-by: Li Dongyang <dongyangli@ddn.com>
+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+Reviewed-by: Andreas Dilger <adilger@dilger.ca>
+Cc: stable@vger.kernel.org
+---
+ fs/ext4/mmp.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+Index: linux-3.10.0-693.21.1.el7/fs/ext4/mmp.c
+===================================================================
+--- linux-3.10.0-693.21.1.el7.orig/fs/ext4/mmp.c
++++ linux-3.10.0-693.21.1.el7/fs/ext4/mmp.c
+@@ -48,7 +48,6 @@ static int write_mmp_block(struct super_
+        */
+       sb_start_write(sb);
+       ext4_mmp_csum_set(sb, mmp);
+-      mark_buffer_dirty(bh);
+       lock_buffer(bh);
+       bh->b_end_io = end_buffer_write_sync;
+       get_bh(bh);
diff --git a/ldiskfs/kernel_patches/patches/sles11sp2/ext4-mmp-dont-mark-bh-dirty.patch b/ldiskfs/kernel_patches/patches/sles11sp2/ext4-mmp-dont-mark-bh-dirty.patch
new file mode 100644 (file)
index 0000000..3ddedd2
--- /dev/null
@@ -0,0 +1,35 @@
+From fe18d649891d813964d3aaeebad873f281627fbc Mon Sep 17 00:00:00 2001
+From: Li Dongyang <dongyangli@ddn.com>
+Date: Sat, 15 Sep 2018 17:11:25 -0400
+Subject: [PATCH] ext4: don't mark mmp buffer head dirty
+
+Marking mmp bh dirty before writing it will make writeback
+pick up mmp block later and submit a write, we don't want the
+duplicate write as kmmpd thread should have full control of
+reading and writing the mmp block.
+Another reason is we will also have random I/O error on
+the writeback request when blk integrity is enabled, because
+kmmpd could modify the content of the mmp block(e.g. setting
+new seq and time) while the mmp block is under I/O requested
+by writeback.
+
+Signed-off-by: Li Dongyang <dongyangli@ddn.com>
+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+Reviewed-by: Andreas Dilger <adilger@dilger.ca>
+Cc: stable@vger.kernel.org
+---
+ fs/ext4/mmp.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+Index: linux-stage/fs/ext4/mmp.c
+===================================================================
+--- linux-stage.orig/fs/ext4/mmp.c
++++ linux-stage/fs/ext4/mmp.c
+@@ -12,7 +12,6 @@
+  */
+ static int write_mmp_block(struct buffer_head *bh)
+ {
+-      mark_buffer_dirty(bh);
+       lock_buffer(bh);
+       bh->b_end_io = end_buffer_write_sync;
+       get_bh(bh);
index 412374d..cd26356 100644 (file)
@@ -45,3 +45,4 @@ rhel6.3/ext4-notalloc_under_idatasem.patch
 rhel6.3/ext4-dont-check-in-ro.patch
 rhel6.3/ext4-dont-check-before-replay.patch
 rhel7/ext4-export-orphan-add.patch
+rhel6.3/ext4-mmp-dont-mark-bh-dirty.patch
index aca98ab..f96d650 100644 (file)
@@ -49,3 +49,4 @@ rhel6.3/ext4-dont-check-in-ro.patch
 rhel6.3/ext4-dont-check-before-replay.patch
 rhel6.5/ext4-brackets-in-ext4-remove-blocks.patch
 rhel7/ext4-export-orphan-add.patch
+rhel6.3/ext4-mmp-dont-mark-bh-dirty.patch
index 14a2e6c..792bf57 100644 (file)
@@ -49,3 +49,4 @@ rhel6.6/ext4_s_max_ext_tree_depth.patch
 rhel6.5/ext4-fix-journal-quota.patch
 rhel6.5/ext4-brackets-in-ext4-remove-blocks.patch
 rhel7/ext4-export-orphan-add.patch
+rhel6.6/ext4-mmp-dont-mark-bh-dirty.patch
index e6ef809..2a4cf15 100644 (file)
@@ -48,3 +48,4 @@ rhel6.6/ext4_s_max_ext_tree_depth.patch
 rhel6.5/ext4-fix-journal-quota.patch
 rhel6.5/ext4-brackets-in-ext4-remove-blocks.patch
 rhel7/ext4-export-orphan-add.patch
+rhel6.6/ext4-mmp-dont-mark-bh-dirty.patch
index 3783f9a..33f89a1 100644 (file)
@@ -46,3 +46,4 @@ rhel6.6/ext4_s_max_ext_tree_depth.patch
 rhel6.5/ext4-fix-journal-quota.patch
 rhel6.5/ext4-brackets-in-ext4-remove-blocks.patch
 rhel7/ext4-export-orphan-add.patch
+rhel6.6/ext4-mmp-dont-mark-bh-dirty.patch
index dddd020..b3245f0 100644 (file)
@@ -45,3 +45,4 @@ rhel6.5/ext4-give-warning-with-dir-htree-growing.patch
 rhel6.6/ext4_s_max_ext_tree_depth.patch
 rhel6.5/ext4-fix-journal-quota.patch
 rhel7/ext4-export-orphan-add.patch
+rhel6.6/ext4-mmp-dont-mark-bh-dirty.patch
index 5dd8566..e9c932e 100644 (file)
@@ -44,3 +44,4 @@ rhel6.3/ext4-notalloc_under_idatasem.patch
 rhel6.3/ext4-dont-check-in-ro.patch
 rhel6.3/ext4-dont-check-before-replay.patch
 rhel7/ext4-export-orphan-add.patch
+rhel6.3/ext4-mmp-dont-mark-bh-dirty.patch
index dcf6977..9366cec 100644 (file)
@@ -44,3 +44,4 @@ rhel6.3/ext4-recalc-percpu-counters-after-journal.patch
 rhel6.3/ext4-notalloc_under_idatasem.patch
 rhel6.5/ext4-fix-journal-quota.patch
 rhel7/ext4-export-orphan-add.patch
+rhel6.3/ext4-mmp-dont-mark-bh-dirty.patch
index a7ba22a..41c8bc2 100644 (file)
@@ -5,7 +5,6 @@ sles11sp2/ext4-use-ext4_msg-instead-of-printk-in-mballoc.patch
 sles11sp2/revert-ext4-avoid-uninitialized-memory-references-in-ext3_htree_next_block.patch
 sles11sp2/ext4-journal-callback.patch
 sles11sp2/ext4-make-quota-as-first-class-supported-feature.patch
-
 sles11sp2/ext4-handle-cleanup-after-quota-failure.patch
 sles11sp2/ext4-map_inode_page-3.0.patch
 sles11sp2/export-ext4-3.0.patch
@@ -41,3 +40,4 @@ sles11sp3/ext4_s_max_ext_tree_depth.patch
 sles11sp1/ext4-notalloc_under_idatasem.patch
 rhel6.5/ext4-fix-journal-quota.patch
 rhel7/ext4-export-orphan-add.patch
+sles11sp2/ext4-mmp-dont-mark-bh-dirty.patch
index 94be6ac..b2f1289 100644 (file)
@@ -5,7 +5,6 @@ sles11sp2/ext4-use-ext4_msg-instead-of-printk-in-mballoc.patch
 sles11sp2/revert-ext4-avoid-uninitialized-memory-references-in-ext3_htree_next_block.patch
 sles11sp2/ext4-journal-callback.patch
 sles11sp2/ext4-make-quota-as-first-class-supported-feature.patch
-
 sles11sp2/ext4-handle-cleanup-after-quota-failure.patch
 sles11sp2/ext4-map_inode_page-3.0.patch
 sles11sp2/export-ext4-3.0.patch
@@ -45,3 +44,4 @@ rhel6.5/ext4-fix-journal-quota.patch
 sles11sp3/ext4-dont-check-before-replay.patch
 rhel6.3/ext4-dont-check-in-ro.patch
 rhel7/ext4-export-orphan-add.patch
+sles11sp2/ext4-mmp-dont-mark-bh-dirty.patch
index bf645c6..c838753 100644 (file)
@@ -5,7 +5,6 @@ sles11sp2/ext4-use-ext4_msg-instead-of-printk-in-mballoc.patch
 sles11sp2/revert-ext4-avoid-uninitialized-memory-references-in-ext3_htree_next_block.patch
 sles11sp2/ext4-journal-callback.patch
 sles11sp2/ext4-make-quota-as-first-class-supported-feature.patch
-
 sles11sp2/ext4-handle-cleanup-after-quota-failure.patch
 sles11sp2/ext4-map_inode_page-3.0.patch
 sles11sp2/export-ext4-3.0.patch
@@ -45,3 +44,4 @@ rhel6.5/ext4-fix-journal-quota.patch
 sles11sp3/ext4-dont-check-before-replay.patch
 rhel6.3/ext4-dont-check-in-ro.patch
 rhel7/ext4-export-orphan-add.patch
+sles11sp2/ext4-mmp-dont-mark-bh-dirty.patch
index 7e01b8a..fc26a2b 100644 (file)
@@ -35,3 +35,4 @@ rhel7/ext4-reduce-lock-contention-in-__ext4_new_inode.patch
 rhel7.2/ext4-preread-gd.patch
 rhel7/ext4-use-GFP_NOFS-in-ext4_inode_attach_jinode.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch
index cc5a856..3628d29 100644 (file)
@@ -35,3 +35,4 @@ rhel7/ext4-reduce-lock-contention-in-__ext4_new_inode.patch
 rhel7.2/ext4-preread-gd.patch
 rhel7/ext4-use-GFP_NOFS-in-ext4_inode_attach_jinode.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch
index 98ebf46..5e8d73f 100644 (file)
@@ -35,3 +35,4 @@ rhel7/ext4-reduce-lock-contention-in-__ext4_new_inode.patch
 rhel7.2/ext4-preread-gd.patch
 rhel7/ext4-use-GFP_NOFS-in-ext4_inode_attach_jinode.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch
index 6159b07..c73299b 100644 (file)
@@ -34,3 +34,4 @@ rhel7/ext4-reduce-lock-contention-in-__ext4_new_inode.patch
 rhel7.2/ext4-preread-gd.patch
 rhel7/ext4-use-GFP_NOFS-in-ext4_inode_attach_jinode.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch
index 645bb3d..a1a7206 100644 (file)
@@ -30,3 +30,4 @@ rhel7/ext4-fix-xattr-shifting-when-expanding-inodes.patch
 rhel7/ext4-cleanup-goto-next-group.patch
 rhel7/ext4-reduce-lock-contention-in-__ext4_new_inode.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch
index b3c7b95..e0a3240 100644 (file)
@@ -21,3 +21,4 @@ rhel7/ext4-give-warning-with-dir-htree-growing.patch
 rhel7/ext4-mmp-brelse.patch
 rhel7/ext4-jcb-optimization.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch
index 29f1110..823a523 100644 (file)
@@ -22,3 +22,4 @@ rhel7/ext4-mmp-brelse.patch
 rhel7/ext4-jcb-optimization.patch
 sles12sp1/ext4-attach-jinode-in-writepages.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch
index 481d262..ba341ba 100644 (file)
@@ -20,3 +20,4 @@ ubuntu18/ext4-attach-jinode-in-writepages.patch
 ubuntu18/ext4-dont-check-before-replay.patch
 rhel7/ext4-use-GFP_NOFS-in-ext4_inode_attach_jinode.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch
index 737ef42..d163e22 100644 (file)
@@ -26,3 +26,4 @@ rhel7.2/ext4-dont-check-in-ro.patch
 sles12sp2/ext4-fix-xattr-shifting-when-expanding-inodes.patch
 rhel7/ext4-use-GFP_NOFS-in-ext4_inode_attach_jinode.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch
index bbe697c..d88e07f 100644 (file)
@@ -26,3 +26,4 @@ rhel7.2/ext4-dont-check-in-ro.patch
 sles12sp2/ext4-fix-xattr-shifting-when-expanding-inodes.patch
 rhel7/ext4-use-GFP_NOFS-in-ext4_inode_attach_jinode.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch
index 8ccdd27..dbda4d1 100644 (file)
@@ -23,3 +23,4 @@ rhel7/ext4-jcb-optimization.patch
 sles12sp2/ext4-attach-jinode-in-writepages.patch
 rhel7/ext4-use-GFP_NOFS-in-ext4_inode_attach_jinode.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch
index 62e3d82..dfd8291 100644 (file)
@@ -23,3 +23,4 @@ rhel7/ext4-jcb-optimization.patch
 sles12sp2/ext4-attach-jinode-in-writepages.patch
 rhel7/ext4-use-GFP_NOFS-in-ext4_inode_attach_jinode.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch
index 27f8655..ac709d0 100644 (file)
@@ -23,3 +23,4 @@ rhel7/ext4-jcb-optimization.patch
 sles12sp2/ext4-attach-jinode-in-writepages.patch
 rhel7/ext4-use-GFP_NOFS-in-ext4_inode_attach_jinode.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch
index b552a0d..cce46c8 100644 (file)
@@ -23,3 +23,4 @@ rhel7/ext4-jcb-optimization.patch
 sles12sp2/ext4-attach-jinode-in-writepages.patch
 rhel7/ext4-use-GFP_NOFS-in-ext4_inode_attach_jinode.patch
 rhel7/ext4-export-orphan-add.patch
+rhel7/ext4-mmp-dont-mark-bh-dirty.patch