mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-29 09:12:07 +00:00
bvec/iter: disallow zero-length segment bvecs
zero-length bvec segments are allowed in general, but not handled by bio and down the block layer so filtered out. This inconsistency may be confusing and prevent from optimisations. As zero-length segments are useless and places that were generating them are patched, declare them not allowed. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Reviewed-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
0f1d344feb
commit
9b2e0016d0
@ -40,6 +40,8 @@ normal code doesn't have to deal with bi_bvec_done.
|
||||
There is a lower level advance function - bvec_iter_advance() - which takes
|
||||
a pointer to a biovec, not a bio; this is used by the bio integrity code.
|
||||
|
||||
As of 5.12 bvec segments with zero bv_len are not supported.
|
||||
|
||||
What's all this get us?
|
||||
=======================
|
||||
|
||||
|
@ -865,3 +865,10 @@ no matter what. Everything is handled by the caller.
|
||||
|
||||
clone_private_mount() returns a longterm mount now, so the proper destructor of
|
||||
its result is kern_unmount() or kern_unmount_array().
|
||||
|
||||
---
|
||||
|
||||
**mandatory**
|
||||
|
||||
zero-length bvec segments are disallowed, they must be filtered out before
|
||||
passed on to an iterator.
|
||||
|
@ -72,8 +72,6 @@
|
||||
__start.bi_bvec_done = skip; \
|
||||
__start.bi_idx = 0; \
|
||||
for_each_bvec(__v, i->bvec, __bi, __start) { \
|
||||
if (!__v.bv_len) \
|
||||
continue; \
|
||||
(void)(STEP); \
|
||||
} \
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user