mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 14:34:13 -04:00
md/raid1: don't wait for Faulty rdev in wait_blocked_rdev()
Faulty rdev should never be accessed anymore, hence there is no point to wait for bad block to be acknowledged in this case while handling write request. Signed-off-by: Yu Kuai <yukuai3@huawei.com> Tested-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> Link: https://lore.kernel.org/r/20241031033114.3845582-6-yukuai1@huaweicloud.com Signed-off-by: Song Liu <song@kernel.org>
This commit is contained in:
@@ -1425,25 +1425,16 @@ static bool wait_blocked_rdev(struct mddev *mddev, struct bio *bio)
|
||||
if (!rdev)
|
||||
continue;
|
||||
|
||||
if (test_bit(Blocked, &rdev->flags)) {
|
||||
if (bio->bi_opf & REQ_NOWAIT)
|
||||
return false;
|
||||
|
||||
mddev_add_trace_msg(rdev->mddev, "raid1 wait rdev %d blocked",
|
||||
rdev->raid_disk);
|
||||
atomic_inc(&rdev->nr_pending);
|
||||
md_wait_for_blocked_rdev(rdev, rdev->mddev);
|
||||
goto retry;
|
||||
}
|
||||
|
||||
/* don't write here until the bad block is acknowledged */
|
||||
if (test_bit(WriteErrorSeen, &rdev->flags) &&
|
||||
rdev_has_badblock(rdev, bio->bi_iter.bi_sector,
|
||||
bio_sectors(bio)) < 0) {
|
||||
bio_sectors(bio)) < 0)
|
||||
set_bit(BlockedBadBlocks, &rdev->flags);
|
||||
|
||||
if (rdev_blocked(rdev)) {
|
||||
if (bio->bi_opf & REQ_NOWAIT)
|
||||
return false;
|
||||
|
||||
set_bit(BlockedBadBlocks, &rdev->flags);
|
||||
mddev_add_trace_msg(rdev->mddev, "raid1 wait rdev %d blocked",
|
||||
rdev->raid_disk);
|
||||
atomic_inc(&rdev->nr_pending);
|
||||
|
||||
Reference in New Issue
Block a user