From: Michal Hocko <mhocko@xxxxxxxx> Subject: mm, migrate: remove reason argument from new_page_t No allocation callback is using this argument anymore. new_page_node used to use this parameter to convey node_id resp. migration error up to move_pages code (do_move_page_to_node_array). The error status never made it into the final status field and we have a better way to communicate node id to the status field now. All other allocation callbacks simply ignored the argument so we can drop it finally. [mhocko@xxxxxxxx: fix migration callback] Link: http://lkml.kernel.org/r/20180105085259.GH2801@xxxxxxxxxxxxxx [akpm@xxxxxxxxxxxxxxxxxxxx: fix alloc_misplaced_dst_page()] [mhocko@xxxxxxxxxx: fix build] Link: http://lkml.kernel.org/r/20180103091134.GB11319@xxxxxxxxxxxxxx Link: http://lkml.kernel.org/r/20180103082555.14592-3-mhocko@xxxxxxxxxx Signed-off-by: Michal Hocko <mhocko@xxxxxxxx> Reviewed-by: Zi Yan <zi.yan@xxxxxxxxxxxxxx> Cc: Andrea Reale <ar@xxxxxxxxxxxxxxxxxx> Cc: Anshuman Khandual <khandual@xxxxxxxxxxxxxxxxxx> Cc: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> Cc: Mike Kravetz <mike.kravetz@xxxxxxxxxx> Cc: Naoya Horiguchi <n-horiguchi@xxxxxxxxxxxxx> Cc: Vlastimil Babka <vbabka@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- arch/powerpc/mm/mmu_context_iommu.c | 3 +-- include/linux/migrate.h | 3 +-- include/linux/page-isolation.h | 3 +-- mm/compaction.c | 3 +-- mm/internal.h | 2 +- mm/memory-failure.c | 2 +- mm/memory_hotplug.c | 3 +-- mm/mempolicy.c | 6 +++--- mm/migrate.c | 21 +++------------------ mm/page_isolation.c | 3 +-- 10 files changed, 14 insertions(+), 35 deletions(-) diff -puN arch/powerpc/mm/mmu_context_iommu.c~mm-migrate-remove-reason-argument-from-new_page_t arch/powerpc/mm/mmu_context_iommu.c --- a/arch/powerpc/mm/mmu_context_iommu.c~mm-migrate-remove-reason-argument-from-new_page_t +++ a/arch/powerpc/mm/mmu_context_iommu.c @@ -75,8 +75,7 @@ EXPORT_SYMBOL_GPL(mm_iommu_preregistered /* * Taken from alloc_migrate_target with changes to remove CMA allocations */ -struct page *new_iommu_non_cma_page(struct page *page, unsigned long private, - int **resultp) +struct page *new_iommu_non_cma_page(struct page *page, unsigned long private) { gfp_t gfp_mask = GFP_USER; struct page *new_page; diff -puN include/linux/migrate.h~mm-migrate-remove-reason-argument-from-new_page_t include/linux/migrate.h --- a/include/linux/migrate.h~mm-migrate-remove-reason-argument-from-new_page_t +++ a/include/linux/migrate.h @@ -7,8 +7,7 @@ #include <linux/migrate_mode.h> #include <linux/hugetlb.h> -typedef struct page *new_page_t(struct page *page, unsigned long private, - int **reason); +typedef struct page *new_page_t(struct page *page, unsigned long private); typedef void free_page_t(struct page *page, unsigned long private); /* diff -puN include/linux/page-isolation.h~mm-migrate-remove-reason-argument-from-new_page_t include/linux/page-isolation.h --- a/include/linux/page-isolation.h~mm-migrate-remove-reason-argument-from-new_page_t +++ a/include/linux/page-isolation.h @@ -63,7 +63,6 @@ undo_isolate_page_range(unsigned long st int test_pages_isolated(unsigned long start_pfn, unsigned long end_pfn, bool skip_hwpoisoned_pages); -struct page *alloc_migrate_target(struct page *page, unsigned long private, - int **resultp); +struct page *alloc_migrate_target(struct page *page, unsigned long private); #endif diff -puN mm/compaction.c~mm-migrate-remove-reason-argument-from-new_page_t mm/compaction.c --- a/mm/compaction.c~mm-migrate-remove-reason-argument-from-new_page_t +++ a/mm/compaction.c @@ -1166,8 +1166,7 @@ static void isolate_freepages(struct com * from the isolated freelists in the block we are migrating to. */ static struct page *compaction_alloc(struct page *migratepage, - unsigned long data, - int **result) + unsigned long data) { struct compact_control *cc = (struct compact_control *)data; struct page *freepage; diff -puN mm/internal.h~mm-migrate-remove-reason-argument-from-new_page_t mm/internal.h --- a/mm/internal.h~mm-migrate-remove-reason-argument-from-new_page_t +++ a/mm/internal.h @@ -538,5 +538,5 @@ static inline bool is_migrate_highatomic } void setup_zone_pageset(struct zone *zone); -extern struct page *alloc_new_node_page(struct page *page, unsigned long node, int **x); +extern struct page *alloc_new_node_page(struct page *page, unsigned long node); #endif /* __MM_INTERNAL_H */ diff -puN mm/memory-failure.c~mm-migrate-remove-reason-argument-from-new_page_t mm/memory-failure.c --- a/mm/memory-failure.c~mm-migrate-remove-reason-argument-from-new_page_t +++ a/mm/memory-failure.c @@ -1487,7 +1487,7 @@ int unpoison_memory(unsigned long pfn) } EXPORT_SYMBOL(unpoison_memory); -static struct page *new_page(struct page *p, unsigned long private, int **x) +static struct page *new_page(struct page *p, unsigned long private) { int nid = page_to_nid(p); diff -puN mm/memory_hotplug.c~mm-migrate-remove-reason-argument-from-new_page_t mm/memory_hotplug.c --- a/mm/memory_hotplug.c~mm-migrate-remove-reason-argument-from-new_page_t +++ a/mm/memory_hotplug.c @@ -1329,8 +1329,7 @@ static unsigned long scan_movable_pages( return 0; } -static struct page *new_node_page(struct page *page, unsigned long private, - int **result) +static struct page *new_node_page(struct page *page, unsigned long private) { int nid = page_to_nid(page); nodemask_t nmask = node_states[N_MEMORY]; diff -puN mm/mempolicy.c~mm-migrate-remove-reason-argument-from-new_page_t mm/mempolicy.c --- a/mm/mempolicy.c~mm-migrate-remove-reason-argument-from-new_page_t +++ a/mm/mempolicy.c @@ -943,7 +943,7 @@ static void migrate_page_add(struct page } /* page allocation callback for NUMA node migration */ -struct page *alloc_new_node_page(struct page *page, unsigned long node, int **x) +struct page *alloc_new_node_page(struct page *page, unsigned long node) { if (PageHuge(page)) return alloc_huge_page_node(page_hstate(compound_head(page)), @@ -1108,7 +1108,7 @@ int do_migrate_pages(struct mm_struct *m * list of pages handed to migrate_pages()--which is how we get here-- * is in virtual address order. */ -static struct page *new_page(struct page *page, unsigned long start, int **x) +static struct page *new_page(struct page *page, unsigned long start) { struct vm_area_struct *vma; unsigned long uninitialized_var(address); @@ -1153,7 +1153,7 @@ int do_migrate_pages(struct mm_struct *m return -ENOSYS; } -static struct page *new_page(struct page *page, unsigned long start, int **x) +static struct page *new_page(struct page *page, unsigned long start) { return NULL; } diff -puN mm/migrate.c~mm-migrate-remove-reason-argument-from-new_page_t mm/migrate.c --- a/mm/migrate.c~mm-migrate-remove-reason-argument-from-new_page_t +++ a/mm/migrate.c @@ -1137,10 +1137,9 @@ static ICE_noinline int unmap_and_move(n enum migrate_reason reason) { int rc = MIGRATEPAGE_SUCCESS; - int *result = NULL; struct page *newpage; - newpage = get_new_page(page, private, &result); + newpage = get_new_page(page, private); if (!newpage) return -ENOMEM; @@ -1231,12 +1230,6 @@ put_new: put_page(newpage); } - if (result) { - if (rc) - *result = rc; - else - *result = page_to_nid(newpage); - } return rc; } @@ -1264,7 +1257,6 @@ static int unmap_and_move_huge_page(new_ enum migrate_mode mode, int reason) { int rc = -EAGAIN; - int *result = NULL; int page_was_mapped = 0; struct page *new_hpage; struct anon_vma *anon_vma = NULL; @@ -1281,7 +1273,7 @@ static int unmap_and_move_huge_page(new_ return -ENOSYS; } - new_hpage = get_new_page(hpage, private, &result); + new_hpage = get_new_page(hpage, private); if (!new_hpage) return -ENOMEM; @@ -1345,12 +1337,6 @@ out: else putback_active_hugepage(new_hpage); - if (result) { - if (rc) - *result = rc; - else - *result = page_to_nid(new_hpage); - } return rc; } @@ -1828,8 +1814,7 @@ static bool migrate_balanced_pgdat(struc } static struct page *alloc_misplaced_dst_page(struct page *page, - unsigned long data, - int **result) + unsigned long data) { int nid = (int) data; struct page *newpage; diff -puN mm/page_isolation.c~mm-migrate-remove-reason-argument-from-new_page_t mm/page_isolation.c --- a/mm/page_isolation.c~mm-migrate-remove-reason-argument-from-new_page_t +++ a/mm/page_isolation.c @@ -309,8 +309,7 @@ int test_pages_isolated(unsigned long st return pfn < end_pfn ? -EBUSY : 0; } -struct page *alloc_migrate_target(struct page *page, unsigned long private, - int **resultp) +struct page *alloc_migrate_target(struct page *page, unsigned long private) { return new_page_nodemask(page, numa_node_id(), &node_states[N_MEMORY]); } _ -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html