]> git.openfabrics.org - ~shefty/rdma-dev.git/blob - mm/migrate.c
mm: introduce mm_find_pmd()
[~shefty/rdma-dev.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 0;
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 0;
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 0;
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 0;
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)
480                 return rc;
481
482         migrate_page_copy(newpage, page);
483         return 0;
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)
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 0;
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  *  == 0 - 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) {
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 == 0);
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 0:
981                                 break;
982                         default:
983                                 /* Permanent failure */
984                                 nr_failed++;
985                                 break;
986                         }
987                 }
988         }
989         rc = 0;
990 out:
991         if (!swapwrite)
992                 current->flags &= ~PF_SWAPWRITE;
993
994         if (rc)
995                 return rc;
996
997         return nr_failed + retry;
998 }
999
1000 int migrate_huge_page(struct page *hpage, new_page_t get_new_page,
1001                       unsigned long private, bool offlining,
1002                       enum migrate_mode mode)
1003 {
1004         int pass, rc;
1005
1006         for (pass = 0; pass < 10; pass++) {
1007                 rc = unmap_and_move_huge_page(get_new_page,
1008                                               private, hpage, pass > 2, offlining,
1009                                               mode);
1010                 switch (rc) {
1011                 case -ENOMEM:
1012                         goto out;
1013                 case -EAGAIN:
1014                         /* try again */
1015                         cond_resched();
1016                         break;
1017                 case 0:
1018                         goto out;
1019                 default:
1020                         rc = -EIO;
1021                         goto out;
1022                 }
1023         }
1024 out:
1025         return rc;
1026 }
1027
1028 #ifdef CONFIG_NUMA
1029 /*
1030  * Move a list of individual pages
1031  */
1032 struct page_to_node {
1033         unsigned long addr;
1034         struct page *page;
1035         int node;
1036         int status;
1037 };
1038
1039 static struct page *new_page_node(struct page *p, unsigned long private,
1040                 int **result)
1041 {
1042         struct page_to_node *pm = (struct page_to_node *)private;
1043
1044         while (pm->node != MAX_NUMNODES && pm->page != p)
1045                 pm++;
1046
1047         if (pm->node == MAX_NUMNODES)
1048                 return NULL;
1049
1050         *result = &pm->status;
1051
1052         return alloc_pages_exact_node(pm->node,
1053                                 GFP_HIGHUSER_MOVABLE | GFP_THISNODE, 0);
1054 }
1055
1056 /*
1057  * Move a set of pages as indicated in the pm array. The addr
1058  * field must be set to the virtual address of the page to be moved
1059  * and the node number must contain a valid target node.
1060  * The pm array ends with node = MAX_NUMNODES.
1061  */
1062 static int do_move_page_to_node_array(struct mm_struct *mm,
1063                                       struct page_to_node *pm,
1064                                       int migrate_all)
1065 {
1066         int err;
1067         struct page_to_node *pp;
1068         LIST_HEAD(pagelist);
1069
1070         down_read(&mm->mmap_sem);
1071
1072         /*
1073          * Build a list of pages to migrate
1074          */
1075         for (pp = pm; pp->node != MAX_NUMNODES; pp++) {
1076                 struct vm_area_struct *vma;
1077                 struct page *page;
1078
1079                 err = -EFAULT;
1080                 vma = find_vma(mm, pp->addr);
1081                 if (!vma || pp->addr < vma->vm_start || !vma_migratable(vma))
1082                         goto set_status;
1083
1084                 page = follow_page(vma, pp->addr, FOLL_GET|FOLL_SPLIT);
1085
1086                 err = PTR_ERR(page);
1087                 if (IS_ERR(page))
1088                         goto set_status;
1089
1090                 err = -ENOENT;
1091                 if (!page)
1092                         goto set_status;
1093
1094                 /* Use PageReserved to check for zero page */
1095                 if (PageReserved(page) || PageKsm(page))
1096                         goto put_and_set;
1097
1098                 pp->page = page;
1099                 err = page_to_nid(page);
1100
1101                 if (err == pp->node)
1102                         /*
1103                          * Node already in the right place
1104                          */
1105                         goto put_and_set;
1106
1107                 err = -EACCES;
1108                 if (page_mapcount(page) > 1 &&
1109                                 !migrate_all)
1110                         goto put_and_set;
1111
1112                 err = isolate_lru_page(page);
1113                 if (!err) {
1114                         list_add_tail(&page->lru, &pagelist);
1115                         inc_zone_page_state(page, NR_ISOLATED_ANON +
1116                                             page_is_file_cache(page));
1117                 }
1118 put_and_set:
1119                 /*
1120                  * Either remove the duplicate refcount from
1121                  * isolate_lru_page() or drop the page ref if it was
1122                  * not isolated.
1123                  */
1124                 put_page(page);
1125 set_status:
1126                 pp->status = err;
1127         }
1128
1129         err = 0;
1130         if (!list_empty(&pagelist)) {
1131                 err = migrate_pages(&pagelist, new_page_node,
1132                                 (unsigned long)pm, 0, MIGRATE_SYNC);
1133                 if (err)
1134                         putback_lru_pages(&pagelist);
1135         }
1136
1137         up_read(&mm->mmap_sem);
1138         return err;
1139 }
1140
1141 /*
1142  * Migrate an array of page address onto an array of nodes and fill
1143  * the corresponding array of status.
1144  */
1145 static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes,
1146                          unsigned long nr_pages,
1147                          const void __user * __user *pages,
1148                          const int __user *nodes,
1149                          int __user *status, int flags)
1150 {
1151         struct page_to_node *pm;
1152         unsigned long chunk_nr_pages;
1153         unsigned long chunk_start;
1154         int err;
1155
1156         err = -ENOMEM;
1157         pm = (struct page_to_node *)__get_free_page(GFP_KERNEL);
1158         if (!pm)
1159                 goto out;
1160
1161         migrate_prep();
1162
1163         /*
1164          * Store a chunk of page_to_node array in a page,
1165          * but keep the last one as a marker
1166          */
1167         chunk_nr_pages = (PAGE_SIZE / sizeof(struct page_to_node)) - 1;
1168
1169         for (chunk_start = 0;
1170              chunk_start < nr_pages;
1171              chunk_start += chunk_nr_pages) {
1172                 int j;
1173
1174                 if (chunk_start + chunk_nr_pages > nr_pages)
1175                         chunk_nr_pages = nr_pages - chunk_start;
1176
1177                 /* fill the chunk pm with addrs and nodes from user-space */
1178                 for (j = 0; j < chunk_nr_pages; j++) {
1179                         const void __user *p;
1180                         int node;
1181
1182                         err = -EFAULT;
1183                         if (get_user(p, pages + j + chunk_start))
1184                                 goto out_pm;
1185                         pm[j].addr = (unsigned long) p;
1186
1187                         if (get_user(node, nodes + j + chunk_start))
1188                                 goto out_pm;
1189
1190                         err = -ENODEV;
1191                         if (node < 0 || node >= MAX_NUMNODES)
1192                                 goto out_pm;
1193
1194                         if (!node_state(node, N_HIGH_MEMORY))
1195                                 goto out_pm;
1196
1197                         err = -EACCES;
1198                         if (!node_isset(node, task_nodes))
1199                                 goto out_pm;
1200
1201                         pm[j].node = node;
1202                 }
1203
1204                 /* End marker for this chunk */
1205                 pm[chunk_nr_pages].node = MAX_NUMNODES;
1206
1207                 /* Migrate this chunk */
1208                 err = do_move_page_to_node_array(mm, pm,
1209                                                  flags & MPOL_MF_MOVE_ALL);
1210                 if (err < 0)
1211                         goto out_pm;
1212
1213                 /* Return status information */
1214                 for (j = 0; j < chunk_nr_pages; j++)
1215                         if (put_user(pm[j].status, status + j + chunk_start)) {
1216                                 err = -EFAULT;
1217                                 goto out_pm;
1218                         }
1219         }
1220         err = 0;
1221
1222 out_pm:
1223         free_page((unsigned long)pm);
1224 out:
1225         return err;
1226 }
1227
1228 /*
1229  * Determine the nodes of an array of pages and store it in an array of status.
1230  */
1231 static void do_pages_stat_array(struct mm_struct *mm, unsigned long nr_pages,
1232                                 const void __user **pages, int *status)
1233 {
1234         unsigned long i;
1235
1236         down_read(&mm->mmap_sem);
1237
1238         for (i = 0; i < nr_pages; i++) {
1239                 unsigned long addr = (unsigned long)(*pages);
1240                 struct vm_area_struct *vma;
1241                 struct page *page;
1242                 int err = -EFAULT;
1243
1244                 vma = find_vma(mm, addr);
1245                 if (!vma || addr < vma->vm_start)
1246                         goto set_status;
1247
1248                 page = follow_page(vma, addr, 0);
1249
1250                 err = PTR_ERR(page);
1251                 if (IS_ERR(page))
1252                         goto set_status;
1253
1254                 err = -ENOENT;
1255                 /* Use PageReserved to check for zero page */
1256                 if (!page || PageReserved(page) || PageKsm(page))
1257                         goto set_status;
1258
1259                 err = page_to_nid(page);
1260 set_status:
1261                 *status = err;
1262
1263                 pages++;
1264                 status++;
1265         }
1266
1267         up_read(&mm->mmap_sem);
1268 }
1269
1270 /*
1271  * Determine the nodes of a user array of pages and store it in
1272  * a user array of status.
1273  */
1274 static int do_pages_stat(struct mm_struct *mm, unsigned long nr_pages,
1275                          const void __user * __user *pages,
1276                          int __user *status)
1277 {
1278 #define DO_PAGES_STAT_CHUNK_NR 16
1279         const void __user *chunk_pages[DO_PAGES_STAT_CHUNK_NR];
1280         int chunk_status[DO_PAGES_STAT_CHUNK_NR];
1281
1282         while (nr_pages) {
1283                 unsigned long chunk_nr;
1284
1285                 chunk_nr = nr_pages;
1286                 if (chunk_nr > DO_PAGES_STAT_CHUNK_NR)
1287                         chunk_nr = DO_PAGES_STAT_CHUNK_NR;
1288
1289                 if (copy_from_user(chunk_pages, pages, chunk_nr * sizeof(*chunk_pages)))
1290                         break;
1291
1292                 do_pages_stat_array(mm, chunk_nr, chunk_pages, chunk_status);
1293
1294                 if (copy_to_user(status, chunk_status, chunk_nr * sizeof(*status)))
1295                         break;
1296
1297                 pages += chunk_nr;
1298                 status += chunk_nr;
1299                 nr_pages -= chunk_nr;
1300         }
1301         return nr_pages ? -EFAULT : 0;
1302 }
1303
1304 /*
1305  * Move a list of pages in the address space of the currently executing
1306  * process.
1307  */
1308 SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
1309                 const void __user * __user *, pages,
1310                 const int __user *, nodes,
1311                 int __user *, status, int, flags)
1312 {
1313         const struct cred *cred = current_cred(), *tcred;
1314         struct task_struct *task;
1315         struct mm_struct *mm;
1316         int err;
1317         nodemask_t task_nodes;
1318
1319         /* Check flags */
1320         if (flags & ~(MPOL_MF_MOVE|MPOL_MF_MOVE_ALL))
1321                 return -EINVAL;
1322
1323         if ((flags & MPOL_MF_MOVE_ALL) && !capable(CAP_SYS_NICE))
1324                 return -EPERM;
1325
1326         /* Find the mm_struct */
1327         rcu_read_lock();
1328         task = pid ? find_task_by_vpid(pid) : current;
1329         if (!task) {
1330                 rcu_read_unlock();
1331                 return -ESRCH;
1332         }
1333         get_task_struct(task);
1334
1335         /*
1336          * Check if this process has the right to modify the specified
1337          * process. The right exists if the process has administrative
1338          * capabilities, superuser privileges or the same
1339          * userid as the target process.
1340          */
1341         tcred = __task_cred(task);
1342         if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) &&
1343             !uid_eq(cred->uid,  tcred->suid) && !uid_eq(cred->uid,  tcred->uid) &&
1344             !capable(CAP_SYS_NICE)) {
1345                 rcu_read_unlock();
1346                 err = -EPERM;
1347                 goto out;
1348         }
1349         rcu_read_unlock();
1350
1351         err = security_task_movememory(task);
1352         if (err)
1353                 goto out;
1354
1355         task_nodes = cpuset_mems_allowed(task);
1356         mm = get_task_mm(task);
1357         put_task_struct(task);
1358
1359         if (!mm)
1360                 return -EINVAL;
1361
1362         if (nodes)
1363                 err = do_pages_move(mm, task_nodes, nr_pages, pages,
1364                                     nodes, status, flags);
1365         else
1366                 err = do_pages_stat(mm, nr_pages, pages, status);
1367
1368         mmput(mm);
1369         return err;
1370
1371 out:
1372         put_task_struct(task);
1373         return err;
1374 }
1375
1376 /*
1377  * Call migration functions in the vma_ops that may prepare
1378  * memory in a vm for migration. migration functions may perform
1379  * the migration for vmas that do not have an underlying page struct.
1380  */
1381 int migrate_vmas(struct mm_struct *mm, const nodemask_t *to,
1382         const nodemask_t *from, unsigned long flags)
1383 {
1384         struct vm_area_struct *vma;
1385         int err = 0;
1386
1387         for (vma = mm->mmap; vma && !err; vma = vma->vm_next) {
1388                 if (vma->vm_ops && vma->vm_ops->migrate) {
1389                         err = vma->vm_ops->migrate(vma, to, from, flags);
1390                         if (err)
1391                                 break;
1392                 }
1393         }
1394         return err;
1395 }
1396 #endif