]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - include/linux/bio.h
Disable pristine-tar option in gbp.conf, since there is no pristine-tar branch.
[bcachefs-tools-debian] / include / linux / bio.h
index 206e5baabf896dbfca2ee4750a9445a374370500..1f8acca2c40503c970fe1e5c3c5f255225f52e6a 100644 (file)
@@ -113,40 +113,17 @@ static inline void *bio_data(struct bio *bio)
 
 #define __bio_kunmap_atomic(addr)      kunmap_atomic(addr)
 
-static inline struct bio_vec bio_iter_all_peek(const struct bio *bio,
+static inline struct bio_vec *bio_next_segment(const struct bio *bio,
                                               struct bvec_iter_all *iter)
 {
-       if (WARN_ON(iter->idx >= bio->bi_vcnt))
-               return (struct bio_vec) { NULL };
+       if (iter->idx >= bio->bi_vcnt)
+               return NULL;
 
-       return bvec_iter_all_peek(bio->bi_io_vec, iter);
+       return &bio->bi_io_vec[iter->idx];
 }
 
-static inline void bio_iter_all_advance(const struct bio *bio,
-                                       struct bvec_iter_all *iter,
-                                       unsigned bytes)
-{
-       bvec_iter_all_advance(bio->bi_io_vec, iter, bytes);
-
-       WARN_ON(iter->idx > bio->bi_vcnt ||
-               (iter->idx == bio->bi_vcnt && iter->done));
-}
-
-#define bio_for_each_segment_all_continue(bvl, bio, iter)              \
-       for (;                                                          \
-            iter.idx < bio->bi_vcnt &&                                 \
-               ((bvl = bio_iter_all_peek(bio, &iter)), true);          \
-            bio_iter_all_advance((bio), &iter, bvl.bv_len))
-
-/*
- * drivers should _never_ use the all version - the bio may have been split
- * before it got to the driver and the driver won't own all of it
- */
-#define bio_for_each_segment_all(bvl, bio, iter)                       \
-       for (bvec_iter_all_init(&iter);                                 \
-            iter.idx < (bio)->bi_vcnt &&                               \
-               ((bvl = bio_iter_all_peek((bio), &iter)), true);                \
-            bio_iter_all_advance((bio), &iter, bvl.bv_len))
+#define bio_for_each_segment_all(bvl, bio, iter) \
+       for ((iter).idx = 0; (bvl = bio_next_segment((bio), &(iter))); (iter).idx++)
 
 static inline void bio_advance_iter(struct bio *bio, struct bvec_iter *iter,
                                    unsigned bytes)
@@ -257,7 +234,7 @@ enum {
 };
 
 struct bio *bio_alloc_bioset(struct block_device *, unsigned,
-                            unsigned, gfp_t, struct bio_set *);
+                            blk_opf_t, gfp_t, struct bio_set *);
 extern void bio_put(struct bio *);
 
 int bio_add_page(struct bio *, struct page *, unsigned, unsigned);