ebruakagunduz

async swapin

May 4th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1. diff --git a/mm/huge_memory.c b/mm/huge_memory.c
  2. index f0cd9db..8af703d 100644
  3. --- a/mm/huge_memory.c
  4. +++ b/mm/huge_memory.c
  5. @@ -2404,8 +2404,9 @@ static void __collapse_huge_page_swapin(struct mm_struct *mm,
  6. continue;
  7. swapped_in++;
  8. ret = do_swap_page(mm, vma, _address, pte, pmd,
  9. - FAULT_FLAG_ALLOW_RETRY|FAULT_FLAG_RETRY_NOWAIT,
  10. + FAULT_FLAG_ALLOW_RETRY,
  11. pteval);
  12. + down_read(&mm->mmap_sem);
  13. if (ret & VM_FAULT_ERROR) {
  14. trace_mm_collapse_huge_page_swapin(mm, swapped_in, 0);
  15. return;
  16. @@ -2491,8 +2492,13 @@ static void collapse_huge_page(struct mm_struct *mm,
  17. * Don't perform swapin readahead when the system is under pressure,
  18. * to avoid unnecessary resource consumption.
  19. */
  20. - if (allocstall == curr_allocstall && swap != 0)
  21. + if (allocstall == curr_allocstall && swap != 0) {
  22. + up_write(&mm->mmap_sem);
  23. + down_read(&mm->mmap_sem);
  24. __collapse_huge_page_swapin(mm, vma, address, pmd);
  25. + up_read(&mm->mmap_sem);
  26. + down_write(&mm->mmap_sem);
  27. + }
  28.  
  29. anon_vma_lock_write(vma->anon_vma);
Advertisement
Add Comment
Please, Sign In to add comment