md/raid10: fix any_working flag handling in raid10_sync_request
[ Upstream commit 99582edb3f62e8ee6c34512021368f53f9b091f2 ]
In raid10_sync_request(), 'any_working' indicates if any IO will
be submitted. When there's only one In_sync disk with badblocks,
'any_working' might be set to 1 but no IO is submitted. Fix it by
setting 'any_working' after badblock checks.
Link: https://lore.kernel.org/linux-raid/20260105110300.1442509-11-linan666@huaweicloud.com
Fixes: e875ecea26 ("md/raid10 record bad blocks as needed during recovery.")
Signed-off-by: Li Nan <linan122@huawei.com>
Reviewed-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Yu Kuai <yukuai@fnnas.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Ulrich Hecht <uli@kernel.org>
This commit is contained in:
1 parent
d3808c5bd9
commit
e35d00e3f5
1 file changed
+1
-1
+1
-1
@@ -3201,7 +3201,6 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr,
|
||||
!test_bit(In_sync, &rdev->flags))
|
||||
continue;
|
||||
/* This is where we read from */
|
||||
any_working = 1;
|
||||
sector = r10_bio->devs[j].addr;
|
||||
|
||||
if (is_badblock(rdev, sector, max_sync,
|
||||
@@ -3216,6 +3215,7 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr,
|
||||
continue;
|
||||
}
|
||||
}
|
||||
any_working = 1;
|
||||
bio = r10_bio->devs[0].bio;
|
||||
bio->bi_next = biolist;
|
||||
biolist = bio;
|
||||
|
||||
Reference in new issue
Block a user