Lines Matching defs:page

67  * some helper functions to deal with single linked page lists,
68 * page->private being our "next" pointer.
75 static struct page *page_chain_del(struct page **head, int n)
77 struct page *page;
78 struct page *tmp;
83 page = *head;
85 if (!page)
88 while (page) {
89 tmp = page_chain_next(page);
95 page = tmp;
99 set_page_private(page, 0);
101 page = *head;
103 return page;
107 * "private" page chain, before adding it back to a global chain head
109 static struct page *page_chain_tail(struct page *page, int *len)
111 struct page *tmp;
113 while ((tmp = page_chain_next(page))) {
115 page = tmp;
119 return page;
122 static int page_chain_free(struct page *page)
124 struct page *tmp;
126 page_chain_for_each_safe(page, tmp) {
127 put_page(page);
133 static void page_chain_add(struct page **head,
134 struct page *chain_first, struct page *chain_last)
137 struct page *tmp;
147 static struct page *__drbd_alloc_pages(struct drbd_device *device,
150 struct page *page = NULL;
151 struct page *tmp = NULL;
158 page = page_chain_del(&drbd_pp_pool, number);
159 if (page)
162 if (page)
163 return page;
173 set_page_private(tmp, (unsigned long)page);
174 page = tmp;
178 return page;
183 if (page) {
184 tmp = page_chain_tail(page, NULL);
186 page_chain_add(&drbd_pp_pool, page, tmp);
248 * Tries to allocate number pages, first from our own page pool, then from
260 * Returns a page chain linked via page->private.
262 struct page *drbd_alloc_pages(struct drbd_peer_device *peer_device, unsigned int number,
266 struct page *page = NULL;
277 page = __drbd_alloc_pages(device, number);
281 if (page && atomic_read(&device->pp_in_use_by_net) > 512)
284 while (page == NULL) {
290 page = __drbd_alloc_pages(device, number);
291 if (page)
308 if (page)
310 return page;
315 * Either links the page chain back to the global pool,
317 static void drbd_free_pages(struct drbd_device *device, struct page *page, int is_net)
322 if (page == NULL)
326 i = page_chain_free(page);
328 struct page *tmp;
329 tmp = page_chain_tail(page, &i);
331 page_chain_add(&drbd_pp_pool, page, tmp);
365 struct page *page = NULL;
379 page = drbd_alloc_pages(peer_device, nr_pages,
381 if (!page)
392 peer_req->pages = page;
1629 * single page to an empty bio (which should never happen and likely indicates
1639 struct page *page = peer_req->pages;
1702 page_chain_for_each(page) {
1704 if (!bio_add_page(bio, page, len, 0))
1711 D_ASSERT(device, page == NULL);
1853 struct page *page;
1922 /* receive payload size bytes into page chain */
1924 page = peer_req->pages;
1925 page_chain_for_each(page) {
1927 data = kmap(page);
1933 kunmap(page);
1959 struct page *page;
1966 page = drbd_alloc_pages(peer_device, 1, 1);
1968 data = kmap(page);
1977 kunmap(page);
1978 drbd_free_pages(peer_device->device, page, 0);