Commit 149c33e1 authored by Mel Gorman's avatar Mel Gorman

mm: migrate: Drop the misplaced pages reference count if the target node is full

If we have to avoid migrating to a node that is nearly full, put page
and return zero.
Signed-off-by: default avatarHillf Danton <dhillf@gmail.com>
Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
parent 7039e1db
...@@ -1489,18 +1489,21 @@ int migrate_misplaced_page(struct page *page, int node) ...@@ -1489,18 +1489,21 @@ int migrate_misplaced_page(struct page *page, int node)
} }
isolated = 1; isolated = 1;
/*
* Page is isolated which takes a reference count so now the
* callers reference can be safely dropped without the page
* disappearing underneath us during migration
*/
put_page(page);
page_lru = page_is_file_cache(page); page_lru = page_is_file_cache(page);
inc_zone_page_state(page, NR_ISOLATED_ANON + page_lru); inc_zone_page_state(page, NR_ISOLATED_ANON + page_lru);
list_add(&page->lru, &migratepages); list_add(&page->lru, &migratepages);
} }
/*
* Page is either isolated or there is not enough space on the target
* node. If isolated, then it has taken a reference count and the
* callers reference can be safely dropped without the page
* disappearing underneath us during migration. Otherwise the page is
* not to be migrated but the callers reference should still be
* dropped so it does not leak.
*/
put_page(page);
if (isolated) { if (isolated) {
int nr_remaining; int nr_remaining;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment