On Mon, 2005-09-26 at 20:16 -0400, Kyle Moffett wrote:Uhh, call me crazy, but don't those flags look a little backwards to you? Maybe it's just me, but wouldn't it make sense to expect __GFP_USER to be a userspace allocation and __GFP_KERNRCLM to be an easily reclaimable kernel page?
I think Joel simply made an error in his description.
__GFP_KERNRCLM corresponds to pages which are kernel-allocated, but have some chance of being reclaimed at some point. Basically, they're things that will get freed back under memory pressure. This can be direct, as with the dcache and its slab shrinker, or more indirect as for control structures like buffer_heads that get reclaimed after _other_ things are freed.
+#define __GFP_USER 0x40000u /* Kernel page that is easily reclaimable */
+#define __GFP_KERNRCLM 0x80000u /* User is a userspace user */