The patch titled Subject: mm/free_pcppages_bulk: update pcp->count inside has been added to the -mm tree. Its filename is mm-free_pcppages_bulk-update-pcp-count-inside.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/mm-free_pcppages_bulk-update-pcp-count-inside.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/mm-free_pcppages_bulk-update-pcp-count-inside.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Aaron Lu <aaron.lu@xxxxxxxxx> Subject: mm/free_pcppages_bulk: update pcp->count inside Matthew Wilcox found that all callers of free_pcppages_bulk() currently update pcp->count immediately after so it's natural to do it inside free_pcppages_bulk(). No functionality or performance change is expected from this patch. Link: http://lkml.kernel.org/r/20180301062845.26038-2-aaron.lu@xxxxxxxxx Signed-off-by: Aaron Lu <aaron.lu@xxxxxxxxx> Suggested-by: Matthew Wilcox <willy@xxxxxxxxxxxxx> Acked-by: David Rientjes <rientjes@xxxxxxxxxx> Acked-by: Michal Hocko <mhocko@xxxxxxxx> Reviewed-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Cc: Huang Ying <ying.huang@xxxxxxxxx> Cc: Dave Hansen <dave.hansen@xxxxxxxxx> Cc: Kemi Wang <kemi.wang@xxxxxxxxx> Cc: Tim Chen <tim.c.chen@xxxxxxxxxxxxxxx> Cc: Andi Kleen <ak@xxxxxxxxxxxxxxx> Cc: Vlastimil Babka <vbabka@xxxxxxx> Cc: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/page_alloc.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff -puN mm/page_alloc.c~mm-free_pcppages_bulk-update-pcp-count-inside mm/page_alloc.c --- a/mm/page_alloc.c~mm-free_pcppages_bulk-update-pcp-count-inside +++ a/mm/page_alloc.c @@ -1112,6 +1112,7 @@ static void free_pcppages_bulk(struct zo page = list_last_entry(list, struct page, lru); /* must delete as __free_one_page list manipulates */ list_del(&page->lru); + pcp->count--; mt = get_pcppage_migratetype(page); /* MIGRATE_ISOLATE page should not go to pcplists */ @@ -2482,10 +2483,8 @@ void drain_zone_pages(struct zone *zone, local_irq_save(flags); batch = READ_ONCE(pcp->batch); to_drain = min(pcp->count, batch); - if (to_drain > 0) { + if (to_drain > 0) free_pcppages_bulk(zone, to_drain, pcp); - pcp->count -= to_drain; - } local_irq_restore(flags); } #endif @@ -2507,10 +2506,8 @@ static void drain_pages_zone(unsigned in pset = per_cpu_ptr(zone->pageset, cpu); pcp = &pset->pcp; - if (pcp->count) { + if (pcp->count) free_pcppages_bulk(zone, pcp->count, pcp); - pcp->count = 0; - } local_irq_restore(flags); } @@ -2734,7 +2731,6 @@ static void free_unref_page_commit(struc if (pcp->count >= pcp->high) { unsigned long batch = READ_ONCE(pcp->batch); free_pcppages_bulk(zone, batch, pcp); - pcp->count -= batch; } } _ Patches currently in -mm which might be from aaron.lu@xxxxxxxxx are mm-free_pcppages_bulk-update-pcp-count-inside.patch mm-free_pcppages_bulk-do-not-hold-lock-when-picking-pages-to-free.patch mm-free_pcppages_bulk-prefetch-buddy-while-not-holding-lock.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html