+++ /dev/null
-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(+)
-
-diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
-index 8497880135ee..2b2f03705990 100644
---- 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>
-@@ -6773,7 +6774,18 @@ static void raid5d(struct md_thread *thread)
- 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);
-
---
-2.34.1
-