[PATCH 2/3] md/raid1-10: add rdev_bb_block_sectors() helper
"Li Youhong" <[email protected]>
| Newsgroups | gmane.linux.raid |
|---|---|
| Message-ID | <[email protected]> |
From: Li Youhong <[email protected]> raid1 and raid10 narrow_write_error() use the same logic to compute the badblocks-aligned block size. Factor it into an inline helper in raid1-10.c. No functional change. Signed-off-by: Li Youhong <[email protected]> --- drivers/md/raid1-10.c | 10 ++++++++++ drivers/md/raid1.c | 7 +------ drivers/md/raid10.c | 7 +------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/md/raid1-10.c b/drivers/md/raid1-10.c index 3b0e230692ba..c7ddf136771d 100644 --- a/drivers/md/raid1-10.c +++ b/drivers/md/raid1-10.c @@ -155,6 +155,16 @@ static inline bool raid1_add_bio_to_plug(struct mddev *mddev, struct bio *bio, return true; } +/* Block size used when narrowing a write error down to badblocks granularity. */ +static inline int rdev_bb_block_sectors(struct md_rdev *rdev) +{ + int lbs = bdev_logical_block_size(rdev->bdev) >> 9; + + if (rdev->badblocks.shift < 0) + return lbs; + return roundup(1 << rdev->badblocks.shift, lbs); +} + /* * current->bio_list will be set under submit_bio() context, in this case bitmap * io will be added to the list and wait for current io submission to finish, diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 9d8441348f14..8a40c69d70a3 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -2465,16 +2465,11 @@ static void narrow_write_error(struct r1bio *r1_bio, int i) * We currently own a reference on the rdev. */ - int block_sectors, lbs = bdev_logical_block_size(rdev->bdev) >> 9; + int block_sectors = rdev_bb_block_sectors(rdev); sector_t sector; int sectors; int sect_to_write = r1_bio->sectors; - if (rdev->badblocks.shift < 0) - block_sectors = lbs; - else - block_sectors = roundup(1 << rdev->badblocks.shift, lbs); - sector = r1_bio->sector; sectors = ((sector + block_sectors) & ~(sector_t)(block_sectors - 1)) diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index c4218d6483ed..5b1dbb0b7f5a 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -2762,16 +2762,11 @@ static void narrow_write_error(struct r10bio *r10_bio, int i) * We currently own a reference to the rdev. */ - int block_sectors, lbs = bdev_logical_block_size(rdev->bdev) >> 9; + int block_sectors = rdev_bb_block_sectors(rdev); sector_t sector; int sectors; int sect_to_write = r10_bio->sectors; - if (rdev->badblocks.shift < 0) - block_sectors = lbs; - else - block_sectors = roundup(1 << rdev->badblocks.shift, lbs); - sector = r10_bio->sector; sectors = ((r10_bio->sector + block_sectors) & ~(sector_t)(block_sectors - 1)) -- 2.25.1