Lines Matching refs:page

31  * the pages containing the block device's contents. A brd page's ->index is
52 * Look up and return a brd's page for a given sector.
55 static struct page *brd_lookup_page(struct brd_device *brd, sector_t sector)
58 struct page *page;
61 * The page lifetime is protected by the fact that we have opened the
72 idx = sector >> PAGE_SECTORS_SHIFT; /* sector to page index */
73 page = radix_tree_lookup(&brd->brd_pages, idx);
76 BUG_ON(page && page->index != idx);
78 return page;
82 * Look up and return a brd's page for a given sector.
83 * If one does not exist, allocate an empty page, and insert that. Then
86 static struct page *brd_insert_page(struct brd_device *brd, sector_t sector)
89 struct page *page;
92 page = brd_lookup_page(brd, sector);
93 if (page)
94 return page;
98 * block or filesystem layers from page reclaim.
109 page = alloc_page(gfp_flags);
110 if (!page)
114 __free_page(page);
120 if (radix_tree_insert(&brd->brd_pages, idx, page)) {
121 __free_page(page);
122 page = radix_tree_lookup(&brd->brd_pages, idx);
123 BUG_ON(!page);
124 BUG_ON(page->index != idx);
126 page->index = idx;
131 return page;
136 struct page *page;
141 page = radix_tree_delete(&brd->brd_pages, idx);
143 if (page)
144 __free_page(page);
149 struct page *page;
151 page = brd_lookup_page(brd, sector);
152 if (page)
153 clear_highpage(page);
164 struct page *pages[FREE_BATCH];
236 struct page *page;
242 page = brd_lookup_page(brd, sector);
243 BUG_ON(!page);
245 dst = kmap_atomic(page);
253 page = brd_lookup_page(brd, sector);
254 BUG_ON(!page);
256 dst = kmap_atomic(page);
268 struct page *page;
274 page = brd_lookup_page(brd, sector);
275 if (page) {
276 src = kmap_atomic(page);
286 page = brd_lookup_page(brd, sector);
287 if (page) {
288 src = kmap_atomic(page);
299 static int brd_do_bvec(struct brd_device *brd, struct page *page,
312 mem = kmap_atomic(page);
315 flush_dcache_page(page);
317 flush_dcache_page(page);
369 struct page *page;
377 page = brd_insert_page(brd, sector);
378 if (!page)
380 *kaddr = page_address(page);
381 *pfn = page_to_pfn(page);