mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
md/raid1,raid10: support narrow_write_error when badblocks is disabled
When badblocks.shift < 0 (badblocks disabled), narrow_write_error() return false, preventing write error handling. Since narrow_write_error() only splits IO into smaller sizes and re-submits, it can work with badblocks disabled. Adjust to use the logical block size for block_sectors when badblocks is disabled, allowing narrow_write_error() to function in this case. Link: https://lore.kernel.org/linux-raid/20260105110300.1442509-4-linan666@huaweicloud.com Signed-off-by: Li Nan <linan122@huawei.com> Reviewed-by: Yu Kuai <yukuai@fnnas.com> Signed-off-by: Yu Kuai <yukuai@fnnas.com>
This commit is contained in:
@@ -2503,17 +2503,17 @@ static bool narrow_write_error(struct r1bio *r1_bio, int i)
|
||||
* We currently own a reference on the rdev.
|
||||
*/
|
||||
|
||||
int block_sectors;
|
||||
int block_sectors, lbs = bdev_logical_block_size(rdev->bdev) >> 9;
|
||||
sector_t sector;
|
||||
int sectors;
|
||||
int sect_to_write = r1_bio->sectors;
|
||||
bool ok = true;
|
||||
|
||||
if (rdev->badblocks.shift < 0)
|
||||
return false;
|
||||
block_sectors = lbs;
|
||||
else
|
||||
block_sectors = roundup(1 << rdev->badblocks.shift, lbs);
|
||||
|
||||
block_sectors = roundup(1 << rdev->badblocks.shift,
|
||||
bdev_logical_block_size(rdev->bdev) >> 9);
|
||||
sector = r1_bio->sector;
|
||||
sectors = ((sector + block_sectors)
|
||||
& ~(sector_t)(block_sectors - 1))
|
||||
|
||||
Reference in New Issue
Block a user