mm/migrate.c: cleanup expected_page_refs()
authorJan Kara <jack@suse.cz>
Tue, 5 Mar 2019 23:48:46 +0000 (15:48 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 6 Mar 2019 05:07:20 +0000 (21:07 -0800)
Andrea has noted that page migration code propagates page_mapping(page)
through the whole migration stack down to migrate_page() function so it
seems stupid to then use page_mapping(page) in expected_page_refs()
instead of passed down 'mapping' argument.  I agree so let's make
expected_page_refs() more in line with the rest of the migration stack.

Link: http://lkml.kernel.org/r/20190207112314.24872-1-jack@suse.cz
Signed-off-by: Jan Kara <jack@suse.cz>
Suggested-by: Andrea Arcangeli <aarcange@redhat.com>
Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>
Cc: Mel Gorman <mgorman@techsingularity.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/migrate.c

index 5308d6abd3845c859756c12d4061c117e03ae682..ac6f4939bb5975a2cab6e78419562c1529e12219 100644 (file)
@@ -374,7 +374,7 @@ unlock:
 }
 #endif
 
-static int expected_page_refs(struct page *page)
+static int expected_page_refs(struct address_space *mapping, struct page *page)
 {
        int expected_count = 1;
 
@@ -384,7 +384,7 @@ static int expected_page_refs(struct page *page)
         */
        expected_count += is_device_private_page(page);
        expected_count += is_device_public_page(page);
-       if (page_mapping(page))
+       if (mapping)
                expected_count += hpage_nr_pages(page) + page_has_private(page);
 
        return expected_count;
@@ -405,7 +405,7 @@ int migrate_page_move_mapping(struct address_space *mapping,
        XA_STATE(xas, &mapping->i_pages, page_index(page));
        struct zone *oldzone, *newzone;
        int dirty;
-       int expected_count = expected_page_refs(page) + extra_count;
+       int expected_count = expected_page_refs(mapping, page) + extra_count;
 
        if (!mapping) {
                /* Anonymous page without mapping */
@@ -750,7 +750,7 @@ static int __buffer_migrate_page(struct address_space *mapping,
                return migrate_page(mapping, newpage, page, mode);
 
        /* Check whether page does not have extra refs before we do more work */
-       expected_count = expected_page_refs(page);
+       expected_count = expected_page_refs(mapping, page);
        if (page_count(page) != expected_count)
                return -EAGAIN;