Re: [PATCH 1/3] mm: fix set pageblock migratetype in deferred struct page init

From: Vlastimil Babka
Date: Tue Aug 16 2016 - 06:12:15 EST


On 08/16/2016 11:23 AM, Michal Hocko wrote:
On Tue 16-08-16 16:56:54, Xishi Qiu wrote:
On 2016/8/16 16:41, Michal Hocko wrote:

On Thu 04-08-16 19:25:03, Xishi Qiu wrote:
MAX_ORDER_NR_PAGES is usually 4M, and a pageblock is usually 2M, so we only
set one pageblock's migratetype in deferred_free_range() if pfn is aligned
to MAX_ORDER_NR_PAGES.

Do I read the changelog correctly and the bug causes leaking unmovable
allocations into movable zones?

Hi Michal,

This bug will cause uninitialized migratetype, you can see from
"cat /proc/pagetypeinfo", almost half blocks are Unmovable.

Please add that information to the changelog. Leaking unmovable
allocations to the movable zones defeats the whole purpose of the
movable zone so I guess we really want to mark this for stable.

Note that it's not as severe. Pageblock migratetype is just heuristic against fragmentation. It should not allow unmovable allocations from movable zones (although I can't find what really does govern it).

AFAICS it should also note:
Fixes: ac5d2539b238 ("mm: meminit: reduce number of times pageblocks are set during struct page init")
and stable 4.2+