• Keith Busch's avatar
    block: split bios to max possible length · e36f6204
    Keith Busch authored
    This splits bio in the middle of a vector to form the largest possible
    bio at the h/w's desired alignment, and guarantees the bio being split
    will have some data.
    The criteria for splitting is changed from the max sectors to the h/w's
    optimal sector alignment if it is provided. For h/w that advertise their
    block storage's underlying chunk size, it's a big performance win to not
    submit commands that cross them. If sector alignment is not provided,
    this patch uses the max sectors as before.
    This addresses the performance issue commit d3805611 attempted to
    fix, but was reverted due to splitting logic error.
    Signed-off-by: default avatarKeith Busch <keith.busch@intel.com>
    Cc: Jens Axboe <axboe@fb.com>
    Cc: Ming Lei <tom.leiming@gmail.com>
    Cc: Kent Overstreet <kent.overstreet@gmail.com>
    Cc: <stable@vger.kernel.org> # 4.4.x-
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
blk-merge.c 18.3 KB