2010-07-07 11:12:45 +00:00
|
|
|
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
|
|
|
|
Subject: [PATCH 03/31] mm: expose gfp_to_alloc_flags()
|
|
|
|
Patch-mainline: not yet
|
|
|
|
|
|
|
|
Expose the gfp to alloc_flags mapping, so we can use it in other parts
|
|
|
|
of the vm.
|
|
|
|
|
|
|
|
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
|
|
|
|
Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de>
|
|
|
|
---
|
|
|
|
mm/internal.h | 15 +++++++++++++++
|
|
|
|
mm/page_alloc.c | 16 +---------------
|
|
|
|
2 files changed, 16 insertions(+), 15 deletions(-)
|
|
|
|
|
|
|
|
--- a/mm/internal.h
|
|
|
|
+++ b/mm/internal.h
|
|
|
|
@@ -185,6 +185,21 @@ static inline struct page *mem_map_next(
|
|
|
|
#define __paginginit __init
|
|
|
|
#endif
|
|
|
|
|
|
|
|
+/* The ALLOC_WMARK bits are used as an index to zone->watermark */
|
|
|
|
+#define ALLOC_WMARK_MIN WMARK_MIN
|
|
|
|
+#define ALLOC_WMARK_LOW WMARK_LOW
|
|
|
|
+#define ALLOC_WMARK_HIGH WMARK_HIGH
|
|
|
|
+#define ALLOC_NO_WATERMARKS 0x04 /* don't check watermarks at all */
|
|
|
|
+
|
|
|
|
+/* Mask to get the watermark bits */
|
|
|
|
+#define ALLOC_WMARK_MASK (ALLOC_NO_WATERMARKS-1)
|
|
|
|
+
|
|
|
|
+#define ALLOC_HARDER 0x10 /* try to alloc harder */
|
|
|
|
+#define ALLOC_HIGH 0x20 /* __GFP_HIGH set */
|
|
|
|
+#define ALLOC_CPUSET 0x40 /* check for correct cpuset */
|
|
|
|
+
|
|
|
|
+int gfp_to_alloc_flags(gfp_t gfp_mask);
|
|
|
|
+
|
|
|
|
/* Memory initialisation debug and verification */
|
|
|
|
enum mminit_level {
|
|
|
|
MMINIT_WARNING,
|
|
|
|
--- a/mm/page_alloc.c
|
|
|
|
+++ b/mm/page_alloc.c
|
2011-04-19 20:09:59 +00:00
|
|
|
@@ -1345,19 +1345,6 @@ failed:
|
2010-07-07 11:12:45 +00:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
-/* The ALLOC_WMARK bits are used as an index to zone->watermark */
|
|
|
|
-#define ALLOC_WMARK_MIN WMARK_MIN
|
|
|
|
-#define ALLOC_WMARK_LOW WMARK_LOW
|
|
|
|
-#define ALLOC_WMARK_HIGH WMARK_HIGH
|
|
|
|
-#define ALLOC_NO_WATERMARKS 0x04 /* don't check watermarks at all */
|
|
|
|
-
|
|
|
|
-/* Mask to get the watermark bits */
|
|
|
|
-#define ALLOC_WMARK_MASK (ALLOC_NO_WATERMARKS-1)
|
|
|
|
-
|
|
|
|
-#define ALLOC_HARDER 0x10 /* try to alloc harder */
|
|
|
|
-#define ALLOC_HIGH 0x20 /* __GFP_HIGH set */
|
|
|
|
-#define ALLOC_CPUSET 0x40 /* check for correct cpuset */
|
|
|
|
-
|
|
|
|
#ifdef CONFIG_FAIL_PAGE_ALLOC
|
|
|
|
|
|
|
|
static struct fail_page_alloc_attr {
|
2011-04-19 20:09:59 +00:00
|
|
|
@@ -1911,8 +1898,7 @@ void wake_all_kswapd(unsigned int order,
|
|
|
|
wakeup_kswapd(zone, order, classzone_idx);
|
2010-07-07 11:12:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
-static inline int
|
|
|
|
-gfp_to_alloc_flags(gfp_t gfp_mask)
|
|
|
|
+int gfp_to_alloc_flags(gfp_t gfp_mask)
|
|
|
|
{
|
|
|
|
int alloc_flags = ALLOC_WMARK_MIN | ALLOC_CPUSET;
|
2011-04-19 20:09:59 +00:00
|
|
|
const gfp_t wait = gfp_mask & __GFP_WAIT;
|