From: Keith Busch <kbusch@xxxxxxxxxx> Bit buckets get their own vector, so need to allocate enough to hold both the preregistered bvecs and the bit buckets. Signed-off-by: Keith Busch <kbusch@xxxxxxxxxx> --- include/linux/bio.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/linux/bio.h b/include/linux/bio.h index 992ee987f273..ded38accf009 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h @@ -452,6 +452,17 @@ static inline int bio_iov_vecs_to_alloc(struct iov_iter *iter, int max_segs) return iov_iter_npages(iter, max_segs); } +static inline int bio_iov_vecs_to_alloc_partial(struct iov_iter *iter, + int max_segs, bool trunc, + bool skip) +{ + if (skip || trunc) + return min(iov_iter_npages(iter, max_segs) + skip + trunc, + max_segs); + else + return bio_iov_vecs_to_alloc(iter, max_segs); +} + struct request_queue; extern int submit_bio_wait(struct bio *bio); -- 2.30.2