From: Yufen Yu Date: Fri, 19 Jul 2019 05:48:47 +0000 (+0800) Subject: md/raid10: end bio when the device faulty X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=7cee6d4e6035603d42acd56d591e624921aa1b14;p=openwrt%2Fstaging%2Fblogic.git md/raid10: end bio when the device faulty Just like raid1, we do not queue write error bio to retry write and acknowlege badblocks, when the device is faulty. Signed-off-by: Yufen Yu Signed-off-by: Song Liu --- diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 8a1354a08a1a..a982e040b609 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -465,19 +465,21 @@ static void raid10_end_write_request(struct bio *bio) if (test_bit(FailFast, &rdev->flags) && (bio->bi_opf & MD_FAILFAST)) { md_error(rdev->mddev, rdev); - if (!test_bit(Faulty, &rdev->flags)) - /* This is the only remaining device, - * We need to retry the write without - * FailFast - */ - set_bit(R10BIO_WriteError, &r10_bio->state); - else { - r10_bio->devs[slot].bio = NULL; - to_put = bio; - dec_rdev = 1; - } - } else + } + + /* + * 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 { + r10_bio->devs[slot].bio = NULL; + to_put = bio; + dec_rdev = 1; + } } } else { /*