On Thu, 30 Nov 2006 17:07:46 +0000
mel@xxxxxxxxx (Mel Gorman) wrote:
Am reporting this patch after there were no further comments on the last
version.
Am not sure what to do with it - nothing actually uses __GFP_MOVABLE.
It is often known at allocation time when a page may be migrated or not.
"often", yes.
This
page adds a flag called __GFP_MOVABLE and GFP_HIGH_MOVABLE. Allocations using
the __GFP_MOVABLE can be either migrated using the page migration mechanism
or reclaimed by syncing with backing storage and discarding.
Additional credit goes to Christoph Lameter and Linus Torvalds for shaping
the concept. Credit to Hugh Dickens for catching issues with shmem swap
vector and ramfs allocations.
...
@@ -65,7 +65,7 @@ static inline void clear_user_highpage(s
static inline struct page *
alloc_zeroed_user_highpage(struct vm_area_struct *vma, unsigned long vaddr)
{
- struct page *page = alloc_page_vma(GFP_HIGHUSER, vma, vaddr);
+ struct page *page = alloc_page_vma(GFP_HIGH_MOVABLE, vma, vaddr);
if (page)
clear_user_highpage(page, vaddr);
But this change is presumptuous. alloc_zeroed_user_highpage() doesn't know
that its caller is going to use the page for moveable purposes. (Ditto lots
of other places in this patch).