Lines Matching refs:bio

53 	struct bio bio;
66 bio_init(&bio, bdev, vecs, nr_pages, REQ_OP_READ);
70 bio_init(&bio, bdev, vecs, nr_pages, dio_bio_write_op(iocb));
72 bio.bi_iter.bi_sector = pos >> SECTOR_SHIFT;
73 bio.bi_write_hint = file_inode(iocb->ki_filp)->i_write_hint;
74 bio.bi_ioprio = iocb->ki_ioprio;
76 ret = bio_iov_iter_get_pages(&bio, iter);
79 ret = bio.bi_iter.bi_size;
85 bio.bi_opf |= REQ_NOWAIT;
87 submit_bio_wait(&bio);
89 bio_release_pages(&bio, should_dirty);
90 if (unlikely(bio.bi_status))
91 ret = blk_status_to_errno(bio.bi_status);
97 bio_uninit(&bio);
115 struct bio bio ____cacheline_aligned_in_smp;
120 static void blkdev_bio_end_io(struct bio *bio)
122 struct blkdev_dio *dio = bio->bi_private;
125 if (bio->bi_status && !dio->bio.bi_status)
126 dio->bio.bi_status = bio->bi_status;
135 if (likely(!dio->bio.bi_status)) {
139 ret = blk_status_to_errno(dio->bio.bi_status);
143 bio_put(&dio->bio);
153 bio_check_pages_dirty(bio);
155 bio_release_pages(bio, false);
156 bio_put(bio);
165 struct bio *bio;
173 bio = bio_alloc_bioset(bdev, nr_pages, opf, GFP_KERNEL,
175 dio = container_of(bio, struct blkdev_dio, bio);
179 * into the first bio stays around.
181 bio_get(bio);
199 bio->bi_iter.bi_sector = pos >> SECTOR_SHIFT;
200 bio->bi_write_hint = file_inode(iocb->ki_filp)->i_write_hint;
201 bio->bi_private = dio;
202 bio->bi_end_io = blkdev_bio_end_io;
203 bio->bi_ioprio = iocb->ki_ioprio;
205 ret = bio_iov_iter_get_pages(bio, iter);
207 bio->bi_status = BLK_STS_IOERR;
208 bio_endio(bio);
214 * another bio if we have data left to map. As we
221 bio_release_pages(bio, false);
222 bio_clear_flag(bio, BIO_REFFED);
223 bio_put(bio);
227 bio->bi_opf |= REQ_NOWAIT;
232 bio_set_pages_dirty(bio);
234 task_io_account_write(bio->bi_iter.bi_size);
236 dio->size += bio->bi_iter.bi_size;
237 pos += bio->bi_iter.bi_size;
241 submit_bio(bio);
245 submit_bio(bio);
246 bio = bio_alloc(bdev, nr_pages, opf, GFP_KERNEL);
263 ret = blk_status_to_errno(dio->bio.bi_status);
267 bio_put(&dio->bio);
271 static void blkdev_bio_end_io_async(struct bio *bio)
273 struct blkdev_dio *dio = container_of(bio, struct blkdev_dio, bio);
279 if (likely(!bio->bi_status)) {
283 ret = blk_status_to_errno(bio->bi_status);
289 bio_check_pages_dirty(bio);
291 bio_release_pages(bio, false);
292 bio_put(bio);
304 struct bio *bio;
310 bio = bio_alloc_bioset(bdev, nr_pages, opf, GFP_KERNEL,
312 dio = container_of(bio, struct blkdev_dio, bio);
315 bio->bi_iter.bi_sector = pos >> SECTOR_SHIFT;
316 bio->bi_write_hint = file_inode(iocb->ki_filp)->i_write_hint;
317 bio->bi_end_io = blkdev_bio_end_io_async;
318 bio->bi_ioprio = iocb->ki_ioprio;
327 bio_iov_bvec_set(bio, iter);
329 ret = bio_iov_iter_get_pages(bio, iter);
331 bio_put(bio);
335 dio->size = bio->bi_iter.bi_size;
340 bio_set_pages_dirty(bio);
343 task_io_account_write(bio->bi_iter.bi_size);
347 bio->bi_opf |= REQ_NOWAIT;
350 bio->bi_opf |= REQ_POLLED;
351 submit_bio(bio);
352 WRITE_ONCE(iocb->private, bio);
354 submit_bio(bio);
867 offsetof(struct blkdev_dio, bio),