Messages in this thread | | | Date | Sun, 27 Sep 2009 17:26:25 +0100 (BST) | From | Hugh Dickins <> | Subject | Re: [RFC][PATCH] HWPOISON: remove the unsafe __set_page_locked() |
| |
On Sat, 26 Sep 2009, Andi Kleen wrote: > > This is a bit tricky to do right now; you have a chicken and egg > > problem between locking the page and pinning the inode mapping. > > One possibly simple solution would be to just allocate the page > locked (GFP_LOCKED). When the allocator clears the flags it already > modifies the state, so it could as well set the lock bit too. No > atomics needed. And then clearing it later is also atomic free.
That's a good idea.
I don't particularly like adding a GFP_LOCKED just for this, and I don't particularly like having to remember to unlock the thing on the various(?) error paths between getting the page and adding it to cache.
But it is a good idea, and if doing it that way would really close a race window which checking page->mapping (or whatever) cannot (I'm simply not sure about that), then it would seem the best way to go.
Hugh
| |