[dm-devel] [PATCH 2/5] dm: open code blk_max_size_offset in max_io_len
Christoph Hellwig
hch at lst.de
Tue Oct 12 16:36:10 UTC 2021
max_io_len always passed in an explicit, non-zero chunk_sectors into
blk_max_size_offset. That means much of blk_max_size_offset is not needed
and open coding it simplifies the code.
Signed-off-by: Christoph Hellwig <hch at lst.de>
---
drivers/md/dm.c | 18 ++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index a011d09cb0fac..0b6dfe8667438 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -944,24 +944,18 @@ static inline sector_t max_io_len_target_boundary(struct dm_target *ti,
static sector_t max_io_len(struct dm_target *ti, sector_t sector)
{
sector_t target_offset = dm_target_offset(ti, sector);
- sector_t len = max_io_len_target_boundary(ti, target_offset);
- sector_t max_len;
+ unsigned int len = max_io_len_target_boundary(ti, target_offset);
/*
* Does the target need to split IO even further?
* - varied (per target) IO splitting is a tenet of DM; this
* explains why stacked chunk_sectors based splitting via
- * blk_max_size_offset() isn't possible here. So pass in
- * ti->max_io_len to override stacked chunk_sectors.
+ * blk_queue_split() isn't possible here.
*/
- if (ti->max_io_len) {
- max_len = blk_max_size_offset(ti->table->md->queue,
- target_offset, ti->max_io_len);
- if (len > max_len)
- len = max_len;
- }
-
- return len;
+ if (!ti->max_io_len)
+ return len;
+ return min3(len, ti->table->md->queue->limits.max_sectors,
+ chunk_size_left(target_offset, ti->max_io_len));
}
int dm_set_target_max_io_len(struct dm_target *ti, sector_t len)
--
2.30.2
More information about the dm-devel
mailing list