Re: [PATCH 4/4] capture pages freed during direct reclaim for allocation by the reclaimer

Christoph Lameter
2008-09-04T14:18:20Z

Peter Zijlstra wrote:
> On Wed, 2008-09-03 at 16:00 -0500, Christoph Lameter wrote:
>> Andy Whitcroft wrote:
>>
>>>
>>> #ifndef __GENERATING_BOUNDS_H
>>> @@ -208,6 +211,9 @@ __PAGEFLAG(SlubDebug, slub_debug)
>>> */
>>> TESTPAGEFLAG(Writeback, writeback) TESTSCFLAG(Writeback, writeback)
>>> __PAGEFLAG(Buddy, buddy)
>>> +PAGEFLAG(BuddyCapture, buddy_capture) /* A buddy page, but reserved. */
>>> + __SETPAGEFLAG(BuddyCapture, buddy_capture)
>>> + __CLEARPAGEFLAG(BuddyCapture, buddy_capture)
>> Doesnt __PAGEFLAG do what you want without having to explicitly specify
>> __SET/__CLEAR?
>
> PAGEFLAG() __PAGEFLAG()
>
> does TESTPAGEFLAG() double.
>

Usually one either wants the atomic versions or the non atomic versions. This
usage seems to be mainly non atomic plus one use of ClearPageBuddy() in
capture_or_return() (Which raises some questions about how the bit
modifications are serialized. Is there concurrency during free?)

So

__PAGEFLAG(BuddyCapture, buddy_capture)
CLEARPAGEFLAG(BuddyCapture, buddy_capture)