mm: clear pages_scanned only if draining a pcp adds pages to the buddy allocator again
commit 2ff754fa8f
("mm: clear pages_scanned only if draining a pcp adds
pages to the buddy allocator again") fixed one free_pcppages_bulk()
misuse. But two another miuse still exist.
This patch fixes it.
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Acked-by: David Rientjes <rientjes@google.com>
Acked-by: Mel Gorman <mel@csn.ul.ie>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Reviewed-by: Minchan Kim <minchan@kernel.org>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Rik van Riel <riel@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
3d3727cdb0
commit
2a13515c39
|
@ -1158,8 +1158,10 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp)
|
||||||
to_drain = pcp->batch;
|
to_drain = pcp->batch;
|
||||||
else
|
else
|
||||||
to_drain = pcp->count;
|
to_drain = pcp->count;
|
||||||
free_pcppages_bulk(zone, to_drain, pcp);
|
if (to_drain > 0) {
|
||||||
pcp->count -= to_drain;
|
free_pcppages_bulk(zone, to_drain, pcp);
|
||||||
|
pcp->count -= to_drain;
|
||||||
|
}
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -3915,7 +3917,8 @@ static int __zone_pcp_update(void *data)
|
||||||
pcp = &pset->pcp;
|
pcp = &pset->pcp;
|
||||||
|
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
free_pcppages_bulk(zone, pcp->count, pcp);
|
if (pcp->count > 0)
|
||||||
|
free_pcppages_bulk(zone, pcp->count, pcp);
|
||||||
setup_pageset(pset, batch);
|
setup_pageset(pset, batch);
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue