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

From: Huang\, Ying
Date: Fri Oct 28 2016 - 04:31:09 EST


Hi, Hillf,

Hillf Danton <hillf.zj@xxxxxxxxxxxxxxx> writes:

> 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?

OOPS, I should hold the tree lock for the error path too. Will update
it in the next version. Thanks for pointing out this!

Best Regards,
Huang, Ying


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