• Ilya Dryomov's avatar
    rbd: bump queue_max_segments · d3834fef
    Ilya Dryomov authored
    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: default avatarIlya Dryomov <idryomov@gmail.com>
    Reviewed-by: default avatarAlex Elder <elder@linaro.org>
    d3834fef
rbd.c 146 KB