Message ID | 1254405903-15760-1-git-send-email-sjayaraman@suse.de |
---|---|
State | Not Applicable, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, 1 Oct 2009, Suresh Jayaraman wrote: > From: Peter Zijlstra <a.p.zijlstra@chello.nl> > > 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> Nack, these flags are internal to the page allocator and exporting them to generic VM code is unnecessary. The only bit you actually use in your patchset is ALLOC_NO_WATERMARKS to determine whether a particular allocation can use memory reserves. I'd suggest adding a bool function that returns whether the current context is given access to reserves including your new __GFP_MEMALLOC flag and exporting that instead. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
David Rientjes wrote: > On Thu, 1 Oct 2009, Suresh Jayaraman wrote: > >> From: Peter Zijlstra <a.p.zijlstra@chello.nl> >> >> 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> > > Nack, these flags are internal to the page allocator and exporting them to > generic VM code is unnecessary. Yes, you're right. > The only bit you actually use in your patchset is ALLOC_NO_WATERMARKS to > determine whether a particular allocation can use memory reserves. I'd > suggest adding a bool function that returns whether the current context is > given access to reserves including your new __GFP_MEMALLOC flag and > exporting that instead. Makes sense and Neil already posted a patch citing the suggested changes, will incorporate the change. Thanks,
Index: mmotm/mm/internal.h =================================================================== --- mmotm.orig/mm/internal.h +++ mmotm/mm/internal.h @@ -194,6 +194,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, Index: mmotm/mm/page_alloc.c =================================================================== --- mmotm.orig/mm/page_alloc.c +++ mmotm/mm/page_alloc.c @@ -1190,19 +1190,6 @@ failed: 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 { @@ -1691,8 +1678,7 @@ void wake_all_kswapd(unsigned int order, wakeup_kswapd(zone, order); } -static inline int -gfp_to_alloc_flags(gfp_t gfp_mask) +int gfp_to_alloc_flags(gfp_t gfp_mask) { struct task_struct *p = current; int alloc_flags = ALLOC_WMARK_MIN | ALLOC_CPUSET;