From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936399AbcJ1IPY (ORCPT ); Fri, 28 Oct 2016 04:15:24 -0400 Received: from out0-136.mail.aliyun.com ([140.205.0.136]:54934 "EHLO out0-136.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934317AbcJ1IPU (ORCPT ); Fri, 28 Oct 2016 04:15:20 -0400 X-Greylist: delayed 325 seconds by postgrey-1.27 at vger.kernel.org; Fri, 28 Oct 2016 04:14:43 EDT X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R401e4;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e02c03299;MF=hillf.zj@alibaba-inc.com;NM=1;PH=DS;RN=14;SR=0;TI=SMTPD_---.76bbqCv_1477642126; Reply-To: "Hillf Danton" From: "Hillf Danton" To: "'Huang, Ying'" , "'Andrew Morton'" Cc: , , , , , , "'Hugh Dickins'" , "'Shaohua Li'" , "'Minchan Kim'" , "'Rik van Riel'" , "'Andrea Arcangeli'" , "'Kirill A . Shutemov'" References: <20161028055608.1736-1-ying.huang@intel.com> <20161028055608.1736-7-ying.huang@intel.com> In-Reply-To: <20161028055608.1736-7-ying.huang@intel.com> Subject: Re: [PATCH -v4 RESEND 6/9] mm, THP, swap: Support to add/delete THP to/from swap cache Date: Fri, 28 Oct 2016 16:08:46 +0800 Message-ID: <050a01d230f2$826f0b20$874d2160$@alibaba-inc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 14.0 Thread-Index: AQKh+0V+9htvZCBzi7nNNafM2n9/UwFCo4XZnxPXpzA= Content-Language: zh-cn Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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; >