Home
last modified time | relevance | path

Searched refs:bio (Results 1 – 25 of 256) sorted by relevance

1234567891011

/linux/include/linux/
H A Dbio.h23 #define bio_iter_iovec(bio, iter) \ argument
24 bvec_iter_bvec((bio)->bi_io_vec, (iter))
26 #define bio_iter_page(bio, iter) \ argument
27 bvec_iter_page((bio)->bi_io_vec, (iter))
28 #define bio_iter_len(bio, iter) \ argument
29 bvec_iter_len((bio)->bi_io_vec, (iter))
30 #define bio_iter_offset(bio, iter) \ argument
31 bvec_iter_offset((bio)->bi_io_vec, (iter))
33 #define bio_page(bio) bio_iter_page((bio), (bio)->bi_iter) argument
34 #define bio_offset(bio) bio_iter_offset((bio), (bio)->bi_iter) argument
[all …]
H A Dbio-integrity.h46 static inline struct bio_integrity_payload *bio_integrity(struct bio *bio) in bio_integrity() argument
48 if (bio->bi_opf & REQ_INTEGRITY) in bio_integrity()
49 return bio->bi_integrity; in bio_integrity()
54 static inline bool bio_integrity_flagged(struct bio *bio, enum bip_flags flag) in bio_integrity_flagged() argument
56 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_flagged()
75 void bio_integrity_init(struct bio *bio, struct bio_integrity_payload *bip,
77 struct bio_integrity_payload *bio_integrity_alloc(struct bio *bio, gfp_t gfp,
79 int bio_integrity_add_page(struct bio *bio, struct page *page, unsigned int len,
81 int bio_integrity_map_user(struct bio *bio, struct iov_iter *iter);
82 int bio_integrity_map_iter(struct bio *bio, struct uio_meta *meta);
[all …]
/linux/block/
H A Dbio.c32 struct bio *free_list;
33 struct bio *free_list_irq;
117 return bs->front_pad + sizeof(struct bio) + bs->back_pad; in bs_bio_slab_size()
120 static inline void *bio_slab_addr(struct bio *bio) in bio_slab_addr() argument
122 return (void *)bio - bio->bi_pool->front_pad; in bio_slab_addr()
180 void bio_uninit(struct bio *bio) in bio_uninit() argument
183 if (bio->bi_blkg) { in bio_uninit()
184 blkg_put(bio->bi_blkg); in bio_uninit()
185 bio->bi_blkg = NULL; in bio_uninit()
188 if (bio_integrity(bio)) in bio_uninit()
[all …]
H A Dblk-merge.c20 static inline void bio_get_first_bvec(struct bio *bio, struct bio_vec *bv) in bio_get_first_bvec() argument
22 *bv = mp_bvec_iter_bvec(bio->bi_io_vec, bio->bi_iter); in bio_get_first_bvec()
25 static inline void bio_get_last_bvec(struct bio *bio, struct bio_vec *bv) in bio_get_last_bvec() argument
27 struct bvec_iter iter = bio->bi_iter; in bio_get_last_bvec()
30 bio_get_first_bvec(bio, bv); in bio_get_last_bvec()
31 if (bv->bv_len == bio->bi_iter.bi_size) in bio_get_last_bvec()
34 bio_advance_iter(bio, &iter, iter.bi_size); in bio_get_last_bvec()
41 *bv = bio->bi_io_vec[idx]; in bio_get_last_bvec()
52 struct request *prev_rq, struct bio *prev, struct bio *next) in bio_will_gap()
65 bio_get_first_bvec(prev_rq->bio, &pb); in bio_will_gap()
[all …]
H A Dblk-map.c40 static inline void blk_mq_map_bio_put(struct bio *bio) in blk_mq_map_bio_put() argument
42 bio_put(bio); in blk_mq_map_bio_put()
45 static struct bio *blk_rq_map_bio_alloc(struct request *rq, in blk_rq_map_bio_alloc()
49 struct bio *bio; in blk_rq_map_bio_alloc() local
51 bio = bio_alloc_bioset(bdev, nr_vecs, rq->cmd_flags, gfp_mask, in blk_rq_map_bio_alloc()
53 if (!bio) in blk_rq_map_bio_alloc()
56 return bio; in blk_rq_map_bio_alloc()
67 static int bio_copy_from_iter(struct bio *bio, struct iov_iter *iter) in bio_copy_from_iter() argument
72 bio_for_each_segment_all(bvec, bio, iter_all) { in bio_copy_from_iter()
98 static int bio_copy_to_iter(struct bio *bio, struct iov_iter iter) in bio_copy_to_iter() argument
[all …]
H A Dblk-core.c376 int __bio_queue_enter(struct request_queue *q, struct bio *bio) in __bio_queue_enter() argument
379 struct gendisk *disk = bio->bi_bdev->bd_disk; in __bio_queue_enter()
381 if (bio->bi_opf & REQ_NOWAIT) { in __bio_queue_enter()
384 bio_wouldblock_error(bio); in __bio_queue_enter()
408 bio_io_error(bio); in __bio_queue_enter()
566 static inline void bio_check_ro(struct bio *bio) in bio_check_ro() argument
568 if (op_is_write(bio_op(bio)) && bdev_read_only(bio->bi_bdev)) { in bio_check_ro()
569 if (op_is_flush(bio->bi_opf) && !bio_sectors(bio)) in bio_check_ro()
572 if (bdev_test_flag(bio->bi_bdev, BD_RO_WARNED)) in bio_check_ro()
575 bdev_set_flag(bio->bi_bdev, BD_RO_WARNED); in bio_check_ro()
[all …]
H A Dblk.h62 int __bio_queue_enter(struct request_queue *q, struct bio *bio);
63 void submit_bio_noacct_nocheck(struct bio *bio, bool split);
64 int bio_submit_or_kill(struct bio *bio, unsigned int flags);
90 static inline int bio_queue_enter(struct bio *bio) in bio_queue_enter() argument
92 struct request_queue *q = bdev_get_queue(bio->bi_bdev); in bio_queue_enter()
99 return __bio_queue_enter(q, bio); in bio_queue_enter()
252 void bio_integrity_free(struct bio *bio);
260 bool __bio_integrity_endio(struct bio *bio);
261 static inline bool bio_integrity_endio(struct bio *bio) in bio_integrity_endio() argument
263 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_endio()
[all …]
H A Dbio-integrity.c25 unsigned int __bio_integrity_action(struct bio *bio) in __bio_integrity_action() argument
27 struct blk_integrity *bi = blk_get_integrity(bio->bi_bdev->bd_disk); in __bio_integrity_action()
29 if (WARN_ON_ONCE(bio_has_crypt_ctx(bio))) in __bio_integrity_action()
32 switch (bio_op(bio)) { in __bio_integrity_action()
45 if (!bio_sectors(bio)) in __bio_integrity_action()
68 void bio_integrity_alloc_buf(struct bio *bio, gfp_t gfp, bool zero_buffer) in bio_integrity_alloc_buf() argument
70 struct blk_integrity *bi = blk_get_integrity(bio->bi_bdev->bd_disk); in bio_integrity_alloc_buf()
71 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_alloc_buf()
72 unsigned int len = bio_integrity_bytes(bi, bio_sectors(bio)); in bio_integrity_alloc_buf()
103 void bio_integrity_setup_default(struct bio *bio) in bio_integrity_setup_default() argument
[all …]
H A Dbio-integrity-auto.c17 struct bio *bio; member
30 bid->bio->bi_integrity = NULL; in bio_integrity_finish()
31 bid->bio->bi_opf &= ~REQ_INTEGRITY; in bio_integrity_finish()
40 struct bio *bio = bid->bio; in bio_integrity_verify_fn() local
42 bio->bi_status = bio_integrity_verify(bio, &bid->saved_bio_iter); in bio_integrity_verify_fn()
44 bio_endio(bio); in bio_integrity_verify_fn()
56 bool __bio_integrity_endio(struct bio *bio) in __bio_integrity_endio() argument
58 struct bio_integrity_payload *bip = bio_integrity(bio); in __bio_integrity_endio()
62 if (bio_op(bio) == REQ_OP_READ && !bio->bi_status && in __bio_integrity_endio()
83 void bio_integrity_prep(struct bio *bio, unsigned int action) in bio_integrity_prep() argument
[all …]
H A Dblk-rq-qos.h38 void (*throttle)(struct rq_qos *, struct bio *);
39 void (*track)(struct rq_qos *, struct request *, struct bio *);
40 void (*merge)(struct rq_qos *, struct request *, struct bio *);
44 void (*done_bio)(struct rq_qos *, struct bio *);
45 void (*cleanup)(struct rq_qos *, struct bio *);
103 void __rq_qos_cleanup(struct rq_qos *rqos, struct bio *bio);
107 void __rq_qos_throttle(struct rq_qos *rqos, struct bio *bio);
108 void __rq_qos_track(struct rq_qos *rqos, struct request *rq, struct bio *bio);
109 void __rq_qos_merge(struct rq_qos *rqos, struct request *rq, struct bio *bio);
110 void __rq_qos_done_bio(struct rq_qos *rqos, struct bio *bio);
[all …]
H A Dfops.c46 static inline int blkdev_iov_iter_get_pages(struct bio *bio, in blkdev_iov_iter_get_pages() argument
49 return bio_iov_iter_get_pages(bio, iter, bdev_dma_alignment(bdev), in blkdev_iov_iter_get_pages()
62 struct bio bio; in __blkdev_direct_IO_simple() local
74 bio_init(&bio, bdev, vecs, nr_pages, REQ_OP_READ); in __blkdev_direct_IO_simple()
78 bio_init(&bio, bdev, vecs, nr_pages, dio_bio_write_op(iocb)); in __blkdev_direct_IO_simple()
80 bio.bi_iter.bi_sector = pos >> SECTOR_SHIFT; in __blkdev_direct_IO_simple()
81 bio.bi_write_hint = file_inode(iocb->ki_filp)->i_write_hint; in __blkdev_direct_IO_simple()
82 bio in __blkdev_direct_IO_simple()
131 blkdev_bio_end_io(struct bio * bio) blkdev_bio_end_io() argument
180 struct bio *bio; __blkdev_direct_IO() local
294 blkdev_bio_end_io_async(struct bio * bio) blkdev_bio_end_io_async() argument
330 struct bio *bio; __blkdev_direct_IO_async() local
[all...]
H A Dbio-integrity-fs.c17 unsigned int fs_bio_integrity_alloc(struct bio *bio) in fs_bio_integrity_alloc() argument
22 action = bio_integrity_action(bio); in fs_bio_integrity_alloc()
27 bio_integrity_init(bio, &iib->bip, &iib->bvec, 1); in fs_bio_integrity_alloc()
29 bio_integrity_alloc_buf(bio, GFP_NOFS, action & BI_ACT_ZERO); in fs_bio_integrity_alloc()
31 bio_integrity_setup_default(bio); in fs_bio_integrity_alloc()
35 void fs_bio_integrity_free(struct bio *bio) in fs_bio_integrity_free() argument
37 struct bio_integrity_payload *bip = bio_integrity(bio); in fs_bio_integrity_free()
43 bio->bi_integrity = NULL; in fs_bio_integrity_free()
44 bio->bi_opf &= ~REQ_INTEGRITY; in fs_bio_integrity_free()
47 void fs_bio_integrity_generate(struct bio *bio) in fs_bio_integrity_generate() argument
[all …]
H A Dblk-throttle.h148 static inline bool blk_throtl_bio(struct bio *bio) { return false; } in blk_throtl_bio() argument
152 bool __blk_throtl_bio(struct bio *bio);
166 static inline bool blk_should_throtl(struct bio *bio) in blk_should_throtl() argument
169 int rw = bio_data_dir(bio); in blk_should_throtl()
171 if (!blk_throtl_activated(bio->bi_bdev->bd_queue)) in blk_should_throtl()
174 tg = blkg_to_tg(bio->bi_blkg); in blk_should_throtl()
176 if (!bio_flagged(bio, BIO_CGROUP_ACCT)) { in blk_should_throtl()
177 bio_set_flag(bio, BIO_CGROUP_ACCT); in blk_should_throtl()
178 blkg_rwstat_add(&tg->stat_bytes, bio->bi_opf, in blk_should_throtl()
179 bio->bi_iter.bi_size); in blk_should_throtl()
[all …]
/linux/drivers/md/bcache/
H A Drequest.c40 static void bio_csum(struct bio *bio, struct bkey *k) in bio_csum() argument
46 bio_for_each_segment(bv, bio, iter) { in bio_csum()
111 struct bio *bio = op->bio; in bch_data_invalidate() local
114 bio_sectors(bio), (uint64_t) bio->bi_iter.bi_sector); in bch_data_invalidate()
116 while (bio_sectors(bio)) { in bch_data_invalidate()
117 unsigned int sectors = min(bio_sectors(bio), in bch_data_invalidate()
123 bio->bi_iter.bi_sector += sectors; in bch_data_invalidate()
124 bio->bi_iter.bi_size -= sectors << 9; in bch_data_invalidate()
128 bio->bi_iter.bi_sector, in bch_data_invalidate()
134 bio_put(bio); in bch_data_invalidate()
[all …]
/linux/fs/iomap/
H A Dbio.c15 static u32 __iomap_read_end_io(struct bio *bio, int error) in __iomap_read_end_io() argument
20 bio_for_each_folio_all(fi, bio) { in __iomap_read_end_io()
24 if (bio_integrity(bio)) in __iomap_read_end_io()
25 fs_bio_integrity_free(bio); in __iomap_read_end_io()
26 bio_put(bio); in __iomap_read_end_io()
34 struct bio *bio; in iomap_fail_reads() local
42 while ((bio = bio_list_pop(&tmp)) != NULL) { in iomap_fail_reads()
43 __iomap_read_end_io(bio, blk_status_to_errno(bio->bi_status)); in iomap_fail_reads()
50 static void iomap_fail_buffered_read(struct bio *bio) in iomap_fail_buffered_read() argument
62 bio_list_add(&failed_read_list, bio); in iomap_fail_buffered_read()
[all …]
H A Ddirect-io.c55 static struct bio *iomap_dio_alloc_bio(const struct iomap_iter *iter, in iomap_dio_alloc_bio()
65 struct iomap_dio *dio, struct bio *bio, loff_t pos) in iomap_dio_submit_bio() argument
73 bio->bi_opf |= REQ_POLLED; in iomap_dio_submit_bio()
74 WRITE_ONCE(iocb->private, bio); in iomap_dio_submit_bio()
78 dio->dops->submit_io(iter, bio, pos); in iomap_dio_submit_bio()
81 blk_crypto_submit_bio(bio); in iomap_dio_submit_bio()
241 static void __iomap_dio_bio_end_io(struct bio *bio, bool inline_completion) in __iomap_dio_bio_end_io() argument
243 struct iomap_dio *dio = bio->bi_private; in __iomap_dio_bio_end_io()
245 if (bio_integrity(bio)) in __iomap_dio_bio_end_io()
246 fs_bio_integrity_free(bio); in __iomap_dio_bio_end_io()
[all …]
/linux/fs/
H A Dmpage.c45 static void mpage_read_end_io(struct bio *bio) in mpage_read_end_io() argument
48 int err = blk_status_to_errno(bio->bi_status); in mpage_read_end_io()
50 bio_for_each_folio_all(fi, bio) in mpage_read_end_io()
53 bio_put(bio); in mpage_read_end_io()
56 static void mpage_write_end_io(struct bio *bio) in mpage_write_end_io() argument
59 int err = blk_status_to_errno(bio->bi_status); in mpage_write_end_io()
61 bio_for_each_folio_all(fi, bio) { in mpage_write_end_io()
67 bio_put(bio); in mpage_write_end_io()
70 static struct bio *mpage_bio_submit_read(struct bio *bio) in mpage_bio_submit_read() argument
72 bio->bi_end_io = mpage_read_end_io; in mpage_bio_submit_read()
[all …]
/linux/fs/squashfs/
H A Dblock.c33 static int copy_bio_to_actor(struct bio *bio, in copy_bio_to_actor() argument
46 if (WARN_ON_ONCE(!bio_next_segment(bio, &iter_all))) in copy_bio_to_actor()
70 if (!bio_next_segment(bio, &iter_all)) in copy_bio_to_actor()
79 static int squashfs_bio_read_cached(struct bio *fullbio, in squashfs_bio_read_cached()
87 struct bio *bio = NULL; in squashfs_bio_read_cached() local
122 if (!bio || idx != end_idx) { in squashfs_bio_read_cached()
123 struct bio *new = bio_alloc_clone(bdev, fullbio, in squashfs_bio_read_cached()
126 if (bio) { in squashfs_bio_read_cached()
127 bio_trim(bio, start_idx * PAGE_SECTORS, in squashfs_bio_read_cached()
129 bio_chain(bio, new); in squashfs_bio_read_cached()
[all …]
/linux/drivers/md/
H A Ddm-io-rewind.c56 static void dm_bio_integrity_rewind(struct bio *bio, unsigned int bytes_done) in dm_bio_integrity_rewind() argument
58 struct bio_integrity_payload *bip = bio_integrity(bio); in dm_bio_integrity_rewind()
59 struct blk_integrity *bi = blk_get_integrity(bio->bi_bdev->bd_disk); in dm_bio_integrity_rewind()
68 static inline void dm_bio_integrity_rewind(struct bio *bio, in dm_bio_integrity_rewind() argument
94 static void dm_bio_crypt_rewind(struct bio *bio, unsigned int bytes) in dm_bio_crypt_rewind() argument
96 struct bio_crypt_ctx *bc = bio->bi_crypt_context; in dm_bio_crypt_rewind()
104 static inline void dm_bio_crypt_rewind(struct bio *bio, unsigned int bytes) in dm_bio_crypt_rewind() argument
110 static inline void dm_bio_rewind_iter(const struct bio *bio, in dm_bio_rewind_iter() argument
116 if (bio_no_advance_iter(bio)) in dm_bio_rewind_iter()
119 dm_bvec_iter_rewind(bio->bi_io_vec, iter, bytes); in dm_bio_rewind_iter()
[all …]
H A Draid1-10.c11 #define IO_BLOCKED ((struct bio *)1)
16 #define IO_MADE_GOOD ((struct bio *)2)
18 #define BIO_SPECIAL(bio) ((unsigned long)bio <= 2) argument
85 static inline struct resync_pages *get_resync_pages(struct bio *bio) in get_resync_pages() argument
87 return bio->bi_private; in get_resync_pages()
91 static void md_bio_reset_resync_pages(struct bio *bio, struct resync_pages *rp, in md_bio_reset_resync_pages() argument
101 if (WARN_ON(!bio_add_page(bio, page, len, 0))) { in md_bio_reset_resync_pages()
102 bio->bi_status = BLK_STS_RESOURCE; in md_bio_reset_resync_pages()
103 bio_endio(bio); in md_bio_reset_resync_pages()
112 static inline void raid1_submit_write(struct bio *bio) in raid1_submit_write() argument
[all …]
H A Ddm-bio-record.h33 static inline void dm_bio_record(struct dm_bio_details *bd, struct bio *bio) in dm_bio_record() argument
35 bd->bi_bdev = bio->bi_bdev; in dm_bio_record()
36 bd->bi_flags = bio->bi_flags; in dm_bio_record()
37 bd->bi_iter = bio->bi_iter; in dm_bio_record()
38 bd->__bi_remaining = atomic_read(&bio->__bi_remaining); in dm_bio_record()
39 bd->bi_end_io = bio->bi_end_io; in dm_bio_record()
41 bd->bi_integrity = bio_integrity(bio); in dm_bio_record()
45 static inline void dm_bio_restore(struct dm_bio_details *bd, struct bio *bio) in dm_bio_restore() argument
47 bio->bi_bdev = bd->bi_bdev; in dm_bio_restore()
48 bio->bi_flags = bd->bi_flags; in dm_bio_restore()
[all …]
H A Ddm-zoned-target.c22 struct bio *bio; member
75 static inline void dmz_bio_endio(struct bio *bio, blk_status_t status) in dmz_bio_endio() argument
78 dm_per_bio_data(bio, sizeof(struct dmz_bioctx)); in dmz_bio_endio()
80 if (status != BLK_STS_OK && bio->bi_status == BLK_STS_OK) in dmz_bio_endio()
81 bio->bi_status = status; in dmz_bio_endio()
82 if (bioctx->dev && bio->bi_status != BLK_STS_OK) in dmz_bio_endio()
89 if (bio->bi_status != BLK_STS_OK && in dmz_bio_endio()
90 bio_op(bio) == REQ_OP_WRITE && in dmz_bio_endio()
95 bio_endio(bio); in dmz_bio_endio()
103 static void dmz_clone_endio(struct bio *clone) in dmz_clone_endio()
[all …]
H A Ddm-ebs-target.c48 static inline unsigned int __nr_blocks(struct ebs_c *ec, struct bio *bio) in __nr_blocks() argument
50 sector_t end_sector = __block_mod(bio->bi_iter.bi_sector, ec->u_bs) + bio_sectors(bio); in __nr_blocks()
122 static int __ebs_rw_bio(struct ebs_c *ec, enum req_op op, struct bio *bio) in __ebs_rw_bio() argument
128 bio_for_each_bvec(bv, bio, iter) { in __ebs_rw_bio()
143 static int __ebs_discard_bio(struct ebs_c *ec, struct bio *bio) in __ebs_discard_bio() argument
145 sector_t block, blocks, sector = bio->bi_iter.bi_sector; in __ebs_discard_bio()
148 blocks = __nr_blocks(ec, bio); in __ebs_discard_bio()
160 if (blocks && __block_mod(bio_end_sector(bio), ec->u_bs)) in __ebs_discard_bio()
167 static void __ebs_forget_bio(struct ebs_c *ec, struct bio *bio) in __ebs_forget_bio() argument
169 sector_t blocks, sector = bio->bi_iter.bi_sector; in __ebs_forget_bio()
[all …]
H A Ddm-flakey.c21 #define all_corrupt_bio_flags_match(bio, fc) \ argument
22 (((bio)->bi_opf & (fc)->corrupt_bio_flags) == (fc)->corrupt_bio_flags)
352 static void flakey_map_bio(struct dm_target *ti, struct bio *bio) in flakey_map_bio() argument
356 bio_set_dev(bio, fc->dev->bdev); in flakey_map_bio()
357 bio->bi_iter.bi_sector = flakey_map_sector(ti, bio->bi_iter.bi_sector); in flakey_map_bio()
360 static void corrupt_bio_common(struct bio *bio, unsigned int corrupt_bio_byte, in corrupt_bio_common() argument
371 __bio_for_each_segment(bvec, bio, iter, start) { in corrupt_bio_common()
372 if (bio_iter_len(bio, iter) > corrupt_bio_byte) { in corrupt_bio_common()
378 bio, corrupt_bio_value, corrupt_bio_byte, in corrupt_bio_common()
379 (bio_data_dir(bio) == WRITE) ? 'w' : 'r', bio->bi_opf, in corrupt_bio_common()
[all …]
/linux/Documentation/translations/zh_CN/block/
H A Ddata-integrity.rst101 当启用 CONFIG_BLK_DEV_INTEGRITY 时,数据完整性补丁会在 struct bio 中添加
102 一个新字段。调用 bio_integrity(bio) 会返回一个指向 struct bip 的指针,该
103 结构体包含了该 bio 的完整性负载。本质上,bip 是一个精简版的 struct bio,其
107 内核子系统可以通过调用 bio_integrity_alloc(bio) 来为某个 bio 启用数据完整
108 性保护。该函数会分配并附加一个 bip 到该 bio 上。
110 随后使用 bio_integrity_add_page() 将包含完整性元数据的单独页面附加到该 bio。
150 `bool bio_integrity_prep(bio);`
153 bio_integrity_prep(bio)。
155 在调用此函数之前,必须先设置好 bio 的数据方向和起始扇区,并确
156 保该 bio 已经添加完所有的数据页。调用者需要自行保证,在 I/O 进行
[all …]

1234567891011