[dm-devel] [PATCH 2/6] dm: open code blk_max_size_offset in max_io_len
Mike Snitzer
snitzer at kernel.org
Thu Jun 16 23:21:17 UTC 2022
On Tue, Jun 14 2022 at 5:09P -0400,
Christoph Hellwig <hch at lst.de> wrote:
> max_io_len always passes an explicitly non-zero chunk_sectors into
> blk_max_size_offset. That means much of blk_max_size_offset is not
> needed and can be open coded to simplify the code.
>
> Signed-off-by: Christoph Hellwig <hch at lst.de>
> ---
> drivers/md/dm.c | 17 ++++++-----------
> 1 file changed, 6 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/md/dm.c b/drivers/md/dm.c
> index d8f16183bf27c..0514358a1f8e5 100644
> --- a/drivers/md/dm.c
> +++ b/drivers/md/dm.c
> @@ -1079,23 +1079,18 @@ 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;
>
> /*
> * 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 min_t(sector_t, len,
> + min(queue_max_sectors(ti->table->md->queue),
> + blk_chunk_sectors_left(target_offset, ti->max_io_len)));
> }
>
> int dm_set_target_max_io_len(struct dm_target *ti, sector_t len)
> --
> 2.30.2
>
Not in love with the nested min() but don't have a better suggestion.
Reviewed-by: Mike Snitzer <snitzer at kernel.org>
More information about the dm-devel
mailing list