Skip to content

Commit 30e2bc0

Browse files
JeffMoyeraxboe
authored andcommitted
Revert "block: remove artifical max_hw_sectors cap"
This reverts commit 34b48db. That commit caused performance regressions for streaming I/O workloads on a number of different storage devices, from SATA disks to external RAID arrays. It also managed to trip up some buggy firmware in at least one drive, causing data corruption. The next patch will bump the default max_sectors_kb value to 1280, which will accommodate a 10-data-disk stripe write with chunk size 128k. In the testing I've done using iozone, fio, and aio-stress, a value of 1280 does not show a big performance difference from 512. This will hopefully still help the software RAID setup that Christoph saw the original performance gains with while still not regressing other storage configurations. Signed-off-by: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Jens Axboe <axboe@fb.com>
1 parent 0048b48 commit 30e2bc0

File tree

3 files changed

+5
-2
lines changed

3 files changed

+5
-2
lines changed

block/blk-settings.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,9 @@ void blk_limits_max_hw_sectors(struct queue_limits *limits, unsigned int max_hw_
236236
__func__, max_hw_sectors);
237237
}
238238

239-
limits->max_sectors = limits->max_hw_sectors = max_hw_sectors;
239+
limits->max_hw_sectors = max_hw_sectors;
240+
limits->max_sectors = min_t(unsigned int, max_hw_sectors,
241+
BLK_DEF_MAX_SECTORS);
240242
}
241243
EXPORT_SYMBOL(blk_limits_max_hw_sectors);
242244

drivers/block/aoe/aoeblk.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ aoeblk_gdalloc(void *vp)
395395
WARN_ON(d->flags & DEVFL_TKILL);
396396
WARN_ON(d->gd);
397397
WARN_ON(d->flags & DEVFL_UP);
398-
blk_queue_max_hw_sectors(q, 1024);
398+
blk_queue_max_hw_sectors(q, BLK_DEF_MAX_SECTORS);
399399
q->backing_dev_info.name = "aoe";
400400
q->backing_dev_info.ra_pages = READ_AHEAD / PAGE_CACHE_SIZE;
401401
d->bufpool = mp;

include/linux/blkdev.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,7 @@ extern int blk_verify_command(unsigned char *cmd, fmode_t has_write_perm);
11321132
enum blk_default_limits {
11331133
BLK_MAX_SEGMENTS = 128,
11341134
BLK_SAFE_MAX_SECTORS = 255,
1135+
BLK_DEF_MAX_SECTORS = 1024,
11351136
BLK_MAX_SEGMENT_SIZE = 65536,
11361137
BLK_SEG_BOUNDARY_MASK = 0xFFFFFFFFUL,
11371138
};

0 commit comments

Comments
 (0)