1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00

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 <yuyufen@huawei.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
This commit is contained in:
Yufen Yu 2019-07-19 13:48:47 +08:00 committed by Song Liu
parent eeba6809d8
commit 7cee6d4e60

View file

@ -465,19 +465,21 @@ static void raid10_end_write_request(struct bio *bio)
if (test_bit(FailFast, &rdev->flags) && if (test_bit(FailFast, &rdev->flags) &&
(bio->bi_opf & MD_FAILFAST)) { (bio->bi_opf & MD_FAILFAST)) {
md_error(rdev->mddev, rdev); 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 * When the device is faulty, it is not necessary to
*/ * handle write error.
set_bit(R10BIO_WriteError, &r10_bio->state); * For failfast, this is the only remaining device,
else { * We need to retry the write without FailFast.
r10_bio->devs[slot].bio = NULL; */
to_put = bio; if (!test_bit(Faulty, &rdev->flags))
dec_rdev = 1;
}
} else
set_bit(R10BIO_WriteError, &r10_bio->state); set_bit(R10BIO_WriteError, &r10_bio->state);
else {
r10_bio->devs[slot].bio = NULL;
to_put = bio;
dec_rdev = 1;
}
} }
} else { } else {
/* /*