ANDROID: implement wrapper for reverse migration
Reverse migration is used to do the balancing the occupancy of memory zones in a node in the system whose imabalance may be caused by migration of pages to other zones by an operation, eg: hotremove and then hotadding the same memory. In this case there is a lot of free memory in newly hotadd memory which can be filled up by the previous migrated pages(as part of offline/hotremove) thus may free up some pressure in other zones of the node. Upstream discussion: https://lore.kernel.org/patchwork/cover/1382106/ Change-Id: Ib3137dab0db66ecf6858c4077dcadb9dfd0c6b1c Bug: 175403896 Signed-off-by: Charan Teja Reddy <charante@codeaurora.org>
This commit is contained in:

committed by
Suren Baghdasaryan

parent
ea527a52d1
commit
8cd9aa93b7
@@ -763,6 +763,29 @@ isolate_freepages_range(struct compact_control *cc,
|
||||
return pfn;
|
||||
}
|
||||
|
||||
unsigned long isolate_and_split_free_page(struct page *page,
|
||||
struct list_head *list)
|
||||
{
|
||||
unsigned long isolated;
|
||||
unsigned int order;
|
||||
|
||||
if (!PageBuddy(page))
|
||||
return 0;
|
||||
|
||||
order = buddy_order(page);
|
||||
isolated = __isolate_free_page(page, order);
|
||||
if (!isolated)
|
||||
return 0;
|
||||
|
||||
set_page_private(page, order);
|
||||
list_add(&page->lru, list);
|
||||
|
||||
split_map_pages(list);
|
||||
|
||||
return isolated;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(isolate_and_split_free_page);
|
||||
|
||||
/* Similar to reclaim, but different enough that they don't share logic */
|
||||
static bool too_many_isolated(pg_data_t *pgdat)
|
||||
{
|
||||
|
Reference in New Issue
Block a user