Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9c620e2b authored by Hugh Dickins's avatar Hugh Dickins Committed by Linus Torvalds
Browse files

mm: remove offlining arg to migrate_pages



No functional change, but the only purpose of the offlining argument to
migrate_pages() etc, was to ensure that __unmap_and_move() could migrate a
KSM page for memory hotremove (which took ksm_thread_mutex) but not for
other callers.  Now all cases are safe, remove the arg.

Signed-off-by: default avatarHugh Dickins <hughd@google.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Petr Holasek <pholasek@redhat.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Izik Eidus <izik.eidus@ravellosystems.com>
Cc: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent b79bc0a0
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -40,11 +40,9 @@ extern void putback_movable_pages(struct list_head *l);
extern int migrate_page(struct address_space *,
			struct page *, struct page *, enum migrate_mode);
extern int migrate_pages(struct list_head *l, new_page_t x,
			unsigned long private, bool offlining,
			enum migrate_mode mode, int reason);
		unsigned long private, enum migrate_mode mode, int reason);
extern int migrate_huge_page(struct page *, new_page_t x,
			unsigned long private, bool offlining,
			enum migrate_mode mode);
		unsigned long private, enum migrate_mode mode);

extern int fail_migrate_page(struct address_space *,
			struct page *, struct page *);
@@ -62,11 +60,11 @@ extern int migrate_huge_page_move_mapping(struct address_space *mapping,
static inline void putback_lru_pages(struct list_head *l) {}
static inline void putback_movable_pages(struct list_head *l) {}
static inline int migrate_pages(struct list_head *l, new_page_t x,
		unsigned long private, bool offlining,
		enum migrate_mode mode, int reason) { return -ENOSYS; }
		unsigned long private, enum migrate_mode mode, int reason)
	{ return -ENOSYS; }
static inline int migrate_huge_page(struct page *page, new_page_t x,
		unsigned long private, bool offlining,
		enum migrate_mode mode) { return -ENOSYS; }
		unsigned long private, enum migrate_mode mode)
	{ return -ENOSYS; }

static inline int migrate_prep(void) { return -ENOSYS; }
static inline int migrate_prep_local(void) { return -ENOSYS; }
+1 −1
Original line number Diff line number Diff line
@@ -980,7 +980,7 @@ static int compact_zone(struct zone *zone, struct compact_control *cc)

		nr_migrate = cc->nr_migratepages;
		err = migrate_pages(&cc->migratepages, compaction_alloc,
				(unsigned long)cc, false,
				(unsigned long)cc,
				cc->sync ? MIGRATE_SYNC_LIGHT : MIGRATE_ASYNC,
				MR_COMPACTION);
		update_nr_listpages(cc);
+3 −4
Original line number Diff line number Diff line
@@ -1465,7 +1465,7 @@ static int soft_offline_huge_page(struct page *page, int flags)
	unlock_page(hpage);

	/* Keep page count to indicate a given hugepage is isolated. */
	ret = migrate_huge_page(hpage, new_page, MPOL_MF_MOVE_ALL, false,
	ret = migrate_huge_page(hpage, new_page, MPOL_MF_MOVE_ALL,
				MIGRATE_SYNC);
	put_page(hpage);
	if (ret) {
@@ -1600,8 +1600,7 @@ static int __soft_offline_page(struct page *page, int flags)
					page_is_file_cache(page));
		list_add(&page->lru, &pagelist);
		ret = migrate_pages(&pagelist, new_page, MPOL_MF_MOVE_ALL,
							false, MIGRATE_SYNC,
							MR_MEMORY_FAILURE);
					MIGRATE_SYNC, MR_MEMORY_FAILURE);
		if (ret) {
			putback_lru_pages(&pagelist);
			pr_info("soft offline: %#lx: migration failed %d, type %lx\n",
+1 −2
Original line number Diff line number Diff line
@@ -1286,8 +1286,7 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
		 * migrate_pages returns # of failed pages.
		 */
		ret = migrate_pages(&source, alloc_migrate_target, 0,
							true, MIGRATE_SYNC,
							MR_MEMORY_HOTPLUG);
					MIGRATE_SYNC, MR_MEMORY_HOTPLUG);
		if (ret)
			putback_lru_pages(&source);
	}
+3 −5
Original line number Diff line number Diff line
@@ -1014,8 +1014,7 @@ static int migrate_to_node(struct mm_struct *mm, int source, int dest,

	if (!list_empty(&pagelist)) {
		err = migrate_pages(&pagelist, new_node_page, dest,
							false, MIGRATE_SYNC,
							MR_SYSCALL);
					MIGRATE_SYNC, MR_SYSCALL);
		if (err)
			putback_lru_pages(&pagelist);
	}
@@ -1260,8 +1259,7 @@ static long do_mbind(unsigned long start, unsigned long len,
			WARN_ON_ONCE(flags & MPOL_MF_LAZY);
			nr_failed = migrate_pages(&pagelist, new_vma_page,
					(unsigned long)vma,
						false, MIGRATE_SYNC,
						MR_MEMPOLICY_MBIND);
					MIGRATE_SYNC, MR_MEMPOLICY_MBIND);
			if (nr_failed)
				putback_lru_pages(&pagelist);
		}
Loading