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 66D78EB64D7 for ; Wed, 21 Jun 2023 06:20:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CAEFC8D0002; Wed, 21 Jun 2023 02:20:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C37E48D0001; Wed, 21 Jun 2023 02:20:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B26208D0002; Wed, 21 Jun 2023 02:20:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id A02738D0001 for ; Wed, 21 Jun 2023 02:20:01 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 6EC4BAFD64 for ; Wed, 21 Jun 2023 06:20:01 +0000 (UTC) X-FDA: 80925754602.06.7F684E9 Received: from out30-98.freemail.mail.aliyun.com (out30-98.freemail.mail.aliyun.com [115.124.30.98]) by imf17.hostedemail.com (Postfix) with ESMTP id 9A5C24000D for ; Wed, 21 Jun 2023 06:19:58 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=alibaba.com; spf=pass (imf17.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.98 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1687328399; 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=fOI6+Dl00xJni9BUbvVs37GhPkyABBctVoKbtk8yvlg=; b=iq0KTc972zxqLJ9heQeeLW008OjwCaDDyqWSBoDGwe40Q0M2HYjJtN0fIr399wlrjdjUzw al/y6aOs2RU9BG7hGDaZQhHvOuBLssAHiQj7RUJe40FPPUzRbBnffI/Jv0iBHmK3GdS+gi NAAYRot1CqdX96Il58rpK9EjvLxSyQQ= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=alibaba.com; spf=pass (imf17.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.98 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687328399; a=rsa-sha256; cv=none; b=doInXU6jLgJXkY0f4QcAI6lI73voojJ6ulLUMsaQ8PT0mnKigzQSJuTCOsAI+vAoaYqgDY uDFfqAVuEL/ssclcQSEfpMVCF0o+YNhXxyPifQHuk9b6VUjxp1upLRBWyUgPCJmxRdBk/y 2xF8HJ/txndZAhu/q+xdwpQCIQ3tILc= X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R211e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045170;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=7;SR=0;TI=SMTPD_---0VlesG-._1687328392; Received: from 30.97.48.59(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0VlesG-._1687328392) by smtp.aliyun-inc.com; Wed, 21 Jun 2023 14:19:53 +0800 Message-ID: Date: Wed, 21 Jun 2023 14:20:13 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.11.2 Subject: Re: [PATCH -next v2 1/2] mm: compaction: convert to use a folio in isolate_migratepages_block() To: Kefeng Wang , akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, willy@infradead.org, jgowans@amazon.com, yuzhao@google.com References: <20230619110718.65679-1-wangkefeng.wang@huawei.com> From: Baolin Wang In-Reply-To: <20230619110718.65679-1-wangkefeng.wang@huawei.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Stat-Signature: 5gio5qagdyo4u3de4x4u3k5jo6g1hdbp X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 9A5C24000D X-HE-Tag: 1687328398-852816 X-HE-Meta: U2FsdGVkX18nhRDFSla5FaBikV68PUv0q6lGK98jgASiKKkpXvJ/CHfLwITS9dFoI7lNrWUxEqiKzGOEfnP0zU4SduusTbjB6WdM5UuIv/bOlB3t1cURNxP51wXEUAtmTTrrWKRPZaZu3husf6/GkV/2u1yutInIXDe7x66YozAONMqQ50hTX5vBdjamEwWElMhwCxwSnZw64WrJVNFdFi6AMgYigPsNrbRL2mfJmQ1gG93eIM490eGtvoRjPoEckPLAR8LwsTTkOLzgdrCFFzdqS+VSMbWgQe2iVEI3IGfsTIeZey3cJHNwSMBBNYFsS+5NbTQfq6w52EZHFNAICFd2vOWJdRxquzavLs9+QitH0m40cEfwTA+n+PVCr5rZb/y+lK0yDRuQbIfXL+HGME/IN4QiCa9XtpXZH0gw1exFW3biMHVWLmYzk27HLgpHhMwewsug2wIfCQqE5rARKZ7TJSNiZwxHthcmRGcJW5tViyufREPVkEbYGtEoSNUEOu+LJMdQyPEXJbMhsbvUPgujcmceei/EtGGgVu9hK+t/Ceb5L59K1mDJsRNs4e8WufwtofB458J4MopbxAGdA0l6AFQiF3Q4Ptu0MGG7BQs90/LVvMv6wVbnDyHJtlXwrlcu3mkFSeT1Udz92me7Hwu+laL8H0YkgCC7g+ZWq+EwPPr9j1ZnKs7M/U3RbjfoZi+UgM2+qmFeBkqqIayhG2tFeUNu/uioA+kgVo8hPBlDcO/55cRfbtBnzIAiLltxpOOGqTg45qSBCJxURHmzqbcQzJ41XlT5rOf96uV7dpplWd1ww8TXxoZufAUa6t4KCsMj8dKH0z2PMtH3itCxD287Twh5AtNr1gj4LUH8xwO5psKzdAxVVN6rh2LzY94mtnqlganI2bHQby2+95OzRawgJTPn4bHcJYwnfKyZ94DXmw+Ti5coTuyAt7pW8R/m6f2r75t/mgOcfMcVSOn aYyK8QWc E7EG3J4bFo1BzBy9pb8yjM64nFzOmh5M5MWscdfxio27i+lGUUo+pzZeDcQI54LD7efDd8zQM5aDT0PHXDrBizu44vf11gQpIbj/ntvfXLN9+WT/tC3WtLegNa62k7CS4/990qlrwv4/abA6Tg78k1RCQRQ== 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: Hi On 6/19/2023 7:07 PM, Kefeng Wang wrote: > Directly use a folio instead of page_folio() when page successfully > isolated (hugepage and movable page) and after folio_get_nontail_page(), > which removes several calls to compound_head(). > > Signed-off-by: Kefeng Wang > --- > v2: > - update comments and use node_stat_mod_folio, per Matthew Wilcox > - add missed PageLRU conversion and rebase on next-20230619 > > mm/compaction.c | 84 ++++++++++++++++++++++++++----------------------- > 1 file changed, 44 insertions(+), 40 deletions(-) > > diff --git a/mm/compaction.c b/mm/compaction.c > index 6149a2d324be..0334eefe4bfa 100644 > --- a/mm/compaction.c > +++ b/mm/compaction.c > @@ -795,6 +795,7 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn, > struct lruvec *lruvec; > unsigned long flags = 0; > struct lruvec *locked = NULL; > + struct folio *folio = NULL; > struct page *page = NULL, *valid_page = NULL; > struct address_space *mapping; > unsigned long start_pfn = low_pfn; > @@ -891,7 +892,7 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn, > if (!valid_page && pageblock_aligned(low_pfn)) { > if (!isolation_suitable(cc, page)) { > low_pfn = end_pfn; > - page = NULL; > + folio = NULL; > goto isolate_abort; > } > valid_page = page; > @@ -923,7 +924,8 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn, > * Hugepage was successfully isolated and placed > * on the cc->migratepages list. > */ > - low_pfn += compound_nr(page) - 1; > + folio = page_folio(page); > + low_pfn += folio_nr_pages(folio) - 1; > goto isolate_success_no_list; > } > > @@ -991,8 +993,10 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn, > locked = NULL; > } > > - if (isolate_movable_page(page, mode)) > + if (isolate_movable_page(page, mode)) { > + folio = page_folio(page); > goto isolate_success; > + } > } > > goto isolate_fail; > @@ -1003,7 +1007,8 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn, > * sure the page is not being freed elsewhere -- the > * page release code relies on it. > */ > - if (unlikely(!get_page_unless_zero(page))) > + folio = folio_get_nontail_page(page); I'm just curious, how can you make sure the 'page' is not a tail page? Since the validation is lockless.