On Wed 11-10-17 13:17:13, Vlastimil Babka wrote: > On 10/11/2017 10:13 AM, Michal Hocko wrote: > > On Wed 11-10-17 10:04:39, Vlastimil Babka wrote: > >> On 10/11/2017 08:51 AM, Michal Hocko wrote: > > [...] > >>> This is really strange! As you write in other email the page is > >>> reserved. That means that some of the earlier checks > >>> if (zone_idx(zone) == ZONE_MOVABLE) > >>> return false; > >>> mt = get_pageblock_migratetype(page); > >>> if (mt == MIGRATE_MOVABLE || is_migrate_cma(mt)) > >> > >> The MIGRATE_MOVABLE check is indeed bogus, because that doesn't > >> guarantee there are no unmovable pages in the block (CMA block OTOH > >> should be a guarantee). > > > > OK, thanks for confirmation. I will remove the MIGRATE_MOVABLE check > > here. Do you think it is worth removing CMA check as well? This is > > merely an optimization AFAIU because we do not have to check the full > > pageblockworth of pfns. > > Actually, we should remove the CMA part as well. It's true that > MIGRATE_CMA does guarantee that the *buddy allocator* won't allocate > non-MOVABLE pages from the pageblock. But if the memory got allocated as > an actual CMA allocation (alloc_contig...) it will almost certainly not > be movable.
That was my suspicious. Thanks! -- Michal Hocko SUSE Labs