]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - mm/migrate.c
mm: adjust address_space_operations.migratepage() return code
[karo-tx-linux.git] / mm / migrate.c
1 /*
2  * Memory Migration functionality - linux/mm/migration.c
3  *
4  * Copyright (C) 2006 Silicon Graphics, Inc., Christoph Lameter
5  *
6  * Page migration was first developed in the context of the memory hotplug
7  * project. The main authors of the migration code are:
8  *
9  * IWAMOTO Toshihiro <iwamoto@valinux.co.jp>
10  * Hirokazu Takahashi <taka@valinux.co.jp>
11  * Dave Hansen <haveblue@us.ibm.com>
12  * Christoph Lameter
13  */
14
15 #include <linux/migrate.h>
16 #include <linux/export.h>
17 #include <linux/swap.h>
18 #include <linux/swapops.h>
19 #include <linux/pagemap.h>
20 #include <linux/buffer_head.h>
21 #include <linux/mm_inline.h>
22 #include <linux/nsproxy.h>
23 #include <linux/pagevec.h>
24 #include <linux/ksm.h>
25 #include <linux/rmap.h>
26 #include <linux/topology.h>
27 #include <linux/cpu.h>
28 #include <linux/cpuset.h>
29 #include <linux/writeback.h>
30 #include <linux/mempolicy.h>
31 #include <linux/vmalloc.h>
32 #include <linux/security.h>
33 #include <linux/memcontrol.h>
34 #include <linux/syscalls.h>
35 #include <linux/hugetlb.h>
36 #include <linux/hugetlb_cgroup.h>
37 #include <linux/gfp.h>
38
39 #include <asm/tlbflush.h>
40
41 #include "internal.h"
42
43 /*
44  * migrate_prep() needs to be called before we start compiling a list of pages
45  * to be migrated using isolate_lru_page(). If scheduling work on other CPUs is
46  * undesirable, use migrate_prep_local()
47  */
48 int migrate_prep(void)
49 {
50         /*
51          * Clear the LRU lists so pages can be isolated.
52          * Note that pages may be moved off the LRU after we have
53          * drained them. Those pages will fail to migrate like other
54          * pages that may be busy.
55          */
56         lru_add_drain_all();
57
58         return 0;
59 }
60
61 /* Do the necessary work of migrate_prep but not if it involves other CPUs */
62 int migrate_prep_local(void)
63 {
64         lru_add_drain();
65
66         return 0;
67 }
68
69 /*
70  * Add isolated pages on the list back to the LRU under page lock
71  * to avoid leaking evictable pages back onto unevictable list.
72  */
73 void putback_lru_pages(struct list_head *l)
74 {
75         struct page *page;
76         struct page *page2;
77
78         list_for_each_entry_safe(page, page2, l, lru) {
79                 list_del(&page->lru);
80                 dec_zone_page_state(page, NR_ISOLATED_ANON +
81                                 page_is_file_cache(page));
82                 putback_lru_page(page);
83         }
84 }
85
86 /*
87  * Restore a potential migration pte to a working pte entry
88  */
89 static int remove_migration_pte(struct page *new, struct vm_area_struct *vma,
90                                  unsigned long addr, void *old)
91 {
92         struct mm_struct *mm = vma->vm_mm;
93         swp_entry_t entry;
94         pmd_t *pmd;
95         pte_t *ptep, pte;
96         spinlock_t *ptl;
97
98         if (unlikely(PageHuge(new))) {
99                 ptep = huge_pte_offset(mm, addr);
100                 if (!ptep)
101                         goto out;
102                 ptl = &mm->page_table_lock;
103         } else {
104                 pmd = mm_find_pmd(mm, addr);
105                 if (!pmd)
106                         goto out;
107                 if (pmd_trans_huge(*pmd))
108                         goto out;
109
110                 ptep = pte_offset_map(pmd, addr);
111
112                 /*
113                  * Peek to check is_swap_pte() before taking ptlock?  No, we
114                  * can race mremap's move_ptes(), which skips anon_vma lock.
115                  */
116
117                 ptl = pte_lockptr(mm, pmd);
118         }
119
120         spin_lock(ptl);
121         pte = *ptep;
122         if (!is_swap_pte(pte))
123                 goto unlock;
124
125         entry = pte_to_swp_entry(pte);
126
127         if (!is_migration_entry(entry) ||
128             migration_entry_to_page(entry) != old)
129                 goto unlock;
130
131         get_page(new);
132         pte = pte_mkold(mk_pte(new, vma->vm_page_prot));
133         if (is_write_migration_entry(entry))
134                 pte = pte_mkwrite(pte);
135 #ifdef CONFIG_HUGETLB_PAGE
136         if (PageHuge(new))
137                 pte = pte_mkhuge(pte);
138 #endif
139         flush_cache_page(vma, addr, pte_pfn(pte));
140         set_pte_at(mm, addr, ptep, pte);
141
142         if (PageHuge(new)) {
143                 if (PageAnon(new))
144                         hugepage_add_anon_rmap(new, vma, addr);
145                 else
146                         page_dup_rmap(new);
147         } else if (PageAnon(new))
148                 page_add_anon_rmap(new, vma, addr);
149         else
150                 page_add_file_rmap(new);
151
152         /* No need to invalidate - it was non-present before */
153         update_mmu_cache(vma, addr, ptep);
154 unlock:
155         pte_unmap_unlock(ptep, ptl);
156 out:
157         return SWAP_AGAIN;
158 }
159
160 /*
161  * Get rid of all migration entries and replace them by
162  * references to the indicated page.
163  */
164 static void remove_migration_ptes(struct page *old, struct page *new)
165 {
166         rmap_walk(new, remove_migration_pte, old);
167 }
168
169 /*
170  * Something used the pte of a page under migration. We need to
171  * get to the page and wait until migration is finished.
172  * When we return from this function the fault will be retried.
173  */
174 void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd,
175                                 unsigned long address)
176 {
177         pte_t *ptep, pte;
178         spinlock_t *ptl;
179         swp_entry_t entry;
180         struct page *page;
181
182         ptep = pte_offset_map_lock(mm, pmd, address, &ptl);
183         pte = *ptep;
184         if (!is_swap_pte(pte))
185                 goto out;
186
187         entry = pte_to_swp_entry(pte);
188         if (!is_migration_entry(entry))
189                 goto out;
190
191         page = migration_entry_to_page(entry);
192
193         /*
194          * Once radix-tree replacement of page migration started, page_count
195          * *must* be zero. And, we don't want to call wait_on_page_locked()
196          * against a page without get_page().
197          * So, we use get_page_unless_zero(), here. Even failed, page fault
198          * will occur again.
199          */
200         if (!get_page_unless_zero(page))
201                 goto out;
202         pte_unmap_unlock(ptep, ptl);
203         wait_on_page_locked(page);
204         put_page(page);
205         return;
206 out:
207         pte_unmap_unlock(ptep, ptl);
208 }
209
210 #ifdef CONFIG_BLOCK
211 /* Returns true if all buffers are successfully locked */
212 static bool buffer_migrate_lock_buffers(struct buffer_head *head,
213                                                         enum migrate_mode mode)
214 {
215         struct buffer_head *bh = head;
216
217         /* Simple case, sync compaction */
218         if (mode != MIGRATE_ASYNC) {
219                 do {
220                         get_bh(bh);
221                         lock_buffer(bh);
222                         bh = bh->b_this_page;
223
224                 } while (bh != head);
225
226                 return true;
227         }
228
229         /* async case, we cannot block on lock_buffer so use trylock_buffer */
230         do {
231                 get_bh(bh);
232                 if (!trylock_buffer(bh)) {
233                         /*
234                          * We failed to lock the buffer and cannot stall in
235                          * async migration. Release the taken locks
236                          */
237                         struct buffer_head *failed_bh = bh;
238                         put_bh(failed_bh);
239                         bh = head;
240                         while (bh != failed_bh) {
241                                 unlock_buffer(bh);
242                                 put_bh(bh);
243                                 bh = bh->b_this_page;
244                         }
245                         return false;
246                 }
247
248                 bh = bh->b_this_page;
249         } while (bh != head);
250         return true;
251 }
252 #else
253 static inline bool buffer_migrate_lock_buffers(struct buffer_head *head,
254                                                         enum migrate_mode mode)
255 {
256         return true;
257 }
258 #endif /* CONFIG_BLOCK */
259
260 /*
261  * Replace the page in the mapping.
262  *
263  * The number of remaining references must be:
264  * 1 for anonymous pages without a mapping
265  * 2 for pages with a mapping
266  * 3 for pages with a mapping and PagePrivate/PagePrivate2 set.
267  */
268 static int migrate_page_move_mapping(struct address_space *mapping,
269                 struct page *newpage, struct page *page,
270                 struct buffer_head *head, enum migrate_mode mode)
271 {
272         int expected_count;
273         void **pslot;
274
275         if (!mapping) {
276                 /* Anonymous page without mapping */
277                 if (page_count(page) != 1)
278                         return -EAGAIN;
279                 return MIGRATEPAGE_SUCCESS;
280         }
281
282         spin_lock_irq(&mapping->tree_lock);
283
284         pslot = radix_tree_lookup_slot(&mapping->page_tree,
285                                         page_index(page));
286
287         expected_count = 2 + page_has_private(page);
288         if (page_count(page) != expected_count ||
289                 radix_tree_deref_slot_protected(pslot, &mapping->tree_lock) != page) {
290                 spin_unlock_irq(&mapping->tree_lock);
291                 return -EAGAIN;
292         }
293
294         if (!page_freeze_refs(page, expected_count)) {
295                 spin_unlock_irq(&mapping->tree_lock);
296                 return -EAGAIN;
297         }
298
299         /*
300          * In the async migration case of moving a page with buffers, lock the
301          * buffers using trylock before the mapping is moved. If the mapping
302          * was moved, we later failed to lock the buffers and could not move
303          * the mapping back due to an elevated page count, we would have to
304          * block waiting on other references to be dropped.
305          */
306         if (mode == MIGRATE_ASYNC && head &&
307                         !buffer_migrate_lock_buffers(head, mode)) {
308                 page_unfreeze_refs(page, expected_count);
309                 spin_unlock_irq(&mapping->tree_lock);
310                 return -EAGAIN;
311         }
312
313         /*
314          * Now we know that no one else is looking at the page.
315          */
316         get_page(newpage);      /* add cache reference */
317         if (PageSwapCache(page)) {
318                 SetPageSwapCache(newpage);
319                 set_page_private(newpage, page_private(page));
320         }
321
322         radix_tree_replace_slot(pslot, newpage);
323
324         /*
325          * Drop cache reference from old page by unfreezing
326          * to one less reference.
327          * We know this isn't the last reference.
328          */
329         page_unfreeze_refs(page, expected_count - 1);
330
331         /*
332          * If moved to a different zone then also account
333          * the page for that zone. Other VM counters will be
334          * taken care of when we establish references to the
335          * new page and drop references to the old page.
336          *
337          * Note that anonymous pages are accounted for
338          * via NR_FILE_PAGES and NR_ANON_PAGES if they
339          * are mapped to swap space.
340          */
341         __dec_zone_page_state(page, NR_FILE_PAGES);
342         __inc_zone_page_state(newpage, NR_FILE_PAGES);
343         if (!PageSwapCache(page) && PageSwapBacked(page)) {
344                 __dec_zone_page_state(page, NR_SHMEM);
345                 __inc_zone_page_state(newpage, NR_SHMEM);
346         }
347         spin_unlock_irq(&mapping->tree_lock);
348
349         return MIGRATEPAGE_SUCCESS;
350 }
351
352 /*
353  * The expected number of remaining references is the same as that
354  * of migrate_page_move_mapping().
355  */
356 int migrate_huge_page_move_mapping(struct address_space *mapping,
357                                    struct page *newpage, struct page *page)
358 {
359         int expected_count;
360         void **pslot;
361
362         if (!mapping) {
363                 if (page_count(page) != 1)
364                         return -EAGAIN;
365                 return MIGRATEPAGE_SUCCESS;
366         }
367
368         spin_lock_irq(&mapping->tree_lock);
369
370         pslot = radix_tree_lookup_slot(&mapping->page_tree,
371                                         page_index(page));
372
373         expected_count = 2 + page_has_private(page);
374         if (page_count(page) != expected_count ||
375                 radix_tree_deref_slot_protected(pslot, &mapping->tree_lock) != page) {
376                 spin_unlock_irq(&mapping->tree_lock);
377                 return -EAGAIN;
378         }
379
380         if (!page_freeze_refs(page, expected_count)) {
381                 spin_unlock_irq(&mapping->tree_lock);
382                 return -EAGAIN;
383         }
384
385         get_page(newpage);
386
387         radix_tree_replace_slot(pslot, newpage);
388
389         page_unfreeze_refs(page, expected_count - 1);
390
391         spin_unlock_irq(&mapping->tree_lock);
392         return MIGRATEPAGE_SUCCESS;
393 }
394
395 /*
396  * Copy the page to its new location
397  */
398 void migrate_page_copy(struct page *newpage, struct page *page)
399 {
400         if (PageHuge(page))
401                 copy_huge_page(newpage, page);
402         else
403                 copy_highpage(newpage, page);
404
405         if (PageError(page))
406                 SetPageError(newpage);
407         if (PageReferenced(page))
408                 SetPageReferenced(newpage);
409         if (PageUptodate(page))
410                 SetPageUptodate(newpage);
411         if (TestClearPageActive(page)) {
412                 VM_BUG_ON(PageUnevictable(page));
413                 SetPageActive(newpage);
414         } else if (TestClearPageUnevictable(page))
415                 SetPageUnevictable(newpage);
416         if (PageChecked(page))
417                 SetPageChecked(newpage);
418         if (PageMappedToDisk(page))
419                 SetPageMappedToDisk(newpage);
420
421         if (PageDirty(page)) {
422                 clear_page_dirty_for_io(page);
423                 /*
424                  * Want to mark the page and the radix tree as dirty, and
425                  * redo the accounting that clear_page_dirty_for_io undid,
426                  * but we can't use set_page_dirty because that function
427                  * is actually a signal that all of the page has become dirty.
428                  * Whereas only part of our page may be dirty.
429                  */
430                 if (PageSwapBacked(page))
431                         SetPageDirty(newpage);
432                 else
433                         __set_page_dirty_nobuffers(newpage);
434         }
435
436         mlock_migrate_page(newpage, page);
437         ksm_migrate_page(newpage, page);
438
439         ClearPageSwapCache(page);
440         ClearPagePrivate(page);
441         set_page_private(page, 0);
442
443         /*
444          * If any waiters have accumulated on the new page then
445          * wake them up.
446          */
447         if (PageWriteback(newpage))
448                 end_page_writeback(newpage);
449 }
450
451 /************************************************************
452  *                    Migration functions
453  ***********************************************************/
454
455 /* Always fail migration. Used for mappings that are not movable */
456 int fail_migrate_page(struct address_space *mapping,
457                         struct page *newpage, struct page *page)
458 {
459         return -EIO;
460 }
461 EXPORT_SYMBOL(fail_migrate_page);
462
463 /*
464  * Common logic to directly migrate a single page suitable for
465  * pages that do not use PagePrivate/PagePrivate2.
466  *
467  * Pages are locked upon entry and exit.
468  */
469 int migrate_page(struct address_space *mapping,
470                 struct page *newpage, struct page *page,
471                 enum migrate_mode mode)
472 {
473         int rc;
474
475         BUG_ON(PageWriteback(page));    /* Writeback must be complete */
476
477         rc = migrate_page_move_mapping(mapping, newpage, page, NULL, mode);
478
479         if (rc != MIGRATEPAGE_SUCCESS)
480                 return rc;
481
482         migrate_page_copy(newpage, page);
483         return MIGRATEPAGE_SUCCESS;
484 }
485 EXPORT_SYMBOL(migrate_page);
486
487 #ifdef CONFIG_BLOCK
488 /*
489  * Migration function for pages with buffers. This function can only be used
490  * if the underlying filesystem guarantees that no other references to "page"
491  * exist.
492  */
493 int buffer_migrate_page(struct address_space *mapping,
494                 struct page *newpage, struct page *page, enum migrate_mode mode)
495 {
496         struct buffer_head *bh, *head;
497         int rc;
498
499         if (!page_has_buffers(page))
500                 return migrate_page(mapping, newpage, page, mode);
501
502         head = page_buffers(page);
503
504         rc = migrate_page_move_mapping(mapping, newpage, page, head, mode);
505
506         if (rc != MIGRATEPAGE_SUCCESS)
507                 return rc;
508
509         /*
510          * In the async case, migrate_page_move_mapping locked the buffers
511          * with an IRQ-safe spinlock held. In the sync case, the buffers
512          * need to be locked now
513          */
514         if (mode != MIGRATE_ASYNC)
515                 BUG_ON(!buffer_migrate_lock_buffers(head, mode));
516
517         ClearPagePrivate(page);
518         set_page_private(newpage, page_private(page));
519         set_page_private(page, 0);
520         put_page(page);
521         get_page(newpage);
522
523         bh = head;
524         do {
525                 set_bh_page(bh, newpage, bh_offset(bh));
526                 bh = bh->b_this_page;
527
528         } while (bh != head);
529
530         SetPagePrivate(newpage);
531
532         migrate_page_copy(newpage, page);
533
534         bh = head;
535         do {
536                 unlock_buffer(bh);
537                 put_bh(bh);
538                 bh = bh->b_this_page;
539
540         } while (bh != head);
541
542         return MIGRATEPAGE_SUCCESS;
543 }
544 EXPORT_SYMBOL(buffer_migrate_page);
545 #endif
546
547 /*
548  * Writeback a page to clean the dirty state
549  */
550 static int writeout(struct address_space *mapping, struct page *page)
551 {
552         struct writeback_control wbc = {
553                 .sync_mode = WB_SYNC_NONE,
554                 .nr_to_write = 1,
555                 .range_start = 0,
556                 .range_end = LLONG_MAX,
557                 .for_reclaim = 1
558         };
559         int rc;
560
561         if (!mapping->a_ops->writepage)
562                 /* No write method for the address space */
563                 return -EINVAL;
564
565         if (!clear_page_dirty_for_io(page))
566                 /* Someone else already triggered a write */
567                 return -EAGAIN;
568
569         /*
570          * A dirty page may imply that the underlying filesystem has
571          * the page on some queue. So the page must be clean for
572          * migration. Writeout may mean we loose the lock and the
573          * page state is no longer what we checked for earlier.
574          * At this point we know that the migration attempt cannot
575          * be successful.
576          */
577         remove_migration_ptes(page, page);
578
579         rc = mapping->a_ops->writepage(page, &wbc);
580
581         if (rc != AOP_WRITEPAGE_ACTIVATE)
582                 /* unlocked. Relock */
583                 lock_page(page);
584
585         return (rc < 0) ? -EIO : -EAGAIN;
586 }
587
588 /*
589  * Default handling if a filesystem does not provide a migration function.
590  */
591 static int fallback_migrate_page(struct address_space *mapping,
592         struct page *newpage, struct page *page, enum migrate_mode mode)
593 {
594         if (PageDirty(page)) {
595                 /* Only writeback pages in full synchronous migration */
596                 if (mode != MIGRATE_SYNC)
597                         return -EBUSY;
598                 return writeout(mapping, page);
599         }
600
601         /*
602          * Buffers may be managed in a filesystem specific way.
603          * We must have no buffers or drop them.
604          */
605         if (page_has_private(page) &&
606             !try_to_release_page(page, GFP_KERNEL))
607                 return -EAGAIN;
608
609         return migrate_page(mapping, newpage, page, mode);
610 }
611
612 /*
613  * Move a page to a newly allocated page
614  * The page is locked and all ptes have been successfully removed.
615  *
616  * The new page will have replaced the old page if this function
617  * is successful.
618  *
619  * Return value:
620  *   < 0 - error code
621  *  MIGRATEPAGE_SUCCESS - success
622  */
623 static int move_to_new_page(struct page *newpage, struct page *page,
624                                 int remap_swapcache, enum migrate_mode mode)
625 {
626         struct address_space *mapping;
627         int rc;
628
629         /*
630          * Block others from accessing the page when we get around to
631          * establishing additional references. We are the only one
632          * holding a reference to the new page at this point.
633          */
634         if (!trylock_page(newpage))
635                 BUG();
636
637         /* Prepare mapping for the new page.*/
638         newpage->index = page->index;
639         newpage->mapping = page->mapping;
640         if (PageSwapBacked(page))
641                 SetPageSwapBacked(newpage);
642
643         mapping = page_mapping(page);
644         if (!mapping)
645                 rc = migrate_page(mapping, newpage, page, mode);
646         else if (mapping->a_ops->migratepage)
647                 /*
648                  * Most pages have a mapping and most filesystems provide a
649                  * migratepage callback. Anonymous pages are part of swap
650                  * space which also has its own migratepage callback. This
651                  * is the most common path for page migration.
652                  */
653                 rc = mapping->a_ops->migratepage(mapping,
654                                                 newpage, page, mode);
655         else
656                 rc = fallback_migrate_page(mapping, newpage, page, mode);
657
658         if (rc != MIGRATEPAGE_SUCCESS) {
659                 newpage->mapping = NULL;
660         } else {
661                 if (remap_swapcache)
662                         remove_migration_ptes(page, newpage);
663                 page->mapping = NULL;
664         }
665
666         unlock_page(newpage);
667
668         return rc;
669 }
670
671 static int __unmap_and_move(struct page *page, struct page *newpage,
672                         int force, bool offlining, enum migrate_mode mode)
673 {
674         int rc = -EAGAIN;
675         int remap_swapcache = 1;
676         struct mem_cgroup *mem;
677         struct anon_vma *anon_vma = NULL;
678
679         if (!trylock_page(page)) {
680                 if (!force || mode == MIGRATE_ASYNC)
681                         goto out;
682
683                 /*
684                  * It's not safe for direct compaction to call lock_page.
685                  * For example, during page readahead pages are added locked
686                  * to the LRU. Later, when the IO completes the pages are
687                  * marked uptodate and unlocked. However, the queueing
688                  * could be merging multiple pages for one bio (e.g.
689                  * mpage_readpages). If an allocation happens for the
690                  * second or third page, the process can end up locking
691                  * the same page twice and deadlocking. Rather than
692                  * trying to be clever about what pages can be locked,
693                  * avoid the use of lock_page for direct compaction
694                  * altogether.
695                  */
696                 if (current->flags & PF_MEMALLOC)
697                         goto out;
698
699                 lock_page(page);
700         }
701
702         /*
703          * Only memory hotplug's offline_pages() caller has locked out KSM,
704          * and can safely migrate a KSM page.  The other cases have skipped
705          * PageKsm along with PageReserved - but it is only now when we have
706          * the page lock that we can be certain it will not go KSM beneath us
707          * (KSM will not upgrade a page from PageAnon to PageKsm when it sees
708          * its pagecount raised, but only here do we take the page lock which
709          * serializes that).
710          */
711         if (PageKsm(page) && !offlining) {
712                 rc = -EBUSY;
713                 goto unlock;
714         }
715
716         /* charge against new page */
717         mem_cgroup_prepare_migration(page, newpage, &mem);
718
719         if (PageWriteback(page)) {
720                 /*
721                  * Only in the case of a full syncronous migration is it
722                  * necessary to wait for PageWriteback. In the async case,
723                  * the retry loop is too short and in the sync-light case,
724                  * the overhead of stalling is too much
725                  */
726                 if (mode != MIGRATE_SYNC) {
727                         rc = -EBUSY;
728                         goto uncharge;
729                 }
730                 if (!force)
731                         goto uncharge;
732                 wait_on_page_writeback(page);
733         }
734         /*
735          * By try_to_unmap(), page->mapcount goes down to 0 here. In this case,
736          * we cannot notice that anon_vma is freed while we migrates a page.
737          * This get_anon_vma() delays freeing anon_vma pointer until the end
738          * of migration. File cache pages are no problem because of page_lock()
739          * File Caches may use write_page() or lock_page() in migration, then,
740          * just care Anon page here.
741          */
742         if (PageAnon(page)) {
743                 /*
744                  * Only page_lock_anon_vma() understands the subtleties of
745                  * getting a hold on an anon_vma from outside one of its mms.
746                  */
747                 anon_vma = page_get_anon_vma(page);
748                 if (anon_vma) {
749                         /*
750                          * Anon page
751                          */
752                 } else if (PageSwapCache(page)) {
753                         /*
754                          * We cannot be sure that the anon_vma of an unmapped
755                          * swapcache page is safe to use because we don't
756                          * know in advance if the VMA that this page belonged
757                          * to still exists. If the VMA and others sharing the
758                          * data have been freed, then the anon_vma could
759                          * already be invalid.
760                          *
761                          * To avoid this possibility, swapcache pages get
762                          * migrated but are not remapped when migration
763                          * completes
764                          */
765                         remap_swapcache = 0;
766                 } else {
767                         goto uncharge;
768                 }
769         }
770
771         /*
772          * Corner case handling:
773          * 1. When a new swap-cache page is read into, it is added to the LRU
774          * and treated as swapcache but it has no rmap yet.
775          * Calling try_to_unmap() against a page->mapping==NULL page will
776          * trigger a BUG.  So handle it here.
777          * 2. An orphaned page (see truncate_complete_page) might have
778          * fs-private metadata. The page can be picked up due to memory
779          * offlining.  Everywhere else except page reclaim, the page is
780          * invisible to the vm, so the page can not be migrated.  So try to
781          * free the metadata, so the page can be freed.
782          */
783         if (!page->mapping) {
784                 VM_BUG_ON(PageAnon(page));
785                 if (page_has_private(page)) {
786                         try_to_free_buffers(page);
787                         goto uncharge;
788                 }
789                 goto skip_unmap;
790         }
791
792         /* Establish migration ptes or remove ptes */
793         try_to_unmap(page, TTU_MIGRATION|TTU_IGNORE_MLOCK|TTU_IGNORE_ACCESS);
794
795 skip_unmap:
796         if (!page_mapped(page))
797                 rc = move_to_new_page(newpage, page, remap_swapcache, mode);
798
799         if (rc && remap_swapcache)
800                 remove_migration_ptes(page, page);
801
802         /* Drop an anon_vma reference if we took one */
803         if (anon_vma)
804                 put_anon_vma(anon_vma);
805
806 uncharge:
807         mem_cgroup_end_migration(mem, page, newpage, rc == MIGRATEPAGE_SUCCESS);
808 unlock:
809         unlock_page(page);
810 out:
811         return rc;
812 }
813
814 /*
815  * Obtain the lock on page, remove all ptes and migrate the page
816  * to the newly allocated page in newpage.
817  */
818 static int unmap_and_move(new_page_t get_new_page, unsigned long private,
819                         struct page *page, int force, bool offlining,
820                         enum migrate_mode mode)
821 {
822         int rc = 0;
823         int *result = NULL;
824         struct page *newpage = get_new_page(page, private, &result);
825
826         if (!newpage)
827                 return -ENOMEM;
828
829         if (page_count(page) == 1) {
830                 /* page was freed from under us. So we are done. */
831                 goto out;
832         }
833
834         if (unlikely(PageTransHuge(page)))
835                 if (unlikely(split_huge_page(page)))
836                         goto out;
837
838         rc = __unmap_and_move(page, newpage, force, offlining, mode);
839 out:
840         if (rc != -EAGAIN) {
841                 /*
842                  * A page that has been migrated has all references
843                  * removed and will be freed. A page that has not been
844                  * migrated will have kepts its references and be
845                  * restored.
846                  */
847                 list_del(&page->lru);
848                 dec_zone_page_state(page, NR_ISOLATED_ANON +
849                                 page_is_file_cache(page));
850                 putback_lru_page(page);
851         }
852         /*
853          * Move the new page to the LRU. If migration was not successful
854          * then this will free the page.
855          */
856         putback_lru_page(newpage);
857         if (result) {
858                 if (rc)
859                         *result = rc;
860                 else
861                         *result = page_to_nid(newpage);
862         }
863         return rc;
864 }
865
866 /*
867  * Counterpart of unmap_and_move_page() for hugepage migration.
868  *
869  * This function doesn't wait the completion of hugepage I/O
870  * because there is no race between I/O and migration for hugepage.
871  * Note that currently hugepage I/O occurs only in direct I/O
872  * where no lock is held and PG_writeback is irrelevant,
873  * and writeback status of all subpages are counted in the reference
874  * count of the head page (i.e. if all subpages of a 2MB hugepage are
875  * under direct I/O, the reference of the head page is 512 and a bit more.)
876  * This means that when we try to migrate hugepage whose subpages are
877  * doing direct I/O, some references remain after try_to_unmap() and
878  * hugepage migration fails without data corruption.
879  *
880  * There is also no race when direct I/O is issued on the page under migration,
881  * because then pte is replaced with migration swap entry and direct I/O code
882  * will wait in the page fault for migration to complete.
883  */
884 static int unmap_and_move_huge_page(new_page_t get_new_page,
885                                 unsigned long private, struct page *hpage,
886                                 int force, bool offlining,
887                                 enum migrate_mode mode)
888 {
889         int rc = 0;
890         int *result = NULL;
891         struct page *new_hpage = get_new_page(hpage, private, &result);
892         struct anon_vma *anon_vma = NULL;
893
894         if (!new_hpage)
895                 return -ENOMEM;
896
897         rc = -EAGAIN;
898
899         if (!trylock_page(hpage)) {
900                 if (!force || mode != MIGRATE_SYNC)
901                         goto out;
902                 lock_page(hpage);
903         }
904
905         if (PageAnon(hpage))
906                 anon_vma = page_get_anon_vma(hpage);
907
908         try_to_unmap(hpage, TTU_MIGRATION|TTU_IGNORE_MLOCK|TTU_IGNORE_ACCESS);
909
910         if (!page_mapped(hpage))
911                 rc = move_to_new_page(new_hpage, hpage, 1, mode);
912
913         if (rc)
914                 remove_migration_ptes(hpage, hpage);
915
916         if (anon_vma)
917                 put_anon_vma(anon_vma);
918
919         if (!rc)
920                 hugetlb_cgroup_migrate(hpage, new_hpage);
921
922         unlock_page(hpage);
923 out:
924         put_page(new_hpage);
925         if (result) {
926                 if (rc)
927                         *result = rc;
928                 else
929                         *result = page_to_nid(new_hpage);
930         }
931         return rc;
932 }
933
934 /*
935  * migrate_pages
936  *
937  * The function takes one list of pages to migrate and a function
938  * that determines from the page to be migrated and the private data
939  * the target of the move and allocates the page.
940  *
941  * The function returns after 10 attempts or if no pages
942  * are movable anymore because to has become empty
943  * or no retryable pages exist anymore.
944  * Caller should call putback_lru_pages to return pages to the LRU
945  * or free list only if ret != 0.
946  *
947  * Return: Number of pages not migrated or error code.
948  */
949 int migrate_pages(struct list_head *from,
950                 new_page_t get_new_page, unsigned long private, bool offlining,
951                 enum migrate_mode mode)
952 {
953         int retry = 1;
954         int nr_failed = 0;
955         int pass = 0;
956         struct page *page;
957         struct page *page2;
958         int swapwrite = current->flags & PF_SWAPWRITE;
959         int rc;
960
961         if (!swapwrite)
962                 current->flags |= PF_SWAPWRITE;
963
964         for(pass = 0; pass < 10 && retry; pass++) {
965                 retry = 0;
966
967                 list_for_each_entry_safe(page, page2, from, lru) {
968                         cond_resched();
969
970                         rc = unmap_and_move(get_new_page, private,
971                                                 page, pass > 2, offlining,
972                                                 mode);
973
974                         switch(rc) {
975                         case -ENOMEM:
976                                 goto out;
977                         case -EAGAIN:
978                                 retry++;
979                                 break;
980                         case MIGRATEPAGE_SUCCESS:
981                                 break;
982                         default:
983                                 /* Permanent failure */
984                                 nr_failed++;
985                                 break;
986                         }
987                 }
988         }
989         rc = nr_failed + retry;
990 out:
991         if (!swapwrite)
992                 current->flags &= ~PF_SWAPWRITE;
993
994         return rc;
995 }
996
997 int migrate_huge_page(struct page *hpage, new_page_t get_new_page,
998                       unsigned long private, bool offlining,
999                       enum migrate_mode mode)
1000 {
1001         int pass, rc;
1002
1003         for (pass = 0; pass < 10; pass++) {
1004                 rc = unmap_and_move_huge_page(get_new_page,
1005                                               private, hpage, pass > 2, offlining,
1006                                               mode);
1007                 switch (rc) {
1008                 case -ENOMEM:
1009                         goto out;
1010                 case -EAGAIN:
1011                         /* try again */
1012                         cond_resched();
1013                         break;
1014                 case MIGRATEPAGE_SUCCESS:
1015                         goto out;
1016                 default:
1017                         rc = -EIO;
1018                         goto out;
1019                 }
1020         }
1021 out:
1022         return rc;
1023 }
1024
1025 #ifdef CONFIG_NUMA
1026 /*
1027  * Move a list of individual pages
1028  */
1029 struct page_to_node {
1030         unsigned long addr;
1031         struct page *page;
1032         int node;
1033         int status;
1034 };
1035
1036 static struct page *new_page_node(struct page *p, unsigned long private,
1037                 int **result)
1038 {
1039         struct page_to_node *pm = (struct page_to_node *)private;
1040
1041         while (pm->node != MAX_NUMNODES && pm->page != p)
1042                 pm++;
1043
1044         if (pm->node == MAX_NUMNODES)
1045                 return NULL;
1046
1047         *result = &pm->status;
1048
1049         return alloc_pages_exact_node(pm->node,
1050                                 GFP_HIGHUSER_MOVABLE | GFP_THISNODE, 0);
1051 }
1052
1053 /*
1054  * Move a set of pages as indicated in the pm array. The addr
1055  * field must be set to the virtual address of the page to be moved
1056  * and the node number must contain a valid target node.
1057  * The pm array ends with node = MAX_NUMNODES.
1058  */
1059 static int do_move_page_to_node_array(struct mm_struct *mm,
1060                                       struct page_to_node *pm,
1061                                       int migrate_all)
1062 {
1063         int err;
1064         struct page_to_node *pp;
1065         LIST_HEAD(pagelist);
1066
1067         down_read(&mm->mmap_sem);
1068
1069         /*
1070          * Build a list of pages to migrate
1071          */
1072         for (pp = pm; pp->node != MAX_NUMNODES; pp++) {
1073                 struct vm_area_struct *vma;
1074                 struct page *page;
1075
1076                 err = -EFAULT;
1077                 vma = find_vma(mm, pp->addr);
1078                 if (!vma || pp->addr < vma->vm_start || !vma_migratable(vma))
1079                         goto set_status;
1080
1081                 page = follow_page(vma, pp->addr, FOLL_GET|FOLL_SPLIT);
1082
1083                 err = PTR_ERR(page);
1084                 if (IS_ERR(page))
1085                         goto set_status;
1086
1087                 err = -ENOENT;
1088                 if (!page)
1089                         goto set_status;
1090
1091                 /* Use PageReserved to check for zero page */
1092                 if (PageReserved(page) || PageKsm(page))
1093                         goto put_and_set;
1094
1095                 pp->page = page;
1096                 err = page_to_nid(page);
1097
1098                 if (err == pp->node)
1099                         /*
1100                          * Node already in the right place
1101                          */
1102                         goto put_and_set;
1103
1104                 err = -EACCES;
1105                 if (page_mapcount(page) > 1 &&
1106                                 !migrate_all)
1107                         goto put_and_set;
1108
1109                 err = isolate_lru_page(page);
1110                 if (!err) {
1111                         list_add_tail(&page->lru, &pagelist);
1112                         inc_zone_page_state(page, NR_ISOLATED_ANON +
1113                                             page_is_file_cache(page));
1114                 }
1115 put_and_set:
1116                 /*
1117                  * Either remove the duplicate refcount from
1118                  * isolate_lru_page() or drop the page ref if it was
1119                  * not isolated.
1120                  */
1121                 put_page(page);
1122 set_status:
1123                 pp->status = err;
1124         }
1125
1126         err = 0;
1127         if (!list_empty(&pagelist)) {
1128                 err = migrate_pages(&pagelist, new_page_node,
1129                                 (unsigned long)pm, 0, MIGRATE_SYNC);
1130                 if (err)
1131                         putback_lru_pages(&pagelist);
1132         }
1133
1134         up_read(&mm->mmap_sem);
1135         return err;
1136 }
1137
1138 /*
1139  * Migrate an array of page address onto an array of nodes and fill
1140  * the corresponding array of status.
1141  */
1142 static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes,
1143                          unsigned long nr_pages,
1144                          const void __user * __user *pages,
1145                          const int __user *nodes,
1146                          int __user *status, int flags)
1147 {
1148         struct page_to_node *pm;
1149         unsigned long chunk_nr_pages;
1150         unsigned long chunk_start;
1151         int err;
1152
1153         err = -ENOMEM;
1154         pm = (struct page_to_node *)__get_free_page(GFP_KERNEL);
1155         if (!pm)
1156                 goto out;
1157
1158         migrate_prep();
1159
1160         /*
1161          * Store a chunk of page_to_node array in a page,
1162          * but keep the last one as a marker
1163          */
1164         chunk_nr_pages = (PAGE_SIZE / sizeof(struct page_to_node)) - 1;
1165
1166         for (chunk_start = 0;
1167              chunk_start < nr_pages;
1168              chunk_start += chunk_nr_pages) {
1169                 int j;
1170
1171                 if (chunk_start + chunk_nr_pages > nr_pages)
1172                         chunk_nr_pages = nr_pages - chunk_start;
1173
1174                 /* fill the chunk pm with addrs and nodes from user-space */
1175                 for (j = 0; j < chunk_nr_pages; j++) {
1176                         const void __user *p;
1177                         int node;
1178
1179                         err = -EFAULT;
1180                         if (get_user(p, pages + j + chunk_start))
1181                                 goto out_pm;
1182                         pm[j].addr = (unsigned long) p;
1183
1184                         if (get_user(node, nodes + j + chunk_start))
1185                                 goto out_pm;
1186
1187                         err = -ENODEV;
1188                         if (node < 0 || node >= MAX_NUMNODES)
1189                                 goto out_pm;
1190
1191                         if (!node_state(node, N_HIGH_MEMORY))
1192                                 goto out_pm;
1193
1194                         err = -EACCES;
1195                         if (!node_isset(node, task_nodes))
1196                                 goto out_pm;
1197
1198                         pm[j].node = node;
1199                 }
1200
1201                 /* End marker for this chunk */
1202                 pm[chunk_nr_pages].node = MAX_NUMNODES;
1203
1204                 /* Migrate this chunk */
1205                 err = do_move_page_to_node_array(mm, pm,
1206                                                  flags & MPOL_MF_MOVE_ALL);
1207                 if (err < 0)
1208                         goto out_pm;
1209
1210                 /* Return status information */
1211                 for (j = 0; j < chunk_nr_pages; j++)
1212                         if (put_user(pm[j].status, status + j + chunk_start)) {
1213                                 err = -EFAULT;
1214                                 goto out_pm;
1215                         }
1216         }
1217         err = 0;
1218
1219 out_pm:
1220         free_page((unsigned long)pm);
1221 out:
1222         return err;
1223 }
1224
1225 /*
1226  * Determine the nodes of an array of pages and store it in an array of status.
1227  */
1228 static void do_pages_stat_array(struct mm_struct *mm, unsigned long nr_pages,
1229                                 const void __user **pages, int *status)
1230 {
1231         unsigned long i;
1232
1233         down_read(&mm->mmap_sem);
1234
1235         for (i = 0; i < nr_pages; i++) {
1236                 unsigned long addr = (unsigned long)(*pages);
1237                 struct vm_area_struct *vma;
1238                 struct page *page;
1239                 int err = -EFAULT;
1240
1241                 vma = find_vma(mm, addr);
1242                 if (!vma || addr < vma->vm_start)
1243                         goto set_status;
1244
1245                 page = follow_page(vma, addr, 0);
1246
1247                 err = PTR_ERR(page);
1248                 if (IS_ERR(page))
1249                         goto set_status;
1250
1251                 err = -ENOENT;
1252                 /* Use PageReserved to check for zero page */
1253                 if (!page || PageReserved(page) || PageKsm(page))
1254                         goto set_status;
1255
1256                 err = page_to_nid(page);
1257 set_status:
1258                 *status = err;
1259
1260                 pages++;
1261                 status++;
1262         }
1263
1264         up_read(&mm->mmap_sem);
1265 }
1266
1267 /*
1268  * Determine the nodes of a user array of pages and store it in
1269  * a user array of status.
1270  */
1271 static int do_pages_stat(struct mm_struct *mm, unsigned long nr_pages,
1272                          const void __user * __user *pages,
1273                          int __user *status)
1274 {
1275 #define DO_PAGES_STAT_CHUNK_NR 16
1276         const void __user *chunk_pages[DO_PAGES_STAT_CHUNK_NR];
1277         int chunk_status[DO_PAGES_STAT_CHUNK_NR];
1278
1279         while (nr_pages) {
1280                 unsigned long chunk_nr;
1281
1282                 chunk_nr = nr_pages;
1283                 if (chunk_nr > DO_PAGES_STAT_CHUNK_NR)
1284                         chunk_nr = DO_PAGES_STAT_CHUNK_NR;
1285
1286                 if (copy_from_user(chunk_pages, pages, chunk_nr * sizeof(*chunk_pages)))
1287                         break;
1288
1289                 do_pages_stat_array(mm, chunk_nr, chunk_pages, chunk_status);
1290
1291                 if (copy_to_user(status, chunk_status, chunk_nr * sizeof(*status)))
1292                         break;
1293
1294                 pages += chunk_nr;
1295                 status += chunk_nr;
1296                 nr_pages -= chunk_nr;
1297         }
1298         return nr_pages ? -EFAULT : 0;
1299 }
1300
1301 /*
1302  * Move a list of pages in the address space of the currently executing
1303  * process.
1304  */
1305 SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
1306                 const void __user * __user *, pages,
1307                 const int __user *, nodes,
1308                 int __user *, status, int, flags)
1309 {
1310         const struct cred *cred = current_cred(), *tcred;
1311         struct task_struct *task;
1312         struct mm_struct *mm;
1313         int err;
1314         nodemask_t task_nodes;
1315
1316         /* Check flags */
1317         if (flags & ~(MPOL_MF_MOVE|MPOL_MF_MOVE_ALL))
1318                 return -EINVAL;
1319
1320         if ((flags & MPOL_MF_MOVE_ALL) && !capable(CAP_SYS_NICE))
1321                 return -EPERM;
1322
1323         /* Find the mm_struct */
1324         rcu_read_lock();
1325         task = pid ? find_task_by_vpid(pid) : current;
1326         if (!task) {
1327                 rcu_read_unlock();
1328                 return -ESRCH;
1329         }
1330         get_task_struct(task);
1331
1332         /*
1333          * Check if this process has the right to modify the specified
1334          * process. The right exists if the process has administrative
1335          * capabilities, superuser privileges or the same
1336          * userid as the target process.
1337          */
1338         tcred = __task_cred(task);
1339         if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) &&
1340             !uid_eq(cred->uid,  tcred->suid) && !uid_eq(cred->uid,  tcred->uid) &&
1341             !capable(CAP_SYS_NICE)) {
1342                 rcu_read_unlock();
1343                 err = -EPERM;
1344                 goto out;
1345         }
1346         rcu_read_unlock();
1347
1348         err = security_task_movememory(task);
1349         if (err)
1350                 goto out;
1351
1352         task_nodes = cpuset_mems_allowed(task);
1353         mm = get_task_mm(task);
1354         put_task_struct(task);
1355
1356         if (!mm)
1357                 return -EINVAL;
1358
1359         if (nodes)
1360                 err = do_pages_move(mm, task_nodes, nr_pages, pages,
1361                                     nodes, status, flags);
1362         else
1363                 err = do_pages_stat(mm, nr_pages, pages, status);
1364
1365         mmput(mm);
1366         return err;
1367
1368 out:
1369         put_task_struct(task);
1370         return err;
1371 }
1372
1373 /*
1374  * Call migration functions in the vma_ops that may prepare
1375  * memory in a vm for migration. migration functions may perform
1376  * the migration for vmas that do not have an underlying page struct.
1377  */
1378 int migrate_vmas(struct mm_struct *mm, const nodemask_t *to,
1379         const nodemask_t *from, unsigned long flags)
1380 {
1381         struct vm_area_struct *vma;
1382         int err = 0;
1383
1384         for (vma = mm->mmap; vma && !err; vma = vma->vm_next) {
1385                 if (vma->vm_ops && vma->vm_ops->migrate) {
1386                         err = vma->vm_ops->migrate(vma, to, from, flags);
1387                         if (err)
1388                                 break;
1389                 }
1390         }
1391         return err;
1392 }
1393 #endif