Lines Matching refs:bio
30 static struct bio *get_swap_bio(gfp_t gfp_flags, in get_swap_bio()
33 struct bio *bio; in get_swap_bio() local
35 bio = bio_alloc(gfp_flags, 1); in get_swap_bio()
36 if (bio) { in get_swap_bio()
39 bio->bi_iter.bi_sector = map_swap_page(page, &bdev); in get_swap_bio()
40 bio_set_dev(bio, bdev); in get_swap_bio()
41 bio->bi_iter.bi_sector <<= PAGE_SHIFT - 9; in get_swap_bio()
42 bio->bi_end_io = end_io; in get_swap_bio()
44 bio_add_page(bio, page, thp_size(page), 0); in get_swap_bio()
46 return bio; in get_swap_bio()
49 void end_swap_bio_write(struct bio *bio) in end_swap_bio_write() argument
51 struct page *page = bio_first_page_all(bio); in end_swap_bio_write()
53 if (bio->bi_status) { in end_swap_bio_write()
65 MAJOR(bio_dev(bio)), MINOR(bio_dev(bio)), in end_swap_bio_write()
66 (unsigned long long)bio->bi_iter.bi_sector); in end_swap_bio_write()
70 bio_put(bio); in end_swap_bio_write()
73 static void end_swap_bio_read(struct bio *bio) in end_swap_bio_read() argument
75 struct page *page = bio_first_page_all(bio); in end_swap_bio_read()
76 struct task_struct *waiter = bio->bi_private; in end_swap_bio_read()
78 if (bio->bi_status) { in end_swap_bio_read()
82 MAJOR(bio_dev(bio)), MINOR(bio_dev(bio)), in end_swap_bio_read()
83 (unsigned long long)bio->bi_iter.bi_sector); in end_swap_bio_read()
90 WRITE_ONCE(bio->bi_private, NULL); in end_swap_bio_read()
91 bio_put(bio); in end_swap_bio_read()
238 static void bio_associate_blkg_from_page(struct bio *bio, struct page *page) in bio_associate_blkg_from_page() argument
247 bio_associate_blkg_from_css(bio, css); in bio_associate_blkg_from_page()
251 #define bio_associate_blkg_from_page(bio, page) do { } while (0) argument
257 struct bio *bio; in __swap_writepage() local
313 bio = get_swap_bio(GFP_NOIO, page, end_write_func); in __swap_writepage()
314 if (bio == NULL) { in __swap_writepage()
319 bio->bi_opf = REQ_OP_WRITE | REQ_SWAP | wbc_to_write_flags(wbc); in __swap_writepage()
320 bio_associate_blkg_from_page(bio, page); in __swap_writepage()
326 submit_bio(bio); in __swap_writepage()
333 struct bio *bio; in swap_readpage() local
379 bio = get_swap_bio(GFP_KERNEL, page, end_swap_bio_read); in swap_readpage()
380 if (bio == NULL) { in swap_readpage()
385 disk = bio->bi_disk; in swap_readpage()
390 bio_set_op_attrs(bio, REQ_OP_READ, 0); in swap_readpage()
392 bio->bi_opf |= REQ_HIPRI; in swap_readpage()
394 bio->bi_private = current; in swap_readpage()
398 bio_get(bio); in swap_readpage()
399 qc = submit_bio(bio); in swap_readpage()
402 if (!READ_ONCE(bio->bi_private)) in swap_readpage()
409 bio_put(bio); in swap_readpage()