rbd: bump queue_max_segments
authorIlya Dryomov <idryomov@gmail.com>
Fri, 12 Jun 2015 16:19:02 +0000 (19:19 +0300)
committerIlya Dryomov <idryomov@gmail.com>
Thu, 25 Jun 2015 15:30:49 +0000 (18:30 +0300)
commitd3834fefcfe5610702379d78596337875df2db5b
treea2bd9206d624107073692213dfd5cd82a6a213d2
parentfdd4e15838e59c394a1ec4963b57c22c12608685
rbd: bump queue_max_segments

The default queue_limits::max_segments value (BLK_MAX_SEGMENTS = 128)
unnecessarily limits bio sizes to 512k (assuming 4k pages).  rbd, being
a virtual block device, doesn't have any restrictions on the number of
physical segments, so bump max_segments to max_hw_sectors, in theory
allowing a sector per segment (although the only case this matters that
I can think of is some readv/writev style thing).  In practice this is
going to give us 1M bios - the number of segments in a bio is limited
in bio_get_nr_vecs() by BIO_MAX_PAGES = 256.

Note that this doesn't result in any improvement on a typical direct
sequential test.  This is because on a box with a not too badly
fragmented memory the default BLK_MAX_SEGMENTS is enough to see nice
rbd object size sized requests.  The only difference is the size of
bios being merged - 512k vs 1M for something like

    $ dd if=/dev/zero of=/dev/rbd0 oflag=direct bs=$RBD_OBJ_SIZE
    $ dd if=/dev/rbd0 iflag=direct of=/dev/null bs=$RBD_OBJ_SIZE

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Alex Elder <elder@linaro.org>
drivers/block/rbd.c