Lines Matching refs:page
781 struct page *page, unsigned int len, unsigned int off, in page_is_mergeable() argument
786 phys_addr_t page_addr = page_to_phys(page); in page_is_mergeable()
790 if (xen_domain() && !xen_biovec_phys_mergeable(bv, page)) in page_is_mergeable()
796 return (bv->bv_page + bv_end / PAGE_SIZE) == (page + off / PAGE_SIZE); in page_is_mergeable()
805 struct page *page, unsigned len, in bio_try_merge_hw_seg() argument
811 phys_addr_t addr2 = page_to_phys(page) + offset + len - 1; in bio_try_merge_hw_seg()
817 return __bio_try_merge_page(bio, page, len, offset, same_page); in bio_try_merge_hw_seg()
834 struct page *page, unsigned int len, unsigned int offset, in bio_add_hw_page() argument
846 if (bio_try_merge_hw_seg(q, bio, page, len, offset, same_page)) in bio_add_hw_page()
865 bvec->bv_page = page; in bio_add_hw_page()
889 struct page *page, unsigned int len, unsigned int offset) in bio_add_pc_page() argument
892 return bio_add_hw_page(q, bio, page, len, offset, in bio_add_pc_page()
913 int bio_add_zone_append_page(struct bio *bio, struct page *page, in bio_add_zone_append_page() argument
925 return bio_add_hw_page(q, bio, page, len, offset, in bio_add_zone_append_page()
946 bool __bio_try_merge_page(struct bio *bio, struct page *page, in __bio_try_merge_page() argument
955 if (page_is_mergeable(bv, page, len, off, same_page)) { in __bio_try_merge_page()
979 void __bio_add_page(struct bio *bio, struct page *page, in __bio_add_page() argument
987 bv->bv_page = page; in __bio_add_page()
994 if (!bio_flagged(bio, BIO_WORKINGSET) && unlikely(PageWorkingset(page))) in __bio_add_page()
1009 int bio_add_page(struct bio *bio, struct page *page, in bio_add_page() argument
1014 if (!__bio_try_merge_page(bio, page, len, offset, &same_page)) { in bio_add_page()
1017 __bio_add_page(bio, page, len, offset); in bio_add_page()
1069 static void bio_put_pages(struct page **pages, size_t size, size_t off) in bio_put_pages()
1077 static int bio_iov_add_page(struct bio *bio, struct page *page, in bio_iov_add_page() argument
1082 if (!__bio_try_merge_page(bio, page, len, offset, &same_page)) { in bio_iov_add_page()
1085 __bio_add_page(bio, page, len, offset); in bio_iov_add_page()
1090 put_page(page); in bio_iov_add_page()
1094 static int bio_iov_add_zone_append_page(struct bio *bio, struct page *page, in bio_iov_add_zone_append_page() argument
1100 if (bio_add_hw_page(q, bio, page, len, offset, in bio_iov_add_zone_append_page()
1104 put_page(page); in bio_iov_add_zone_append_page()
1108 #define PAGE_PTRS_PER_BVEC (sizeof(struct bio_vec) / sizeof(struct page *))
1125 struct page **pages = (struct page **)bv; in __bio_iov_iter_get_pages()
1144 struct page *page = pages[i]; in __bio_iov_iter_get_pages() local
1148 ret = bio_iov_add_zone_append_page(bio, page, len, in __bio_iov_iter_get_pages()
1151 ret = bio_iov_add_page(bio, page, len, offset); in __bio_iov_iter_get_pages()