]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - mm/migrate.c
migrate: don't account swapcache as shmem
[karo-tx-linux.git] / mm / migrate.c
index 09e2471afa0f7f4ab658adca783c9a2bd1eadc4f..ca71d064bce7c8295362db6127ce22bf3c83d5e0 100644 (file)
@@ -266,7 +266,7 @@ static int migrate_page_move_mapping(struct address_space *mapping,
         */
        __dec_zone_page_state(page, NR_FILE_PAGES);
        __inc_zone_page_state(newpage, NR_FILE_PAGES);
-       if (PageSwapBacked(page)) {
+       if (!PageSwapCache(page) && PageSwapBacked(page)) {
                __dec_zone_page_state(page, NR_SHMEM);
                __inc_zone_page_state(newpage, NR_SHMEM);
        }
@@ -590,7 +590,7 @@ static int unmap_and_move(new_page_t get_new_page, unsigned long private,
        }
 
        /* charge against new page */
-       charge = mem_cgroup_prepare_migration(page, &mem);
+       charge = mem_cgroup_prepare_migration(page, newpage, &mem);
        if (charge == -ENOMEM) {
                rc = -ENOMEM;
                goto unlock;