Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

block: remove artifical max_hw_sectors cap

Set max_sectors to the value the drivers provides as hardware limit by
default. Linux had proper I/O throttling for a long time and doesn't
rely on a artifically small maximum I/O size anymore. By not limiting
the I/O size by default we remove an annoying tuning step required for
most Linux installation.

Note that both the user, and if absolutely required the driver can still
impose a limit for FS requests below max_hw_sectors_kb.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@fb.com>

authored by

Christoph Hellwig and committed by
Jens Axboe
34b48db6 c2661b80

+2 -5
+1 -3
block/blk-settings.c
··· 257 257 __func__, max_hw_sectors); 258 258 } 259 259 260 - limits->max_hw_sectors = max_hw_sectors; 261 - limits->max_sectors = min_t(unsigned int, max_hw_sectors, 262 - BLK_DEF_MAX_SECTORS); 260 + limits->max_sectors = limits->max_hw_sectors = max_hw_sectors; 263 261 } 264 262 EXPORT_SYMBOL(blk_limits_max_hw_sectors); 265 263
+1 -1
drivers/block/aoe/aoeblk.c
··· 395 395 WARN_ON(d->flags & DEVFL_TKILL); 396 396 WARN_ON(d->gd); 397 397 WARN_ON(d->flags & DEVFL_UP); 398 - blk_queue_max_hw_sectors(q, BLK_DEF_MAX_SECTORS); 398 + blk_queue_max_hw_sectors(q, 1024); 399 399 q->backing_dev_info.name = "aoe"; 400 400 q->backing_dev_info.ra_pages = READ_AHEAD / PAGE_CACHE_SIZE; 401 401 d->bufpool = mp;
-1
include/linux/blkdev.h
··· 1186 1186 enum blk_default_limits { 1187 1187 BLK_MAX_SEGMENTS = 128, 1188 1188 BLK_SAFE_MAX_SECTORS = 255, 1189 - BLK_DEF_MAX_SECTORS = 1024, 1190 1189 BLK_MAX_SEGMENT_SIZE = 65536, 1191 1190 BLK_SEG_BOUNDARY_MASK = 0xFFFFFFFFUL, 1192 1191 };