diff options
author | Christoph Hellwig <hch@lst.de> | 2023-06-15 08:48:36 +0200 |
---|---|---|
committer | Song Liu <song@kernel.org> | 2023-07-27 00:13:29 -0700 |
commit | 0c3ea5cc8fbdc3515cfb0c47f5a284882f5e4d80 (patch) | |
tree | 486eef8c48aebc6961894144acce3fa9ab286346 /drivers/md | |
parent | 844dc6691ad5f53a624f4b07bf84037abbb8fce2 (diff) | |
download | linux-0c3ea5cc8fbdc3515cfb0c47f5a284882f5e4d80.tar.gz linux-0c3ea5cc8fbdc3515cfb0c47f5a284882f5e4d80.tar.bz2 linux-0c3ea5cc8fbdc3515cfb0c47f5a284882f5e4d80.zip |
md-bitmap: cleanup read_sb_page
Convert read_sb_page to the normal kernel coding style, calculate the
target sector only once, and add a local iosize variable to make the call
to sync_page_io more readable.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20230615064840.629492-8-hch@lst.de
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/md-bitmap.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c index db5725beaefb..c6dd1fa5a0be 100644 --- a/drivers/md/md-bitmap.c +++ b/drivers/md/md-bitmap.c @@ -139,26 +139,25 @@ static void md_bitmap_checkfree(struct bitmap_counts *bitmap, unsigned long page */ /* IO operations when bitmap is stored near all superblocks */ + +/* choose a good rdev and read the page from there */ static int read_sb_page(struct mddev *mddev, loff_t offset, - struct page *page, - unsigned long index, int size) + struct page *page, unsigned long index, int size) { - /* choose a good rdev and read the page from there */ + sector_t sector = offset + index * (PAGE_SIZE / SECTOR_SIZE); struct md_rdev *rdev; - sector_t target; rdev_for_each(rdev, mddev) { - if (! test_bit(In_sync, &rdev->flags) - || test_bit(Faulty, &rdev->flags) - || test_bit(Bitmap_sync, &rdev->flags)) - continue; + u32 iosize = roundup(size, bdev_logical_block_size(rdev->bdev)); - target = offset + index * (PAGE_SIZE/512); + if (!test_bit(In_sync, &rdev->flags) || + test_bit(Faulty, &rdev->flags) || + test_bit(Bitmap_sync, &rdev->flags)) + continue; - if (sync_page_io(rdev, target, - roundup(size, bdev_logical_block_size(rdev->bdev)), - page, REQ_OP_READ, true)) { + if (sync_page_io(rdev, sector, iosize, page, REQ_OP_READ, + true)) { page->index = index; return 0; } |