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()
98 PageIsolated(page)) { in balloon_page_list_dequeue()
100 unlock_page(page); in balloon_page_list_dequeue()
103 balloon_page_delete(page); in balloon_page_list_dequeue()
105 list_add(&page->lru, pages); in balloon_page_list_dequeue()
106 unlock_page(page); in balloon_page_list_dequeue()
107 dec_node_page_state(page, NR_BALLOON_PAGES); in balloon_page_list_dequeue()
117 * balloon_page_alloc - allocates a new page for insertion into the balloon
118 * page list.
120 * Driver must call this function to properly allocate a new balloon page.
121 * Driver must call balloon_page_enqueue before definitively removing the page
124 * Return: struct page for the allocated page or NULL on allocation failure.
126 struct page *balloon_page_alloc(void) in balloon_page_alloc()
128 struct page *page = alloc_page(balloon_mapping_gfp_mask() | in balloon_page_alloc() local
131 return page; in balloon_page_alloc()
136 * balloon_page_enqueue - inserts a new page into the balloon page list.
138 * @b_dev_info: balloon device descriptor where we will insert a new page
139 * @page: new page to enqueue - allocated using balloon_page_alloc.
142 * page before definitively removing the page from the guest system.
149 struct page *page) in balloon_page_enqueue() argument
154 balloon_page_enqueue_one(b_dev_info, page); in balloon_page_enqueue()
160 * balloon_page_dequeue - removes a page from balloon's page list and returns
161 * its address to allow the driver to release the page.
162 * @b_dev_info: balloon device descriptor where we will grab a page from.
164 * Driver must call this function to properly dequeue a previously enqueued page
171 * some enqueued pages - since the page list can be temporarily empty due to
177 * Return: struct page for the dequeued page, or NULL if no page was dequeued.
179 struct page *balloon_page_dequeue(struct balloon_dev_info *b_dev_info) in balloon_page_dequeue()
189 * If we are unable to dequeue a balloon page because the page in balloon_page_dequeue()
202 return list_first_entry(&pages, struct page, lru); in balloon_page_dequeue()
208 static bool balloon_page_isolate(struct page *page, isolate_mode_t mode) in balloon_page_isolate() argument
211 struct balloon_dev_info *b_dev_info = balloon_page_device(page); in balloon_page_isolate()
215 list_del(&page->lru); in balloon_page_isolate()
222 static void balloon_page_putback(struct page *page) in balloon_page_putback() argument
224 struct balloon_dev_info *b_dev_info = balloon_page_device(page); in balloon_page_putback()
228 list_add(&page->lru, &b_dev_info->pages); in balloon_page_putback()
233 /* move_to_new_page() counterpart for a ballooned page */
234 static int balloon_page_migrate(struct page *newpage, struct page *page, in balloon_page_migrate() argument
237 struct balloon_dev_info *balloon = balloon_page_device(page); in balloon_page_migrate()
239 VM_BUG_ON_PAGE(!PageLocked(page), page); in balloon_page_migrate()
242 return balloon->migratepage(balloon, newpage, page, mode); in balloon_page_migrate()