summary refs log tree commit diff
path: root/block/blk-settings.c
diff options
context:
space:
mode:
authorJeff Moyer <jmoyer@redhat.com>2015-08-13 14:57:56 -0400
committerJens Axboe <axboe@fb.com>2015-08-18 13:21:13 -0700
commit30e2bc08b2bb7c069246feee78f7ed4006e130fe (patch)
tree51526a90f372dca0811c93e0311c5b5301d094be /block/blk-settings.c
parent0048b4837affd153897ed1222283492070027aa9 (diff)
downloadlinux-30e2bc08b2bb7c069246feee78f7ed4006e130fe.tar.gz
Revert "block: remove artifical max_hw_sectors cap"
This reverts commit 34b48db66e08ca1c1bc07cf305d672ac940268dc.
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>
Diffstat (limited to 'block/blk-settings.c')
-rw-r--r--block/blk-settings.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/block/blk-settings.c b/block/blk-settings.c
index 9df73991b231..d27b4e272356 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -236,7 +236,9 @@ void blk_limits_max_hw_sectors(struct queue_limits *limits, unsigned int max_hw_
 		       __func__, max_hw_sectors);
 	}
 
-	limits->max_sectors = limits->max_hw_sectors = max_hw_sectors;
+	limits->max_hw_sectors = max_hw_sectors;
+	limits->max_sectors = min_t(unsigned int, max_hw_sectors,
+				    BLK_DEF_MAX_SECTORS);
 }
 EXPORT_SYMBOL(blk_limits_max_hw_sectors);