diff options
| author | 2015-10-06 15:01:52 +0100 | |
|---|---|---|
| committer | 2015-10-06 15:01:52 +0100 | |
| commit | c39b7eef7d92f5ffef1abf04227a62fa2a6a62b2 (patch) | |
| tree | 00aff822e9208ab2f2ac41c6e1a0f61c6eb9b57f /mm/migrate.c | |
| parent | Revert "iommu: Allow iova to be used without requiring IOMMU_SUPPORT" (diff) | |
| parent | Linux 4.3-rc4 (diff) | |
| download | linux-dev-c39b7eef7d92f5ffef1abf04227a62fa2a6a62b2.tar.xz linux-dev-c39b7eef7d92f5ffef1abf04227a62fa2a6a62b2.zip | |
Merge 4.3-rc4 into char-misc-next
This is needed due to the duplicated iommu stuff to help with the merge
and to prevent future issues.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'mm/migrate.c')
| -rw-r--r-- | mm/migrate.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/mm/migrate.c b/mm/migrate.c index 7452a00bbb50..842ecd7aaf7f 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -740,6 +740,15 @@ static int move_to_new_page(struct page *newpage, struct page *page, if (PageSwapBacked(page)) SetPageSwapBacked(newpage); + /* + * Indirectly called below, migrate_page_copy() copies PG_dirty and thus + * needs newpage's memcg set to transfer memcg dirty page accounting. + * So perform memcg migration in two steps: + * 1. set newpage->mem_cgroup (here) + * 2. clear page->mem_cgroup (below) + */ + set_page_memcg(newpage, page_memcg(page)); + mapping = page_mapping(page); if (!mapping) rc = migrate_page(mapping, newpage, page, mode); @@ -756,9 +765,10 @@ static int move_to_new_page(struct page *newpage, struct page *page, rc = fallback_migrate_page(mapping, newpage, page, mode); if (rc != MIGRATEPAGE_SUCCESS) { + set_page_memcg(newpage, NULL); newpage->mapping = NULL; } else { - mem_cgroup_migrate(page, newpage, false); + set_page_memcg(page, NULL); if (page_was_mapped) remove_migration_ptes(page, newpage); page->mapping = NULL; |
