]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
block: don't use bio->bi_vcnt to figure out segment number
authorMing Lei <ming.lei@redhat.com>
Fri, 15 Feb 2019 11:13:08 +0000 (19:13 +0800)
committerKhalid Elmously <khalid.elmously@canonical.com>
Fri, 14 Feb 2020 05:29:37 +0000 (00:29 -0500)
commit155d33d14b1cb6466f9a2838eace4fee335b4e84
tree1daf5deb80eecc43154efa8d0565168afb2ebf27
parent409a4065f0ba1806d058ff1c201619cdfb4d18c4
block: don't use bio->bi_vcnt to figure out segment number

BugLink: https://bugs.launchpad.net/bugs/1863019
[ Upstream commit 1a67356e9a4829da2935dd338630a550c59c8489 ]

It is wrong to use bio->bi_vcnt to figure out how many segments
there are in the bio even though CLONED flag isn't set on this bio,
because this bio may be splitted or advanced.

So always use bio_segments() in blk_recount_segments(), and it shouldn't
cause any performance loss now because the physical segment number is figured
out in blk_queue_split() and BIO_SEG_VALID is set meantime since
bdced438acd83ad83a6c ("block: setup bi_phys_segments after splitting").

Reviewed-by: Omar Sandoval <osandov@fb.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Fixes: 76d8137a3113 ("blk-merge: recaculate segment if it isn't less than max segments")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
block/blk-merge.c