lkml.org 
[lkml]   [2018]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 44/96] rbd: set max_segments to USHRT_MAX
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Ilya Dryomov <idryomov@gmail.com>

    commit 21acdf45f4958135940f0b4767185cf911d4b010 upstream.

    Commit d3834fefcfe5 ("rbd: bump queue_max_segments") bumped
    max_segments (unsigned short) to max_hw_sectors (unsigned int).
    max_hw_sectors is set to the number of 512-byte sectors in an object
    and overflows unsigned short for 32M (largest possible) objects, making
    the block layer resort to handing us single segment (i.e. single page
    or even smaller) bios in that case.

    Fixes: d3834fefcfe5 ("rbd: bump queue_max_segments")
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Alex Elder <elder@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/block/rbd.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/block/rbd.c
    +++ b/drivers/block/rbd.c
    @@ -4511,7 +4511,7 @@ static int rbd_init_disk(struct rbd_devi
    segment_size = rbd_obj_bytes(&rbd_dev->header);
    blk_queue_max_hw_sectors(q, segment_size / SECTOR_SIZE);
    q->limits.max_sectors = queue_max_hw_sectors(q);
    - blk_queue_max_segments(q, segment_size / SECTOR_SIZE);
    + blk_queue_max_segments(q, USHRT_MAX);
    blk_queue_max_segment_size(q, segment_size);
    blk_queue_io_min(q, segment_size);
    blk_queue_io_opt(q, segment_size);

    \
     
     \ /
      Last update: 2018-01-15 14:47    [W:4.514 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site