diff options
-rw-r--r-- | include/linux/gfp.h | 5 | ||||
-rw-r--r-- | mm/page_alloc.c | 3 |
2 files changed, 6 insertions, 2 deletions
diff --git a/include/linux/gfp.h b/include/linux/gfp.h index f54adfcbec9c..49d2356bb82d 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h | |||
@@ -34,6 +34,7 @@ struct vm_area_struct; | |||
34 | #else | 34 | #else |
35 | #define ___GFP_NOTRACK 0 | 35 | #define ___GFP_NOTRACK 0 |
36 | #endif | 36 | #endif |
37 | #define ___GFP_NO_KSWAPD 0x400000u | ||
37 | 38 | ||
38 | /* | 39 | /* |
39 | * GFP bitmasks.. | 40 | * GFP bitmasks.. |
@@ -81,13 +82,15 @@ struct vm_area_struct; | |||
81 | #define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE) /* Page is reclaimable */ | 82 | #define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE) /* Page is reclaimable */ |
82 | #define __GFP_NOTRACK ((__force gfp_t)___GFP_NOTRACK) /* Don't track with kmemcheck */ | 83 | #define __GFP_NOTRACK ((__force gfp_t)___GFP_NOTRACK) /* Don't track with kmemcheck */ |
83 | 84 | ||
85 | #define __GFP_NO_KSWAPD ((__force gfp_t)___GFP_NO_KSWAPD) | ||
86 | |||
84 | /* | 87 | /* |
85 | * This may seem redundant, but it's a way of annotating false positives vs. | 88 | * This may seem redundant, but it's a way of annotating false positives vs. |
86 | * allocations that simply cannot be supported (e.g. page tables). | 89 | * allocations that simply cannot be supported (e.g. page tables). |
87 | */ | 90 | */ |
88 | #define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK) | 91 | #define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK) |
89 | 92 | ||
90 | #define __GFP_BITS_SHIFT 22 /* Room for 22 __GFP_FOO bits */ | 93 | #define __GFP_BITS_SHIFT 23 /* Room for 23 __GFP_FOO bits */ |
91 | #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1)) | 94 | #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1)) |
92 | 95 | ||
93 | /* This equals 0, but use constants in case they ever change */ | 96 | /* This equals 0, but use constants in case they ever change */ |
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 6e62d5f9d40b..bbd0423f2820 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -2027,7 +2027,8 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, | |||
2027 | goto nopage; | 2027 | goto nopage; |
2028 | 2028 | ||
2029 | restart: | 2029 | restart: |
2030 | wake_all_kswapd(order, zonelist, high_zoneidx, | 2030 | if (!(gfp_mask & __GFP_NO_KSWAPD)) |
2031 | wake_all_kswapd(order, zonelist, high_zoneidx, | ||
2031 | zone_idx(preferred_zone)); | 2032 | zone_idx(preferred_zone)); |
2032 | 2033 | ||
2033 | /* | 2034 | /* |