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 5FA9BC54E90 for ; Wed, 28 Aug 2024 10:04:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DF8DF6B0088; Wed, 28 Aug 2024 06:04:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DA8D86B0093; Wed, 28 Aug 2024 06:04:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C70FF6B0095; Wed, 28 Aug 2024 06:04:42 -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 A78136B0088 for ; Wed, 28 Aug 2024 06:04:42 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 4F013141E79 for ; Wed, 28 Aug 2024 10:04:42 +0000 (UTC) X-FDA: 82501220004.09.C650F7F Received: from out30-100.freemail.mail.aliyun.com (out30-100.freemail.mail.aliyun.com [115.124.30.100]) by imf25.hostedemail.com (Postfix) with ESMTP id 07EC9A001F for ; Wed, 28 Aug 2024 10:04:38 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=Uti8+3eQ; spf=pass (imf25.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.100 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724839392; 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:dkim-signature; bh=FW88otMwMSMGyLa6Du4NmPntRolKiS4cVdUdBAmO6vo=; b=CzJzUxQeH4N0koUxbtn7By4K0e3sOg6CclVxEo+oKYZ/3ZO8vQ39ikDKvXvUNFFLJdf+1z 7xnDYPbmQOjWB2brS+6SPNjvHDTUOuahhSZoGtDquV7//bAUbvUlW8bStML3ahcI4z3wno SXbwn1Ddxsg5Pss/DCXXaobg0JfK050= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724839392; a=rsa-sha256; cv=none; b=TtC8Ne0fLCN/FlKmT5svjsTPQoXkOcMYyUsONT8WBufm/uYxjeqw8J6ZELJmcEMJCPkYim 9gRYuCdkamOExQyBH9gfAGViDBUwoys7wHX1FWmLPSVdRZfddkQ8r2KkehLBbtl19N3mls hro83GrynzRCzkGXe/1QabRniegQClE= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=Uti8+3eQ; spf=pass (imf25.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.100 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1724839475; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; bh=FW88otMwMSMGyLa6Du4NmPntRolKiS4cVdUdBAmO6vo=; b=Uti8+3eQiy9eUIqDPlMOWrsl9bZAHsNm9GCGDBAcPs5gfSOnC4PTaDgIRqexD2+kon7HLOJ/8xVttWH/B5a2K5izNJftcw2aWGHeQklVZmvykrqIYU2qPhnOKEIdpgavqsTtPiacjTqI9RYI0fUKWgAITnrdYTqZYTuKEsHM6Jk= Received: from 30.97.56.60(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0WDpWKrX_1724839473) by smtp.aliyun-inc.com; Wed, 28 Aug 2024 18:04:34 +0800 Message-ID: <3f8300d9-1c21-46ad-a311-e97dc94eda08@linux.alibaba.com> Date: Wed, 28 Aug 2024 18:04:33 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/4] mm: compaction: convert to folio_isolate_movable() To: Kefeng Wang , Andrew Morton Cc: David Hildenbrand , Matthew Wilcox , Zi Yan , linux-mm@kvack.org References: <20240826040132.1202297-1-wangkefeng.wang@huawei.com> <20240826040132.1202297-3-wangkefeng.wang@huawei.com> From: Baolin Wang In-Reply-To: <20240826040132.1202297-3-wangkefeng.wang@huawei.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 07EC9A001F X-Stat-Signature: f6ausnktx3dide95eqkapfqu5iyyqj9m X-HE-Tag: 1724839478-498623 X-HE-Meta: U2FsdGVkX1+yF9NZrrwnnOJbxQr+uSW/zFUVEKLzLW9yg/imSzpE2Aa0SJ3Cwatw06zRdbbIs8VR/TZkFmFBnI8OcwUwKceccyj0gs9Fxb0QqbxPnTWSKUfR4GUZ8Y8g6QVuGMhFDqITBpc5oVxbHPdsuweNKbcSeYvw05kNUvMVeXa0Iqf/k0WJl3LvJDs/WCi5eieJ/HWl5r4Wje6wpFymROQClzfvAkFrYQSg5RzpJIHfrPWfOawRpuMTBDvwejqpCXEQNM5uaDSdqEpYphHm3IiODHN/YJ+uOGQMXbaagyRTsExb3w1L+7NI6Ofa6NbbsKYbglAvGPGG+pW1PH6ke5uiqD1/U1FzdZFX+GOkjJREWLjQukNtpWdxC/x/IzStptfiI0Rzu0L5ZH2b8qucBDRuFRPtZMHEx4nvDVY+hoAK2Avz/iNuzERpDLO20WRGiaH0MNxj7uC+xzEcJjTGi5KvsmCtVP0kSJxCpkc2sxtR7QXyoEkKlD3ju+tX5S+h8grqSmSgCQXHpxh5lyWlhYAj1+NAQuzGFYRrbF9NwYq55diqwsJ3//+FqNTucVDn6I/DzXk99jc7cLvbcxVtCAV1rWdlXPBC1BNk6FyPtr1FY02KoQ3GY2rTRq96jbGvxZJsSDyqRV+H1Z3LHQqGWsjO+B2xx93XZMysOJjL4x43v7QLKsl0Oq2eI96KLGKcSc3Av8iRQn43hfBjxNDY4V1mmq42GzjvWhPVv276G5ztPanqrqdY7FHxXA+O3YQdrubV4KDfaWvTZ+8ljtsn5qN9AEnLzuZoF0p27GJ3SCSCdWFKyUCdY5nQxI/pDmUpZryv2fjrGhcDr/p+mAgZf+gdhgP9/48Nste48tJZwAeUhjAODxO198tR5e3ZCI7vJriQUpJGEzPS4MQscL9LRe8rOLlTII4fU5m/R1I7/r/anInmqv0lgqoQwE6ZoCm6L/NFQXEQz7SjT/s GqQxzUcY 6BP0wzzLEfJycUWq8ybgX6E7e9IOjFP+td9AWW51roq8JeGc1gOBU8K7pVRYNq5i2BBGOw9vtekMJn4Uu8JmfXz+3XVIYrSJeEUnlM/CtUxOv2Qlt1MJxz2oG3peuDylkEBzWDRc+XKkuAtpEQSxg+sXXbXManRTE4h0bTPXIoJXLWtjtN8g0eStIdsD3R/m4YVearP7+BA2RCun50ibL7R4L2Y1zC0vfvBnCpOdc/yrfLRXa11vFJGTPCUu8i/LXbwvO3ABO6DcWUahULmB08Sqp9oZuSd+ZRMJsErRw7nplB4byCtOgrks0oKfuFKQwnGFk 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: Hi Kefeng, On 2024/8/26 12:01, Kefeng Wang wrote: > The tail page will always fail to isolate for non-lru-movable and > LRU page in isolate_migratepages_block(), so move PageTail check > ahead, then convert to use folio_isolate_movable() helper and more > folios. > > Signed-off-by: Kefeng Wang > --- > mm/compaction.c | 32 +++++++++++++++++--------------- > 1 file changed, 17 insertions(+), 15 deletions(-) > > diff --git a/mm/compaction.c b/mm/compaction.c > index a2b16b08cbbf..aa2e8bb9fa58 100644 > --- a/mm/compaction.c > +++ b/mm/compaction.c > @@ -1074,39 +1074,41 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn, > } > } > > + if (PageTail(page)) > + goto isolate_fail; > + > + folio = page_folio(page); I wonder if this is stable. Before page_folio(), it does not hold a reference on the page, so seems we should re-check the folio still contains this page after gaining a reference on the folio? > /* > * 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 > + * It's possible to migrate LRU and non-lru movable folioss. > + * Skip any other type of folios. > */ > - if (!PageLRU(page)) { > + if (!folio_test_lru(folio)) { > /* > - * __PageMovable can return false positive so we need > - * to verify it under page_lock. > + * __folio_test_movable 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 (folio_isolate_movable(folio, mode)) > goto isolate_success; > - } > } > > goto isolate_fail; > } > > /* > - * 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. > + * Be careful not to clear lru flag until after we're > + * sure the folio is not being freed elsewhere -- the > + * folio release code relies on it. > */ > - folio = folio_get_nontail_page(page); > - if (unlikely(!folio)) > + if (unlikely(folio_try_get(folio))) > goto isolate_fail; > > /*