On Tue, Jun 14 2022 at 5:09P -0400, Christoph Hellwig <hch@xxxxxx> 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@xxxxxx> > --- > 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@xxxxxxxxxx> -- dm-devel mailing list dm-devel@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/dm-devel