Commit aaeee62c authored by Ming Lei's avatar Ming Lei Committed by Jens Axboe
Browse files

block: fix updating bio's front segment size



When the current bvec can be merged to the 1st segment, the bio's front
segment size has to be updated.

However, dcebd755 doesn't consider that case, then bio's front
segment size may not be correct.

This patch fixes this issue.

Cc: Christoph Hellwig <hch@lst.de>
Cc: Omar Sandoval <osandov@fb.com>
Fixes: dcebd755 ("block: use bio_for_each_bvec() to compute multi-page bvec count")
Signed-off-by: default avatarMing Lei <ming.lei@redhat.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent dfc76d11
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -277,6 +277,9 @@ static struct bio *blk_bio_segment_split(struct request_queue *q,
			bvprvp = &bvprv;
			sectors += bv.bv_len >> 9;

			if (nsegs == 1 && seg_size > front_seg_size)
				front_seg_size = seg_size;

			continue;
		}
new_segment:
@@ -401,6 +404,11 @@ static unsigned int __blk_recalc_rq_segments(struct request_queue *q,

				seg_size += bv.bv_len;
				bvprv = bv;

				if (nr_phys_segs == 1 && seg_size >
						front_seg_size)
					front_seg_size = seg_size;

				continue;
			}
new_segment: