]> git.baikalelectronics.ru Git - kernel.git/commitdiff
md/raid10: properly indicate failure when ending a failed write request
authorWei Shuyu <wsy@dogben.com>
Mon, 28 Jun 2021 07:15:08 +0000 (15:15 +0800)
committerSong Liu <song@kernel.org>
Fri, 23 Jul 2021 17:14:07 +0000 (10:14 -0700)
Similar to [1], this patch fixes the same bug in raid10. Also cleanup the
comments.

[1] commit 2417b9869b81 ("md/raid1: properly indicate failure when ending
                         a failed write request")
Cc: stable@vger.kernel.org
Fixes: 7cee6d4e6035 ("md/raid10: end bio when the device faulty")
Signed-off-by: Wei Shuyu <wsy@dogben.com>
Acked-by: Guoqing Jiang <jiangguoqing@kylinos.cn>
Signed-off-by: Song Liu <song@kernel.org>
drivers/md/raid1.c
drivers/md/raid10.c

index ced076ba560e18a7ac141d3ab8dc7f430ccbc1f4..753822ca96131a6c9fa47b88907ee1a6df32b69d 100644 (file)
@@ -472,8 +472,6 @@ static void raid1_end_write_request(struct bio *bio)
                /*
                 * When the device is faulty, it is not necessary to
                 * handle write error.
-                * For failfast, this is the only remaining device,
-                * We need to retry the write without FailFast.
                 */
                if (!test_bit(Faulty, &rdev->flags))
                        set_bit(R1BIO_WriteError, &r1_bio->state);
index 13f5e6b2a73d6a6aa27c69ad72cdf324c0027dc4..40e845fb9717056c981da37189671f6b265e925d 100644 (file)
@@ -469,12 +469,12 @@ static void raid10_end_write_request(struct bio *bio)
                        /*
                         * When the device is faulty, it is not necessary to
                         * handle write error.
-                        * For failfast, this is the only remaining device,
-                        * We need to retry the write without FailFast.
                         */
                        if (!test_bit(Faulty, &rdev->flags))
                                set_bit(R10BIO_WriteError, &r10_bio->state);
                        else {
+                               /* Fail the request */
+                               set_bit(R10BIO_Degraded, &r10_bio->state);
                                r10_bio->devs[slot].bio = NULL;
                                to_put = bio;
                                dec_rdev = 1;