Commit Message

First it is more efficient to use bio_for_each_mp_bvec() in both
blk_bio_segment_split() and __blk_recalc_rq_segments() to compute how
many multi-page bvecs there are in the bio.
Secondly once bio_for_each_mp_bvec() is used, the bvec may need to be
splitted because its length can be very longer than max segment size,
so we have to split the big bvec into several segments.
Thirdly when splitting multi-page bvec into segments, the max segment
limit may be reached, so the bio split need to be considered under
this situation too.
Reviewed-by: Christoph Hellwig <hch@lst.de>Reviewed-by: Omar Sandoval <osandov@fb.com>Signed-off-by: Ming Lei <ming.lei@redhat.com>
---
block/blk-merge.c | 103 +++++++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 83 insertions(+), 20 deletions(-)