block: add for_each_mp_bvec()
authorMing Lei <ming.lei@redhat.com>
Tue, 25 Mar 2025 13:51:51 +0000 (21:51 +0800)
committerJens Axboe <axboe@kernel.dk>
Wed, 2 Apr 2025 13:06:59 +0000 (07:06 -0600)
Add helper of for_each_mp_bvec() for io_uring to import fixed kernel
buffer.

Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20250325135155.935398-3-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/bvec.h

index ba8f52d48b944535a9717864de46f35aa3879d06..204b22a99c4ba61b592dcf38b3adabf3a0b50584 100644 (file)
@@ -184,6 +184,12 @@ static inline void bvec_iter_advance_single(const struct bio_vec *bv,
                ((bvl = bvec_iter_bvec((bio_vec), (iter))), 1); \
             bvec_iter_advance_single((bio_vec), &(iter), (bvl).bv_len))
 
+#define for_each_mp_bvec(bvl, bio_vec, iter, start)                    \
+       for (iter = (start);                                            \
+            (iter).bi_size &&                                          \
+               ((bvl = mp_bvec_iter_bvec((bio_vec), (iter))), 1);      \
+            bvec_iter_advance_single((bio_vec), &(iter), (bvl).bv_len))
+
 /* for iterating one bio from start to end */
 #define BVEC_ITER_ALL_INIT (struct bvec_iter)                          \
 {                                                                      \