Re: [PATCH 1/3] mm: fix set pageblock migratetype in deferred struct page init
From: Michal Hocko
Date: Tue Aug 16 2016 - 07:12:52 EST
On Tue 16-08-16 12:12:07, Vlastimil Babka wrote:
> 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).
You are right! gfp_zone would disabllow movable zones from the zone
list. So we indeed cannot leak the unmovable allocation to the movable
zone and then this doesn't really sound all that important to bother
with stable backport. It would be really great to have this all in the
changelog. This code is far from straightforward so having some
assistance from the changelog is more than welcome.
--
Michal Hocko
SUSE Labs