Lines Matching refs:iter
64 #define __bvec_iter_bvec(bvec, iter) (&(bvec)[(iter).bi_idx]) argument
66 #define bvec_iter_page(bvec, iter) \ argument
67 (__bvec_iter_bvec((bvec), (iter))->bv_page)
69 #define bvec_iter_len(bvec, iter) \ argument
70 min((iter).bi_size, \
71 __bvec_iter_bvec((bvec), (iter))->bv_len - (iter).bi_bvec_done)
73 #define bvec_iter_offset(bvec, iter) \ argument
74 (__bvec_iter_bvec((bvec), (iter))->bv_offset + (iter).bi_bvec_done)
76 #define bvec_iter_bvec(bvec, iter) \ argument
78 .bv_page = bvec_iter_page((bvec), (iter)), \
79 .bv_len = bvec_iter_len((bvec), (iter)), \
80 .bv_offset = bvec_iter_offset((bvec), (iter)), \
83 #define bio_iter_iovec(bio, iter) \ argument
84 bvec_iter_bvec((bio)->bi_io_vec, (iter))
86 #define bio_iter_page(bio, iter) \ argument
87 bvec_iter_page((bio)->bi_io_vec, (iter))
88 #define bio_iter_len(bio, iter) \ argument
89 bvec_iter_len((bio)->bi_io_vec, (iter))
90 #define bio_iter_offset(bio, iter) \ argument
91 bvec_iter_offset((bio)->bi_io_vec, (iter))
162 #define __bio_kmap_atomic(bio, iter) \ argument
163 (kmap_atomic(bio_iter_iovec((bio), (iter)).bv_page) + \
164 bio_iter_iovec((bio), (iter)).bv_offset)
196 static inline void bvec_iter_advance(struct bio_vec *bv, struct bvec_iter *iter, in bvec_iter_advance() argument
199 WARN_ONCE(bytes > iter->bi_size, in bvec_iter_advance()
203 unsigned len = min(bytes, bvec_iter_len(bv, *iter)); in bvec_iter_advance()
206 iter->bi_size -= len; in bvec_iter_advance()
207 iter->bi_bvec_done += len; in bvec_iter_advance()
209 if (iter->bi_bvec_done == __bvec_iter_bvec(bv, *iter)->bv_len) { in bvec_iter_advance()
210 iter->bi_bvec_done = 0; in bvec_iter_advance()
211 iter->bi_idx++; in bvec_iter_advance()
216 #define for_each_bvec(bvl, bio_vec, iter, start) \ argument
217 for (iter = (start); \
218 (iter).bi_size && \
219 ((bvl = bvec_iter_bvec((bio_vec), (iter))), 1); \
220 bvec_iter_advance((bio_vec), &(iter), (bvl).bv_len))
223 static inline void bio_advance_iter(struct bio *bio, struct bvec_iter *iter, in bio_advance_iter() argument
226 iter->bi_sector += bytes >> 9; in bio_advance_iter()
229 iter->bi_size -= bytes; in bio_advance_iter()
231 bvec_iter_advance(bio->bi_io_vec, iter, bytes); in bio_advance_iter()
234 #define __bio_for_each_segment(bvl, bio, iter, start) \ argument
235 for (iter = (start); \
236 (iter).bi_size && \
237 ((bvl = bio_iter_iovec((bio), (iter))), 1); \
238 bio_advance_iter((bio), &(iter), (bvl).bv_len))
240 #define bio_for_each_segment(bvl, bio, iter) \ argument
241 __bio_for_each_segment(bvl, bio, iter, (bio)->bi_iter)
243 #define bio_iter_last(bvec, iter) ((iter).bi_size == (bvec).bv_len) argument
249 struct bvec_iter iter; in bio_segments() local
262 bio_for_each_segment(bv, bio, iter) in bio_segments()
320 struct bvec_iter iter = bio->bi_iter; in bio_get_last_bvec() local
328 bio_advance_iter(bio, &iter, iter.bi_size); in bio_get_last_bvec()
330 if (!iter.bi_bvec_done) in bio_get_last_bvec()
331 idx = iter.bi_idx - 1; in bio_get_last_bvec()
333 idx = iter.bi_idx; in bio_get_last_bvec()
341 if (iter.bi_bvec_done) in bio_get_last_bvec()
342 bv->bv_len = iter.bi_bvec_done; in bio_get_last_bvec()
578 static inline char *__bio_kmap_irq(struct bio *bio, struct bvec_iter iter, in __bio_kmap_irq() argument
581 return bvec_kmap_irq(&bio_iter_iovec(bio, iter), flags); in __bio_kmap_irq()
750 #define bip_for_each_vec(bvl, bip, iter) \ argument
751 for_each_bvec(bvl, (bip)->bip_vec, iter, (bip)->bip_iter)