Lines Matching refs:page
55 static struct page *brd_lookup_page(struct brd_device *brd, sector_t sector) in brd_lookup_page()
58 struct page *page; in brd_lookup_page() local
73 page = radix_tree_lookup(&brd->brd_pages, idx); in brd_lookup_page()
76 BUG_ON(page && page->index != idx); in brd_lookup_page()
78 return page; in brd_lookup_page()
86 static struct page *brd_insert_page(struct brd_device *brd, sector_t sector) in brd_insert_page()
89 struct page *page; in brd_insert_page() local
92 page = brd_lookup_page(brd, sector); in brd_insert_page()
93 if (page) in brd_insert_page()
94 return page; in brd_insert_page()
109 page = alloc_page(gfp_flags); in brd_insert_page()
110 if (!page) in brd_insert_page()
114 __free_page(page); in brd_insert_page()
120 page->index = idx; in brd_insert_page()
121 if (radix_tree_insert(&brd->brd_pages, idx, page)) { in brd_insert_page()
122 __free_page(page); in brd_insert_page()
123 page = radix_tree_lookup(&brd->brd_pages, idx); in brd_insert_page()
124 BUG_ON(!page); in brd_insert_page()
125 BUG_ON(page->index != idx); in brd_insert_page()
131 return page; in brd_insert_page()
136 struct page *page; in brd_free_page() local
141 page = radix_tree_delete(&brd->brd_pages, idx); in brd_free_page()
143 if (page) in brd_free_page()
144 __free_page(page); in brd_free_page()
149 struct page *page; in brd_zero_page() local
151 page = brd_lookup_page(brd, sector); in brd_zero_page()
152 if (page) in brd_zero_page()
153 clear_highpage(page); in brd_zero_page()
164 struct page *pages[FREE_BATCH]; in brd_free_pages()
236 struct page *page; in copy_to_brd() local
242 page = brd_lookup_page(brd, sector); in copy_to_brd()
243 BUG_ON(!page); in copy_to_brd()
245 dst = kmap_atomic(page); in copy_to_brd()
253 page = brd_lookup_page(brd, sector); in copy_to_brd()
254 BUG_ON(!page); in copy_to_brd()
256 dst = kmap_atomic(page); in copy_to_brd()
268 struct page *page; in copy_from_brd() local
274 page = brd_lookup_page(brd, sector); in copy_from_brd()
275 if (page) { in copy_from_brd()
276 src = kmap_atomic(page); in copy_from_brd()
286 page = brd_lookup_page(brd, sector); in copy_from_brd()
287 if (page) { in copy_from_brd()
288 src = kmap_atomic(page); in copy_from_brd()
299 static int brd_do_bvec(struct brd_device *brd, struct page *page, in brd_do_bvec() argument
312 mem = kmap_atomic(page); in brd_do_bvec()
315 flush_dcache_page(page); in brd_do_bvec()
317 flush_dcache_page(page); in brd_do_bvec()
371 struct page *page, int rw) in brd_rw_page() argument
374 int err = brd_do_bvec(brd, page, PAGE_CACHE_SIZE, 0, rw, sector); in brd_rw_page()
375 page_endio(page, rw & WRITE, err); in brd_rw_page()
384 struct page *page; in brd_direct_access() local
388 page = brd_insert_page(brd, sector); in brd_direct_access()
389 if (!page) in brd_direct_access()
391 *kaddr = (void __pmem *)page_address(page); in brd_direct_access()
392 *pfn = page_to_pfn(page); in brd_direct_access()