blk-merge: recaculate segment if it isn't less than max segments
authorMing Lei <tom.leiming@gmail.com>
Wed, 22 Oct 2014 00:30:30 +0000 (08:30 +0800)
committerJens Axboe <axboe@fb.com>
Wed, 22 Oct 2014 01:00:32 +0000 (19:00 -0600)
commit76d8137a31139f0d69ecc4177497ad6b8d4f016c
tree194c64bc760ff1aff6c21f29b9519725b1c2fc1a
parent432f16e64f50fd4999a476543d04dd52f7a2d753
blk-merge: recaculate segment if it isn't less than max segments

The problem is introduced by commit 764f612c6c3c231b(blk-merge:
don't compute bi_phys_segments from bi_vcnt for cloned bio),
and merge is needed if number of current segment isn't less than
max segments.

Strictly speaking, bio->bi_vcnt shouldn't be used here since
it may not be accurate in cases of both cloned bio or bio cloned
from, but bio_segments() is a bit expensive, and bi_vcnt is still
the biggest number, so the approach should work.

Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
block/blk-merge.c