]> www.infradead.org Git - users/hch/block.git/commitdiff
dm: open code blk_max_size_offset in max_io_len
authorChristoph Hellwig <hch@lst.de>
Fri, 10 Sep 2021 09:32:15 +0000 (11:32 +0200)
committerChristoph Hellwig <hch@lst.de>
Tue, 14 Jun 2022 06:09:24 +0000 (08:09 +0200)
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@lst.de>
drivers/md/dm.c

index d8f16183bf27ce9f4478e814da6f2cb91fe82b6d..0514358a1f8e53e2d5537ee9aaa89c272ddf4b9b 100644 (file)
@@ -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)