Lines Matching refs:bio
51 #define bio_prio(bio) ((bio)->bi_rw >> BIO_PRIO_SHIFT) argument
52 #define bio_prio_valid(bio) ioprio_valid(bio_prio(bio)) argument
54 #define bio_set_prio(bio, prio) do { \ argument
56 (bio)->bi_rw &= ((1UL << BIO_PRIO_SHIFT) - 1); \
57 (bio)->bi_rw |= ((unsigned long) (prio) << BIO_PRIO_SHIFT); \
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))
93 #define bio_page(bio) bio_iter_page((bio), (bio)->bi_iter) argument
94 #define bio_offset(bio) bio_iter_offset((bio), (bio)->bi_iter) argument
95 #define bio_iovec(bio) bio_iter_iovec((bio), (bio)->bi_iter) argument
97 #define bio_multiple_segments(bio) \ argument
98 ((bio)->bi_iter.bi_size != bio_iovec(bio).bv_len)
99 #define bio_sectors(bio) ((bio)->bi_iter.bi_size >> 9) argument
100 #define bio_end_sector(bio) ((bio)->bi_iter.bi_sector + bio_sectors((bio))) argument
105 static inline bool bio_has_data(struct bio *bio) in bio_has_data() argument
107 if (bio && in bio_has_data()
108 bio->bi_iter.bi_size && in bio_has_data()
109 !(bio->bi_rw & REQ_DISCARD)) in bio_has_data()
115 static inline bool bio_is_rw(struct bio *bio) in bio_is_rw() argument
117 if (!bio_has_data(bio)) in bio_is_rw()
120 if (bio->bi_rw & BIO_NO_ADVANCE_ITER_MASK) in bio_is_rw()
126 static inline bool bio_mergeable(struct bio *bio) in bio_mergeable() argument
128 if (bio->bi_rw & REQ_NOMERGE_FLAGS) in bio_mergeable()
134 static inline unsigned int bio_cur_bytes(struct bio *bio) in bio_cur_bytes() argument
136 if (bio_has_data(bio)) in bio_cur_bytes()
137 return bio_iovec(bio).bv_len; in bio_cur_bytes()
139 return bio->bi_iter.bi_size; in bio_cur_bytes()
142 static inline void *bio_data(struct bio *bio) in bio_data() argument
144 if (bio_has_data(bio)) in bio_data()
145 return page_address(bio_page(bio)) + bio_offset(bio); in bio_data()
153 #define bio_to_phys(bio) (page_to_phys(bio_page((bio))) + (unsigned long) bio_offset((bio))) argument
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)
198 #define bio_io_error(bio) bio_endio((bio), -EIO) argument
204 #define bio_for_each_segment_all(bvl, bio, i) \ argument
205 for (i = 0, bvl = (bio)->bi_io_vec; i < (bio)->bi_vcnt; i++, bvl++)
234 static inline void bio_advance_iter(struct bio *bio, struct bvec_iter *iter, in bio_advance_iter() argument
239 if (bio->bi_rw & BIO_NO_ADVANCE_ITER_MASK) in bio_advance_iter()
242 bvec_iter_advance(bio->bi_io_vec, iter, bytes); in bio_advance_iter()
245 #define __bio_for_each_segment(bvl, bio, iter, start) \ argument
248 ((bvl = bio_iter_iovec((bio), (iter))), 1); \
249 bio_advance_iter((bio), &(iter), (bvl).bv_len))
251 #define bio_for_each_segment(bvl, bio, iter) \ argument
252 __bio_for_each_segment(bvl, bio, iter, (bio)->bi_iter)
256 static inline unsigned bio_segments(struct bio *bio) in bio_segments() argument
267 if (bio->bi_rw & REQ_DISCARD) in bio_segments()
270 if (bio->bi_rw & REQ_WRITE_SAME) in bio_segments()
273 bio_for_each_segment(bv, bio, iter) in bio_segments()
293 #define bio_get(bio) atomic_inc(&(bio)->bi_cnt) argument
305 static inline struct bio_integrity_payload *bio_integrity(struct bio *bio) in bio_integrity() argument
307 if (bio->bi_rw & REQ_INTEGRITY) in bio_integrity()
308 return bio->bi_integrity; in bio_integrity()
317 struct bio *bip_bio; /* parent bio */
334 static inline bool bio_integrity_flagged(struct bio *bio, enum bip_flags flag) in bio_integrity_flagged() argument
336 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_flagged()
357 extern void bio_trim(struct bio *bio, int offset, int size);
358 extern struct bio *bio_split(struct bio *bio, int sectors,
371 static inline struct bio *bio_next_split(struct bio *bio, int sectors, in bio_next_split() argument
374 if (sectors >= bio_sectors(bio)) in bio_next_split()
375 return bio; in bio_next_split()
377 return bio_split(bio, sectors, gfp, bs); in bio_next_split()
385 extern struct bio *bio_alloc_bioset(gfp_t, int, struct bio_set *);
386 extern void bio_put(struct bio *);
388 extern void __bio_clone_fast(struct bio *, struct bio *);
389 extern struct bio *bio_clone_fast(struct bio *, gfp_t, struct bio_set *);
390 extern struct bio *bio_clone_bioset(struct bio *, gfp_t, struct bio_set *bs);
394 static inline struct bio *bio_alloc(gfp_t gfp_mask, unsigned int nr_iovecs) in bio_alloc()
399 static inline struct bio *bio_clone(struct bio *bio, gfp_t gfp_mask) in bio_clone() argument
401 return bio_clone_bioset(bio, gfp_mask, fs_bio_set); in bio_clone()
404 static inline struct bio *bio_kmalloc(gfp_t gfp_mask, unsigned int nr_iovecs) in bio_kmalloc()
409 static inline struct bio *bio_clone_kmalloc(struct bio *bio, gfp_t gfp_mask) in bio_clone_kmalloc() argument
411 return bio_clone_bioset(bio, gfp_mask, NULL); in bio_clone_kmalloc()
415 extern void bio_endio(struct bio *, int);
416 extern void bio_endio_nodec(struct bio *, int);
418 extern int bio_phys_segments(struct request_queue *, struct bio *);
420 extern int submit_bio_wait(int rw, struct bio *bio);
421 extern void bio_advance(struct bio *, unsigned);
423 extern void bio_init(struct bio *);
424 extern void bio_reset(struct bio *);
425 void bio_chain(struct bio *, struct bio *);
427 extern int bio_add_page(struct bio *, struct page *, unsigned int,unsigned int);
428 extern int bio_add_pc_page(struct request_queue *, struct bio *, struct page *,
432 extern struct bio *bio_map_user_iov(struct request_queue *,
434 extern void bio_unmap_user(struct bio *);
435 extern struct bio *bio_map_kern(struct request_queue *, void *, unsigned int,
437 extern struct bio *bio_copy_kern(struct request_queue *, void *, unsigned int,
439 extern void bio_set_pages_dirty(struct bio *bio);
440 extern void bio_check_pages_dirty(struct bio *bio);
451 extern void bio_flush_dcache_pages(struct bio *bi);
453 static inline void bio_flush_dcache_pages(struct bio *bi) in bio_flush_dcache_pages()
458 extern void bio_copy_data(struct bio *dst, struct bio *src);
459 extern int bio_alloc_pages(struct bio *bio, gfp_t gfp);
461 extern struct bio *bio_copy_user_iov(struct request_queue *,
465 extern int bio_uncopy_user(struct bio *);
466 void zero_fill_bio(struct bio *bio);
472 int bio_associate_current(struct bio *bio);
473 void bio_disassociate_task(struct bio *bio);
475 static inline int bio_associate_current(struct bio *bio) { return -ENOENT; } in bio_associate_current() argument
476 static inline void bio_disassociate_task(struct bio *bio) { } in bio_disassociate_task() argument
520 static inline char *__bio_kmap_irq(struct bio *bio, struct bvec_iter iter, in __bio_kmap_irq() argument
523 return bvec_kmap_irq(&bio_iter_iovec(bio, iter), flags); in __bio_kmap_irq()
527 #define bio_kmap_irq(bio, flags) \ argument
528 __bio_kmap_irq((bio), (bio)->bi_iter, (flags))
539 struct bio *head;
540 struct bio *tail;
555 #define bio_list_for_each(bio, bl) \ argument
556 for (bio = (bl)->head; bio; bio = bio->bi_next)
561 struct bio *bio; in bio_list_size() local
563 bio_list_for_each(bio, bl) in bio_list_size()
569 static inline void bio_list_add(struct bio_list *bl, struct bio *bio) in bio_list_add() argument
571 bio->bi_next = NULL; in bio_list_add()
574 bl->tail->bi_next = bio; in bio_list_add()
576 bl->head = bio; in bio_list_add()
578 bl->tail = bio; in bio_list_add()
581 static inline void bio_list_add_head(struct bio_list *bl, struct bio *bio) in bio_list_add_head() argument
583 bio->bi_next = bl->head; in bio_list_add_head()
585 bl->head = bio; in bio_list_add_head()
588 bl->tail = bio; in bio_list_add_head()
618 static inline struct bio *bio_list_peek(struct bio_list *bl) in bio_list_peek()
623 static inline struct bio *bio_list_pop(struct bio_list *bl) in bio_list_pop()
625 struct bio *bio = bl->head; in bio_list_pop() local
627 if (bio) { in bio_list_pop()
632 bio->bi_next = NULL; in bio_list_pop()
635 return bio; in bio_list_pop()
638 static inline struct bio *bio_list_get(struct bio_list *bl) in bio_list_get()
640 struct bio *bio = bl->head; in bio_list_get() local
644 return bio; in bio_list_get()
699 extern struct bio_integrity_payload *bio_integrity_alloc(struct bio *, gfp_t, unsigned int);
700 extern void bio_integrity_free(struct bio *);
701 extern int bio_integrity_add_page(struct bio *, struct page *, unsigned int, unsigned int);
702 extern bool bio_integrity_enabled(struct bio *bio);
703 extern int bio_integrity_prep(struct bio *);
704 extern void bio_integrity_endio(struct bio *, int);
705 extern void bio_integrity_advance(struct bio *, unsigned int);
706 extern void bio_integrity_trim(struct bio *, unsigned int, unsigned int);
707 extern int bio_integrity_clone(struct bio *, struct bio *, gfp_t);
714 static inline void *bio_integrity(struct bio *bio) in bio_integrity() argument
719 static inline bool bio_integrity_enabled(struct bio *bio) in bio_integrity_enabled() argument
734 static inline int bio_integrity_prep(struct bio *bio) in bio_integrity_prep() argument
739 static inline void bio_integrity_free(struct bio *bio) in bio_integrity_free() argument
744 static inline int bio_integrity_clone(struct bio *bio, struct bio *bio_src, in bio_integrity_clone() argument
750 static inline void bio_integrity_advance(struct bio *bio, in bio_integrity_advance() argument
756 static inline void bio_integrity_trim(struct bio *bio, unsigned int offset, in bio_integrity_trim() argument
767 static inline bool bio_integrity_flagged(struct bio *bio, enum bip_flags flag) in bio_integrity_flagged() argument