blk-merge: fix computing bio->bi_seg_front_size in case of single segment
When bio has only one physical segment, we should set bio's bi_seg_front_size as the real(final) size of the single segment. Fixes: 02e707424c2ea(blk-merge: fix blk_bio_segment_split) Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de> Tested-by: Markus Trippelsdorf <markus@trippelsdorf.de> Signed-off-by: Ming Lei <ming.lei@canonical.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
74cedf9b6c
commit
a88d32af18
1 changed files with 3 additions and 0 deletions
|
@ -103,6 +103,9 @@ static struct bio *blk_bio_segment_split(struct request_queue *q,
|
||||||
bvprv = bv;
|
bvprv = bv;
|
||||||
bvprvp = &bvprv;
|
bvprvp = &bvprv;
|
||||||
sectors += bv.bv_len >> 9;
|
sectors += bv.bv_len >> 9;
|
||||||
|
|
||||||
|
if (nsegs == 1 && seg_size > front_seg_size)
|
||||||
|
front_seg_size = seg_size;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
new_segment:
|
new_segment:
|
||||||
|
|
Loading…
Reference in a new issue