You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.7 KiB
79 lines
2.7 KiB
From: Alexander Duyck <alexander.h.duyck@intel.com>
|
|
Date: Tue, 10 Jan 2017 16:58:09 -0800
|
|
Subject: [PATCH] mm: rename __page_frag functions to __page_frag_cache, drop
|
|
order from drain
|
|
|
|
This patch does two things.
|
|
|
|
First it goes through and renames the __page_frag prefixed functions to
|
|
__page_frag_cache so that we can be clear that we are draining or
|
|
refilling the cache, not the frags themselves.
|
|
|
|
Second we drop the order parameter from __page_frag_cache_drain since we
|
|
don't actually need to pass it since all fragments are either order 0 or
|
|
must be a compound page.
|
|
|
|
Link: http://lkml.kernel.org/r/20170104023954.13451.5678.stgit@localhost.localdomain
|
|
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
|
|
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
---
|
|
|
|
--- a/include/linux/gfp.h
|
|
+++ b/include/linux/gfp.h
|
|
@@ -506,8 +506,7 @@ extern void free_hot_cold_page(struct pa
|
|
extern void free_hot_cold_page_list(struct list_head *list, bool cold);
|
|
|
|
struct page_frag_cache;
|
|
-extern void __page_frag_drain(struct page *page, unsigned int order,
|
|
- unsigned int count);
|
|
+extern void __page_frag_cache_drain(struct page *page, unsigned int count);
|
|
extern void *page_frag_alloc(struct page_frag_cache *nc,
|
|
unsigned int fragsz, gfp_t gfp_mask);
|
|
extern void page_frag_free(void *addr);
|
|
--- a/mm/page_alloc.c
|
|
+++ b/mm/page_alloc.c
|
|
@@ -3925,8 +3925,8 @@ EXPORT_SYMBOL(free_pages);
|
|
* drivers to provide a backing region of memory for use as either an
|
|
* sk_buff->head, or to be used in the "frags" portion of skb_shared_info.
|
|
*/
|
|
-static struct page *__page_frag_refill(struct page_frag_cache *nc,
|
|
- gfp_t gfp_mask)
|
|
+static struct page *__page_frag_cache_refill(struct page_frag_cache *nc,
|
|
+ gfp_t gfp_mask)
|
|
{
|
|
struct page *page = NULL;
|
|
gfp_t gfp = gfp_mask;
|
|
@@ -3946,19 +3946,20 @@ static struct page *__page_frag_refill(s
|
|
return page;
|
|
}
|
|
|
|
-void __page_frag_drain(struct page *page, unsigned int order,
|
|
- unsigned int count)
|
|
+void __page_frag_cache_drain(struct page *page, unsigned int count)
|
|
{
|
|
VM_BUG_ON_PAGE(page_ref_count(page) == 0, page);
|
|
|
|
if (page_ref_sub_and_test(page, count)) {
|
|
+ unsigned int order = compound_order(page);
|
|
+
|
|
if (order == 0)
|
|
free_hot_cold_page(page, false);
|
|
else
|
|
__free_pages_ok(page, order);
|
|
}
|
|
}
|
|
-EXPORT_SYMBOL(__page_frag_drain);
|
|
+EXPORT_SYMBOL(__page_frag_cache_drain);
|
|
|
|
void *page_frag_alloc(struct page_frag_cache *nc,
|
|
unsigned int fragsz, gfp_t gfp_mask)
|
|
@@ -3969,7 +3970,7 @@ void *page_frag_alloc(struct page_frag_c
|
|
|
|
if (unlikely(!nc->va)) {
|
|
refill:
|
|
- page = __page_frag_refill(nc, gfp_mask);
|
|
+ page = __page_frag_cache_refill(nc, gfp_mask);
|
|
if (!page)
|
|
return NULL;
|
|
|
|
|