]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
block: don't reduce max_sectors based on io_opt
authorChristoph Hellwig <hch@lst.de>
Mon, 1 Jul 2024 05:17:51 +0000 (07:17 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 1 Jul 2024 12:52:42 +0000 (06:52 -0600)
Don't reduce the max_sectors value below the normal cap when the driver
advertsizes a very low io_opt.  This restores the behavior we had before
the recent changes to the max_sectors calculation.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Nitesh Shetty <nj.shetty@samsung.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Link: https://lore.kernel.org/r/20240701051800.1245240-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-settings.c

index ff8bbc101fedaa6d1612687abf571474cdc55fb7..9fa4eed4df06b054bf6318acf1a2fc0f6da52c63 100644 (file)
@@ -276,7 +276,7 @@ static int blk_validate_limits(struct queue_limits *lim)
                if (lim->max_user_sectors < PAGE_SIZE / SECTOR_SIZE)
                        return -EINVAL;
                lim->max_sectors = min(max_hw_sectors, lim->max_user_sectors);
-       } else if (lim->io_opt) {
+       } else if (lim->io_opt > (BLK_DEF_MAX_SECTORS_CAP << SECTOR_SHIFT)) {
                lim->max_sectors =
                        min(max_hw_sectors, lim->io_opt >> SECTOR_SHIFT);
        } else if (lim->io_min > (BLK_DEF_MAX_SECTORS_CAP << SECTOR_SHIFT)) {