Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 217445
b: refs/heads/master
c: cf608ac
h: refs/heads/master
i:
  217443: 4e86de6
v: v3
  • Loading branch information
Minchan Kim authored and Linus Torvalds committed Oct 26, 2010
1 parent 91cae48 commit b92a4b5
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e4455abb50a19562dbfdc51a8424fda9b588bd6d
refs/heads/master: cf608ac19c95804dc2df43b1f4f9e068aa9034ab
1 change: 1 addition & 0 deletions trunk/mm/memory-failure.c
Original file line number Diff line number Diff line change
Expand Up @@ -1292,6 +1292,7 @@ static int soft_offline_huge_page(struct page *page, int flags)
list_add(&hpage->lru, &pagelist);
ret = migrate_huge_pages(&pagelist, new_page, MPOL_MF_MOVE_ALL, 0);
if (ret) {
putback_lru_pages(&pagelist);
pr_debug("soft offline: %#lx: migration failed %d, type %lx\n",
pfn, ret, page->flags);
if (ret > 0)
Expand Down
2 changes: 2 additions & 0 deletions trunk/mm/memory_hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -731,6 +731,8 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn)
goto out;
/* this function returns # of failed pages */
ret = migrate_pages(&source, hotremove_migrate_alloc, 0, 1);
if (ret)
putback_lru_pages(&source);

out:
return ret;
Expand Down
10 changes: 8 additions & 2 deletions trunk/mm/mempolicy.c
Original file line number Diff line number Diff line change
Expand Up @@ -931,8 +931,11 @@ static int migrate_to_node(struct mm_struct *mm, int source, int dest,
check_range(mm, mm->mmap->vm_start, mm->task_size, &nmask,
flags | MPOL_MF_DISCONTIG_OK, &pagelist);

if (!list_empty(&pagelist))
if (!list_empty(&pagelist)) {
err = migrate_pages(&pagelist, new_node_page, dest, 0);
if (err)
putback_lru_pages(&pagelist);
}

return err;
}
Expand Down Expand Up @@ -1147,9 +1150,12 @@ static long do_mbind(unsigned long start, unsigned long len,

err = mbind_range(mm, start, end, new);

if (!list_empty(&pagelist))
if (!list_empty(&pagelist)) {
nr_failed = migrate_pages(&pagelist, new_vma_page,
(unsigned long)vma, 0);
if (nr_failed)
putback_lru_pages(&pagelist);
}

if (!err && nr_failed && (flags & MPOL_MF_STRICT))
err = -EIO;
Expand Down
12 changes: 7 additions & 5 deletions trunk/mm/migrate.c
Original file line number Diff line number Diff line change
Expand Up @@ -883,8 +883,9 @@ static int unmap_and_move_huge_page(new_page_t get_new_page,
*
* The function returns after 10 attempts or if no pages
* are movable anymore because to has become empty
* or no retryable pages exist anymore. All pages will be
* returned to the LRU or freed.
* or no retryable pages exist anymore.
* Caller should call putback_lru_pages to return pages to the LRU
* or free list.
*
* Return: Number of pages not migrated or error code.
*/
Expand Down Expand Up @@ -931,8 +932,6 @@ int migrate_pages(struct list_head *from,
if (!swapwrite)
current->flags &= ~PF_SWAPWRITE;

putback_lru_pages(from);

if (rc)
return rc;

Expand Down Expand Up @@ -1087,9 +1086,12 @@ static int do_move_page_to_node_array(struct mm_struct *mm,
}

err = 0;
if (!list_empty(&pagelist))
if (!list_empty(&pagelist)) {
err = migrate_pages(&pagelist, new_page_node,
(unsigned long)pm, 0);
if (err)
putback_lru_pages(&pagelist);
}

up_read(&mm->mmap_sem);
return err;
Expand Down

0 comments on commit b92a4b5

Please sign in to comment.