Lines Matching full:page
15 struct page *page) in balloon_page_enqueue_one() argument
18 * Block others from accessing the 'page' when we get around to in balloon_page_enqueue_one()
20 * holding a reference to the 'page' at this point. If we are not, then in balloon_page_enqueue_one()
23 BUG_ON(!trylock_page(page)); in balloon_page_enqueue_one()
24 balloon_page_insert(b_dev_info, page); in balloon_page_enqueue_one()
25 unlock_page(page); in balloon_page_enqueue_one()
27 inc_node_page_state(page, NR_BALLOON_PAGES); in balloon_page_enqueue_one()
31 * balloon_page_list_enqueue() - inserts a list of pages into the balloon page
33 * @b_dev_info: balloon device descriptor where we will insert a new page to
44 struct page *page, *tmp; in balloon_page_list_enqueue() local
49 list_for_each_entry_safe(page, tmp, pages, lru) { in balloon_page_list_enqueue()
50 list_del(&page->lru); in balloon_page_list_enqueue()
51 balloon_page_enqueue_one(b_dev_info, page); in balloon_page_list_enqueue()
60 * balloon_page_list_dequeue() - removes pages from balloon's page list and
62 * @b_dev_info: balloon device descriptor where we will grab a page from.
72 * isn't empty - since the page list can be temporarily empty due to compaction
80 struct page *page, *tmp; in balloon_page_list_dequeue() local
85 list_for_each_entry_safe(page, tmp, &b_dev_info->pages, lru) { in balloon_page_list_dequeue()
90 * Block others from accessing the 'page' while we get around to in balloon_page_list_dequeue()
91 * establishing additional references and preparing the 'page' in balloon_page_list_dequeue()
94 if (!trylock_page(page)) in balloon_page_list_dequeue()
97 list_del(&page->lru); in balloon_page_list_dequeue()
98 balloon_page_finalize(page); in balloon_page_list_dequeue()
100 list_add(&page->lru, pages); in balloon_page_list_dequeue()
101 unlock_page(page); in balloon_page_list_dequeue()
102 dec_node_page_state(page, NR_BALLOON_PAGES); in balloon_page_list_dequeue()
112 * balloon_page_alloc - allocates a new page for insertion into the balloon
113 * page list.
115 * Driver must call this function to properly allocate a new balloon page.
116 * Driver must call balloon_page_enqueue before definitively removing the page
119 * Return: struct page for the allocated page or NULL on allocation failure.
121 struct page *balloon_page_alloc(void) in balloon_page_alloc()
123 struct page *page = alloc_page(balloon_mapping_gfp_mask() | in balloon_page_alloc() local
126 return page; in balloon_page_alloc()
131 * balloon_page_enqueue - inserts a new page into the balloon page list.
133 * @b_dev_info: balloon device descriptor where we will insert a new page
134 * @page: new page to enqueue - allocated using balloon_page_alloc.
137 * page before definitively removing the page from the guest system.
144 struct page *page) in balloon_page_enqueue() argument
149 balloon_page_enqueue_one(b_dev_info, page); in balloon_page_enqueue()
155 * balloon_page_dequeue - removes a page from balloon's page list and returns
156 * its address to allow the driver to release the page.
157 * @b_dev_info: balloon device descriptor where we will grab a page from.
159 * Driver must call this function to properly dequeue a previously enqueued page
166 * some enqueued pages - since the page list can be temporarily empty due to
172 * Return: struct page for the dequeued page, or NULL if no page was dequeued.
174 struct page *balloon_page_dequeue(struct balloon_dev_info *b_dev_info) in balloon_page_dequeue()
184 * If we are unable to dequeue a balloon page because the page in balloon_page_dequeue()
197 return list_first_entry(&pages, struct page, lru); in balloon_page_dequeue()
203 static bool balloon_page_isolate(struct page *page, isolate_mode_t mode) in balloon_page_isolate() argument
206 struct balloon_dev_info *b_dev_info = balloon_page_device(page); in balloon_page_isolate()
213 list_del(&page->lru); in balloon_page_isolate()
220 static void balloon_page_putback(struct page *page) in balloon_page_putback() argument
222 struct balloon_dev_info *b_dev_info = balloon_page_device(page); in balloon_page_putback()
230 list_add(&page->lru, &b_dev_info->pages); in balloon_page_putback()
235 /* move_to_new_page() counterpart for a ballooned page */
236 static int balloon_page_migrate(struct page *newpage, struct page *page, in balloon_page_migrate() argument
239 struct balloon_dev_info *balloon = balloon_page_device(page); in balloon_page_migrate()
241 VM_BUG_ON_PAGE(!PageLocked(page), page); in balloon_page_migrate()
248 return balloon->migratepage(balloon, newpage, page, mode); in balloon_page_migrate()