On 10/23/19 11:56 AM, Mel Gorman wrote: > You also have to iterate over them all later in the same function. The the > free counts are per migrate type then they would have to be iterated over > every time. > > Similarly, there would be multiple places where all the counters would > have to be iterated -- find_suitable_fallback, show_free_areas, > fast_isolate_freepages, fill_contig_page_info, zone_init_free_lists etc. > > It'd be a small cost but given that it's aimed at fixing a problem with > reading pagetypeinfo, is it really worth it? I don't think so. I think the largest issue would be that 1) the migratetype would have to be stored somewhere (ok, perhaps that's not an issue as free pages have plenty of space in struct page), and 2) free page merging code (__free_one_page()) would have to start looking at the migratetype and fix up the counters - merging between migratetypes is not prohibited, for good reasons. IIRC David's patch was missing that part. So I would also prefer to avoid that.