]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
Revert "block: remove artifical max_hw_sectors cap"
authorJeff Moyer <jmoyer@redhat.com>
Thu, 13 Aug 2015 18:57:56 +0000 (14:57 -0400)
committerChuck Anderson <chuck.anderson@oracle.com>
Fri, 29 Jan 2016 15:12:01 +0000 (07:12 -0800)
Orabug: 22611290

EXT4-fs warning (device dm-X): ext4_end_bio:313: I/O error writing to ino
Below is revert text from mainline:
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>
(cherry picked from commit 30e2bc08b2bb7c069246feee78f7ed4006e130fe)

Signed-off-by: Tariq Saeed <tariq.x.saeed@oracle.com>
block/blk-settings.c
drivers/block/aoe/aoeblk.c
include/linux/blkdev.h

index 12600bfffca93f4547e2325eeda9669ff443a7a7..b160f89557edb580020cd6e66eefbd582fd2adec 100644 (file)
@@ -257,7 +257,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);
 
index 46c282fff104cdbd013780460751c84b79d558bc..dd73e1ff1759c902db1734ac94975abea11e1b02 100644 (file)
@@ -395,7 +395,7 @@ aoeblk_gdalloc(void *vp)
        WARN_ON(d->flags & DEVFL_TKILL);
        WARN_ON(d->gd);
        WARN_ON(d->flags & DEVFL_UP);
-       blk_queue_max_hw_sectors(q, 1024);
+       blk_queue_max_hw_sectors(q, BLK_DEF_MAX_SECTORS);
        q->backing_dev_info.name = "aoe";
        q->backing_dev_info.ra_pages = READ_AHEAD / PAGE_CACHE_SIZE;
        d->bufpool = mp;
index 6724dae25c8f68cbe4dec246b2086ea3a1cc34ee..fa986c9323c841c2e698678e40346545abb4a780 100644 (file)
@@ -1186,6 +1186,7 @@ extern int blk_verify_command(unsigned char *cmd, fmode_t has_write_perm);
 enum blk_default_limits {
        BLK_MAX_SEGMENTS        = 128,
        BLK_SAFE_MAX_SECTORS    = 255,
+       BLK_DEF_MAX_SECTORS     = 1024,
        BLK_MAX_SEGMENT_SIZE    = 65536,
        BLK_SEG_BOUNDARY_MASK   = 0xFFFFFFFFUL,
 };