> -----Original Message----- > From: Atsushi Kumagai [mailto:kumagai-atsushi at mxc.nes.nec.co.jp] > Sent: Thursday, November 15, 2012 2:20 PM [...] > On Thu, 15 Nov 2012 01:55:04 +0000 > "Hatayama, Daisuke" <d.hatayama at jp.fujitsu.com> wrote: [...] > > I think it's OK on the logic of selection for page_is_buddy_vX(). > But there remain some cases where page_is_buddy_vX() doesn't work correctly > because OFFSET(page.private) and OFFSET(page._mapcount) do not exist. > And it's difficult to hard code for them. > > So I think setup_page_is_buddy() should be changed like below: > > static void > setup_page_is_buddy(void) > { > if (OFFSET(page.private) == NOT_FOUND_STRUCTURE) > info->page_is_buddy = NULL; > else if (NUMBER(PG_buddy) == NOT_FOUND_NUMBER) { > if (NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE) != > NOT_FOUND_NUMBER) { > if (OFFSET(page._mapcout) != > NOT_FOUND_STRUCTURE) { > info->page_is_buddy = > page_is_buddy_v3; > return; > } > } else if (SIZE(pageflags) == NOT_FOUND_STRUCTURE) { > info->page_is_buddy = page_is_buddy_v1; > return; > } > } else { > info->page_is_buddy = page_is_buddy_v2; > return; > } > > DEBUG_MSG("Can't select page_is_buddy handler; " > "follow freelist instead of mem_map.\n"); > > } > Agree. I'll rewrite it. When do you plan to post v1.5.1-rc? Thanks. HATAYAMA, Daisuke