Lines Matching refs:bio

19 #include <linux/bio.h>
29 static struct bio *get_swap_bio(gfp_t gfp_flags,
32 struct bio *bio;
34 bio = bio_alloc(gfp_flags, 1);
35 if (bio) {
38 bio->bi_iter.bi_sector = map_swap_page(page, &bdev);
39 bio_set_dev(bio, bdev);
40 bio->bi_iter.bi_sector <<= PAGE_SHIFT - 9;
41 bio->bi_end_io = end_io;
43 bio_add_page(bio, page, thp_size(page), 0);
45 return bio;
48 void end_swap_bio_write(struct bio *bio)
50 struct page *page = bio_first_page_all(bio);
52 if (bio->bi_status) {
64 MAJOR(bio_dev(bio)), MINOR(bio_dev(bio)),
65 (unsigned long long)bio->bi_iter.bi_sector);
69 bio_put(bio);
72 static void end_swap_bio_read(struct bio *bio)
74 struct page *page = bio_first_page_all(bio);
75 struct task_struct *waiter = bio->bi_private;
77 if (bio->bi_status) {
81 MAJOR(bio_dev(bio)), MINOR(bio_dev(bio)),
82 (unsigned long long)bio->bi_iter.bi_sector);
89 WRITE_ONCE(bio->bi_private, NULL);
90 bio_put(bio);
237 static void bio_associate_blkg_from_page(struct bio *bio, struct page *page)
246 bio_associate_blkg_from_css(bio, css);
250 #define bio_associate_blkg_from_page(bio, page) do { } while (0)
256 struct bio *bio;
290 * the normal direct-to-bio case as it could
308 bio = get_swap_bio(GFP_NOIO, page, end_write_func);
309 if (bio == NULL) {
314 bio->bi_opf = REQ_OP_WRITE | REQ_SWAP | wbc_to_write_flags(wbc);
315 bio_associate_blkg_from_page(bio, page);
319 submit_bio(bio);
326 struct bio *bio;
369 bio = get_swap_bio(GFP_KERNEL, page, end_swap_bio_read);
370 if (bio == NULL) {
375 disk = bio->bi_disk;
380 bio_set_op_attrs(bio, REQ_OP_READ, 0);
382 bio->bi_opf |= REQ_HIPRI;
384 bio->bi_private = current;
387 bio_get(bio);
388 qc = submit_bio(bio);
391 if (!READ_ONCE(bio->bi_private))
398 bio_put(bio);