On Wed, Mar 28, 2018 at 10:15:02AM -0700, Dave Hansen wrote: > On 03/28/2018 09:55 AM, Kirill A. Shutemov wrote: > > @@ -51,7 +51,7 @@ static inline struct page *new_page_nodemask(struct page *page, > > if (PageHighMem(page) || (zone_idx(page_zone(page)) == ZONE_MOVABLE)) > > gfp_mask |= __GFP_HIGHMEM; > > > > - new_page = __alloc_pages_nodemask(gfp_mask, order, > > + new_page = __alloc_pages_nodemask(gfp_mask, order, page_keyid(page), > > preferred_nid, nodemask); > > You're not going to like this suggestion. > > Am I looking at this too superficially, or does every single site into > which you pass keyid also take a node and gfpmask and often an order? I > think you need to run this by the keepers of page_alloc.c and see if > they'd rather do something more drastic. Are you talking about having some kind of struct that would indicalte page allocation context -- gfp_mask + order + node + keyid? -- Kirill A. Shutemov