From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id EEBA3C54E64 for ; Thu, 28 Mar 2024 12:49:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4DE316B0082; Thu, 28 Mar 2024 08:49:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 48ECE6B0083; Thu, 28 Mar 2024 08:49:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3570F6B0085; Thu, 28 Mar 2024 08:49:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 1A0156B0082 for ; Thu, 28 Mar 2024 08:49:48 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id ABCBE1C10B0 for ; Thu, 28 Mar 2024 12:49:47 +0000 (UTC) X-FDA: 81946429614.25.CD1B3C7 Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by imf30.hostedemail.com (Postfix) with ESMTP id 41AFC8001A for ; Thu, 28 Mar 2024 12:49:43 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf30.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.191 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711630185; a=rsa-sha256; cv=none; b=EdP3nlR7cANapEy1hkaenoNVbc24mhwT4sKhzz++NMVNfRn43LK/X52McnhShsKuM8iBOA nyvAnFMx3dVTYzY4TBUe5G5NLI6XUOg1OdJ9U4M7JHHZC6K4v9tyZpQGqbBmad9Io4676i vUv2NUSZxWFuik0W2cAnueTmaTVD40k= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf30.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.191 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711630185; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oVtsp6GYiCtmNbQ27u41eALBE77qfv/qxQwdKIJbu0k=; b=nzbutRFUHn1fGN/BBx3rpsoQnm29AVQrZjpYsOp/HfLpXICJBWx9mIP53aEoXjmi4/41Fl tVXm+8FUsXyTHCRZTwuXX1PI4B5e+H3Gpepez875Pp1H2tE+ihSsMg2+ONt3RyerujuzTU 3XnWwD1heEh3jiDcL5N6AxtRihG5i38= Received: from mail.maildlp.com (unknown [172.19.88.234]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4V53Fv5blpz1h4FW; Thu, 28 Mar 2024 20:46:59 +0800 (CST) Received: from dggpemm100001.china.huawei.com (unknown [7.185.36.93]) by mail.maildlp.com (Postfix) with ESMTPS id 1BDB0140258; Thu, 28 Mar 2024 20:49:40 +0800 (CST) Received: from [10.174.177.243] (10.174.177.243) by dggpemm100001.china.huawei.com (7.185.36.93) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Thu, 28 Mar 2024 20:49:39 +0800 Message-ID: <34428d88-d880-46af-a3bd-7eabbc594ec8@huawei.com> Date: Thu, 28 Mar 2024 20:49:38 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 4/6] mm: compaction: use isolate_movable_folio() in isolate_migratepages_block() Content-Language: en-US To: Vishal Moola CC: Andrew Morton , , Miaohe Lin , Naoya Horiguchi , David Hildenbrand , Oscar Salvador , Zi Yan , Hugh Dickins , Jonathan Corbet , , , Baolin Wang References: <20240327141034.3712697-1-wangkefeng.wang@huawei.com> <20240327141034.3712697-5-wangkefeng.wang@huawei.com> From: Kefeng Wang In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.174.177.243] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To dggpemm100001.china.huawei.com (7.185.36.93) X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 41AFC8001A X-Stat-Signature: drhizpefz7kct1p65odq8m3mkcrd4kux X-Rspam-User: X-HE-Tag: 1711630183-519630 X-HE-Meta: U2FsdGVkX18/u2ktGPgpkfVcO3e7FqBLkC+eM35veLEftwBBG5BWFaJGxNqgrnilHSjBy9TizOgx4KlHJEhVEQBJ8f106nb2BMiPLR2OjCCzou8ahSNEet7PL+NqZ9OTaQNpUUbSIQCent/5hHJT+f1bMC9DX/Zt8flvBdlp+cFzQpYHdP3XIx+wkjHZGtxXVtgi8n4T86GmsZJuC5gihRMdUR6rxIfEYKE5OLngbuJj4h15K09vCv9HCP8odtkAwvORBaDGm4gw0QYoUWZ17vo7vrf+ixDhKXA+BEeyP6XOmOAiwbnSXgpk0IgjGyhxosnbNroLff7dDEp33ADbwcccViIyEPPxV381OndAv+l2nYYkwSMvctqmfdkGtx0Tt4VsA0L2YYewDw8leyv4mK6IJzxXgjO+ZxN7/RkTxUo7z4Hov+kWmnAyIatc8qvrcHp4IcWa8iTX/SaSysqeSbzCPXJDWc/Ik9pzwg6bTJ+UepEtBFHbvDUgqOvk3ir9o6Q3VZOoR7767EU0HR6sYiFOfQunnBd5x8S5OJc2D1PRfdo9Wf6G6J4PTMASW24f3D+0z++GhNAg1E2yBiTWco0kesfcE2CvTHjzBPanyR2vJRJ3dYbSgl9KQNLYA89u+xAUbuX0/lC5s1oAlYMCfG6l90n4m1UffK45JqlEAhDVp7qHQpEZqrHFNcHZOQAx1y5ToC46wCtJMIJ6f9PqMwuQs2zP7YJNnGat99WxpT7o5D3pvUDaxwiEpA2QUkC4TXKLEdGEt1zrV3M7cTTGoI4zb8MOPcp4x0vVDHXq2qaSVCz9kit6dir2f15HjX8pCwy5/b8Fh2EnsT90if7bEfUYpPBfx1f+DroyiAUbKwy+7MGnsSzOf88hoY+9LDAKq6z4rgFdnOHhfHMSXG/xHfU876tMZ3ThfZlh8NMyHXoPlTTWEcv1hbUCjxmSkA7updZ82WBRy0gO4ZlHP0q 7ib880mR 30Z40sBuC/dcdBASKe7IC/ZQSQ+jrQMJPCL6DuTq3nYCZPDaT+O76+274A4HG0UheszPkdzsqFcv2yYyuhl9PEVL5mPuAiVrvgdXnSHIpsMhLxZOBoLcPYWU/7Jdco4gC/khz5uJQsiRgUs7Ng+gvqs65eaT98poM4hpRaxuUOCkvzghFKuYmqYa81JCKB9aMgze7yeJcjNGfC8D65H6F7oFJ+lbMTwxj4dOtv9HDMMoXOtkRlZqsYzkcbczSaj9DbWpj9B+8Uc9LS3vd4OERzZZdLDKoN3rhe73IwgLBNOo9jPE41X/wbVvKvw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 2024/3/28 2:49, Vishal Moola wrote: > On Wed, Mar 27, 2024 at 10:10:32PM +0800, Kefeng Wang wrote: >> This moves folio_get_nontail_page() before non-lru movable pages check, >> and directly call isolate_movable_folio() to save compound_head() calls, >> since the reference count of the non-lru movable page is increased, a >> folio_put() is need() whether the folio is isolated or not. >> >> Signed-off-by: Kefeng Wang >> --- >> mm/compaction.c | 30 +++++++++++++++--------------- >> 1 file changed, 15 insertions(+), 15 deletions(-) >> >> diff --git a/mm/compaction.c b/mm/compaction.c >> index 807b58e6eb68..74ac65daaed1 100644 >> --- a/mm/compaction.c >> +++ b/mm/compaction.c >> @@ -1097,41 +1097,41 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn, >> } >> } >> >> + /* >> + * Be careful not to clear PageLRU until after we're >> + * sure the page is not being freed elsewhere -- the >> + * page release code relies on it. >> + */ >> + folio = folio_get_nontail_page(page); >> + if (unlikely(!folio)) >> + goto isolate_fail; >> + > > If you wanted to move this, I think this should be part of your first > patch (or prior to it). It would make your first patch be more sensible as ok, will re-order the patches. > is. You could then also consider making isolate_movable_folio() more similar > to folio_isolate_lru() if you really wanted to. Maybe just rename it folio_isolate_movable and no more changes now. Thanks. > >> /* >> * Check may be lockless but that's ok as we recheck later. >> * It's possible to migrate LRU and non-lru movable pages. >> * Skip any other type of page >> */ >> - if (!PageLRU(page)) { >> + if (!folio_test_lru(folio)) { >> /* >> * __PageMovable can return false positive so we need >> * to verify it under page_lock. >> */ >> - if (unlikely(__PageMovable(page)) && >> - !PageIsolated(page)) { >> + if (unlikely(__folio_test_movable(folio)) && >> + !folio_test_isolated(folio)) { >> if (locked) { >> unlock_page_lruvec_irqrestore(locked, flags); >> locked = NULL; >> } >> >> - if (isolate_movable_page(page, mode)) { >> - folio = page_folio(page); >> + if (isolate_movable_folio(folio, mode)) { >> + folio_put(folio); >> goto isolate_success; >> } >> } >> >> - goto isolate_fail; >> + goto isolate_fail_put; >> } >> >> - /* >> - * Be careful not to clear PageLRU until after we're >> - * sure the page is not being freed elsewhere -- the >> - * page release code relies on it. >> - */ >> - folio = folio_get_nontail_page(page); >> - if (unlikely(!folio)) >> - goto isolate_fail; >> - >> /* >> * Migration will fail if an anonymous page is pinned in memory, >> * so avoid taking lru_lock and isolating it unnecessarily in an >> -- >> 2.27.0 >> >>