]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.7-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 21:59:36 +0000 (13:59 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 21:59:36 +0000 (13:59 -0800)
added patches:
revert-revert-md-raid5-wait-for-md_sb_change_pending-in-raid5d.patch

queue-6.7/revert-revert-md-raid5-wait-for-md_sb_change_pending-in-raid5d.patch [new file with mode: 0644]
queue-6.7/series

diff --git a/queue-6.7/revert-revert-md-raid5-wait-for-md_sb_change_pending-in-raid5d.patch b/queue-6.7/revert-revert-md-raid5-wait-for-md_sb_change_pending-in-raid5d.patch
new file mode 100644 (file)
index 0000000..6b09a4b
--- /dev/null
@@ -0,0 +1,66 @@
+From song@kernel.org  Thu Jan 25 13:56:36 2024
+From: Song Liu <song@kernel.org>
+Date: Thu, 25 Jan 2024 00:21:31 -0800
+Subject: Revert "Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d""
+To: linux-raid@vger.kernel.org
+Cc: yukuai1@huaweicloud.com, Song Liu <song@kernel.org>, Dan Moulding <dan@danm.net>, stable@vger.kernel.org, Junxiao Bi <junxiao.bi@oracle.com>, Yu Kuai <yukuai3@huawei.com>
+Message-ID: <20240125082131.788600-1-song@kernel.org>
+
+From: Song Liu <song@kernel.org>
+
+This reverts commit bed9e27baf52a09b7ba2a3714f1e24e17ced386d.
+
+The original set [1][2] was expected to undo a suboptimal fix in [2], and
+replace it with a better fix [1]. However, as reported by Dan Moulding [2]
+causes an issue with raid5 with journal device.
+
+Revert [2] for now to close the issue. We will follow up on another issue
+reported by Juxiao Bi, as [2] is expected to fix it. We believe this is a
+good trade-off, because the latter issue happens less freqently.
+
+In the meanwhile, we will NOT revert [1], as it contains the right logic.
+
+[1] commit d6e035aad6c0 ("md: bypass block throttle for superblock update")
+[2] commit bed9e27baf52 ("Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d"")
+
+Reported-by: Dan Moulding <dan@danm.net>
+Closes: https://lore.kernel.org/linux-raid/20240123005700.9302-1-dan@danm.net/
+Fixes: bed9e27baf52 ("Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d"")
+Cc: stable@vger.kernel.org # v5.19+
+Cc: Junxiao Bi <junxiao.bi@oracle.com>
+Cc: Yu Kuai <yukuai3@huawei.com>
+Signed-off-by: Song Liu <song@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/md/raid5.c |   12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+--- a/drivers/md/raid5.c
++++ b/drivers/md/raid5.c
+@@ -36,6 +36,7 @@
+  */
+ #include <linux/blkdev.h>
++#include <linux/delay.h>
+ #include <linux/kthread.h>
+ #include <linux/raid/pq.h>
+ #include <linux/async_tx.h>
+@@ -6819,7 +6820,18 @@ static void raid5d(struct md_thread *thr
+                       spin_unlock_irq(&conf->device_lock);
+                       md_check_recovery(mddev);
+                       spin_lock_irq(&conf->device_lock);
++
++                      /*
++                       * Waiting on MD_SB_CHANGE_PENDING below may deadlock
++                       * seeing md_check_recovery() is needed to clear
++                       * the flag when using mdmon.
++                       */
++                      continue;
+               }
++
++              wait_event_lock_irq(mddev->sb_wait,
++                      !test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags),
++                      conf->device_lock);
+       }
+       pr_debug("%d stripes handled\n", handled);
index 77671422f1600abc305e91e3e6508c6c3bd8e3c5..19952d53f3e5021f277d6daa73553a5aaab83ffc 100644 (file)
@@ -637,3 +637,4 @@ i2c-s3c24xx-fix-read-transfers-in-polling-mode.patch
 i2c-s3c24xx-fix-transferring-more-than-one-message-i.patch
 revert-keys-encrypted-add-check-for-strsep.patch
 arm64-dts-armada-3720-turris-mox-set-irq-type-for-rtc.patch
+revert-revert-md-raid5-wait-for-md_sb_change_pending-in-raid5d.patch