Re: [PATCH -v4 RESEND 6/9] mm, THP, swap: Support to add/delete THP to/from swap cache

From: Hillf Danton
Date: Fri Oct 28 2016 - 04:15:34 EST


On Friday, October 28, 2016 1:56 PM Huang, Ying wrote:
>
> @@ -109,9 +118,16 @@ int __add_to_swap_cache(struct page *page, swp_entry_t entry)
> * So add_to_swap_cache() doesn't returns -EEXIST.
> */
> VM_BUG_ON(error == -EEXIST);
> - set_page_private(page, 0UL);
> ClearPageSwapCache(page);
> - put_page(page);
> + set_page_private(cur_page, 0UL);
> + while (i--) {
> + cur_page--;
> + cur_entry.val--;
> + set_page_private(cur_page, 0UL);
> + radix_tree_delete(&address_space->page_tree,
> + swp_offset(cur_entry));
> + }

Pull pages out of radix tree with tree lock held?

> + page_ref_sub(page, nr);
> }
>
> return error;
>