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,hifive-unleashed-5.1dcebd75592
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:dcebd75592
("block: use bio_for_each_bvec() to compute multi-page bvec count") Signed-off-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
parent
dfc76d11dd
commit
aaeee62c84
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue