]> www.infradead.org Git - users/hch/block.git/commitdiff
rbd: increase io_opt again
authorChristoph Hellwig <hch@lst.de>
Fri, 31 May 2024 07:47:58 +0000 (09:47 +0200)
committerJens Axboe <axboe@kernel.dk>
Fri, 14 Jun 2024 16:19:44 +0000 (10:19 -0600)
Commit 16d80c54ad42 ("rbd: set io_min, io_opt and discard_granularity to
alloc_size") lowered the io_opt size for rbd from objset_bytes which is
4MB for typical setup to alloc_size which is typically 64KB.

The commit mostly talks about discard behavior and does mention io_min
in passing.  Reducing io_opt means reducing the readahead size, which
seems counter-intuitive given that rbd currently abuses the user
max_sectors setting to actually increase the I/O size.  Switch back
to the old setting to allow larger reads (the readahead size despite it's
name actually limits the size of any buffered read) and to prepare
for using io_opt in the max_sectors calculation and getting drivers out
of the business of overriding the max_user_sectors value.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20240531074837.1648501-4-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/rbd.c

index 26ff5cd2bf0abc118d5c83cdf733554a3be97e0c..46dc487ccc17eb31809b9f7a04dae34bf3bec46b 100644 (file)
@@ -4955,8 +4955,8 @@ static int rbd_init_disk(struct rbd_device *rbd_dev)
        struct queue_limits lim = {
                .max_hw_sectors         = objset_bytes >> SECTOR_SHIFT,
                .max_user_sectors       = objset_bytes >> SECTOR_SHIFT,
+               .io_opt                 = objset_bytes,
                .io_min                 = rbd_dev->opts->alloc_size,
-               .io_opt                 = rbd_dev->opts->alloc_size,
                .max_segments           = USHRT_MAX,
                .max_segment_size       = UINT_MAX,
        };