From patchwork Tue Dec 13 09:27:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kefeng Wang X-Patchwork-Id: 13071851 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 456CDC4332F for ; Tue, 13 Dec 2022 09:11:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 61A1D8E0009; Tue, 13 Dec 2022 04:11:27 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5A2FC8E0008; Tue, 13 Dec 2022 04:11:27 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2E31F8E0009; Tue, 13 Dec 2022 04:11:27 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 079D08E0003 for ; Tue, 13 Dec 2022 04:11:27 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id DE4931204D7 for ; Tue, 13 Dec 2022 09:11:26 +0000 (UTC) X-FDA: 80236714572.24.5240665 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf25.hostedemail.com (Postfix) with ESMTP id E275EA0021 for ; Tue, 13 Dec 2022 09:11:24 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf25.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.187 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=1670922685; 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=XhEJCxjv8xyhfFluc497FhExe2oqNp6HjtY3lhcHhh0=; b=H1hhCqwnvlsOIyAUBoeq6BOSbbaXPREobbgdqbCwhqDbzQqVRlEzrNtgcBkjr8uwGC6oOr 7m1G9em3a1Q3oSFhK1njm+/rRM/6kp9MxUNxrISZvx517j7IesJYk+Hfxnu2RigldUDX34 +CFHYuKiN5wOTp2j/oiksWC1htegdP8= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf25.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1670922685; a=rsa-sha256; cv=none; b=vVxtzjVYpyyqWTjin7MdofGeaAMeSxIbsQSG/X6CtOJrKD0ZCfIGhXg31TgNn7jZRMLQus D+SpGmJ+kmRwin5S+opbP9OfdZLnS+ZuqevN3zDTLpufPX3cil9iomWvylCEaB8TiDB5dG kXG3BiUhGeDd/k2/UMej59WqoQ1wWhI= Received: from dggpemm500001.china.huawei.com (unknown [172.30.72.55]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4NWXgX3slFzqSsf; Tue, 13 Dec 2022 17:07:04 +0800 (CST) Received: from localhost.localdomain.localdomain (10.175.113.25) by dggpemm500001.china.huawei.com (7.185.36.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 13 Dec 2022 17:11:20 +0800 From: Kefeng Wang To: Andrew Morton , David Hildenbrand , Oscar Salvador , SeongJae Park CC: , , , , , Kefeng Wang Subject: [PATCH -next 4/8] mm: damon: add temporary damon_get_folio() Date: Tue, 13 Dec 2022 17:27:31 +0800 Message-ID: <20221213092735.187924-5-wangkefeng.wang@huawei.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20221213092735.187924-1-wangkefeng.wang@huawei.com> References: <20221213092735.187924-1-wangkefeng.wang@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.113.25] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To dggpemm500001.china.huawei.com (7.185.36.107) X-CFilter-Loop: Reflected X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: E275EA0021 X-Rspam-User: X-Stat-Signature: hatmpzxtexji8jig5cp8na3u8t5s4c9r X-HE-Tag: 1670922684-679786 X-HE-Meta: U2FsdGVkX1+UtGcFTSXM99ZIePcDnVQM5EojXsEIpVKHX6WmJAEJ1S4URySkCcd+JTAkq9BfjEbwzgTuBb/NKKXeF8tappNKz2aGocTUGFTvrWrR4PrIYo3Mrrjp1zc7t6B2uaQVeGi9PpEW0AutPuz2kr+LKtC8lftDvV3ZCgGzoPrUKFdymnFpEU0qWpT5GACW8H9+kYlR/F1nWjXtB8MWlzMYNujKvYPFXJpMNqW8YfnYN0t3O+sXiLZ8rWUMu2S+X/WqHB4vmCEXnC9kAN+A8csM2II+4DXRhZEYgvM0XIvwHdec2NgLThoNwok8ahvPOyYOHb+XHST7ad+ToSyWZgJj9+jJllCaw9WJ8PcwxuopEpc2iDTm0d+ZRlN954kQNvkGWH53Hf4362fPWnco4wuRrYkIc9mWP58H+IQcODRHHtmNoMAz3fO7HQai3NqSV6LKG2zTXGxUxHbVzAJdhH+cjBPMEPS1bPMCfjRm0aLh9JTIqEwDYeORtbAM5AqcQaPVOSEjZgX3Ne2cF34tLWUSlkOE0D65quOADEgcv1fLmXB2+gkECUzvYhx8YdFbBN3H+XbPQu8gsuOaUQlHebusIXTfSm2KdTh+/QQ2EIaB1knXoVYP/Y3nzN44En6hl0VJSttusSkprWVZngaNgohZqcg7I35O9Dw3eV4jDpWNP/hv7sGi9syn5vysSZRHDvMt8zkAqFVqCurOCLIGJFakWigQngZDTFOs2vab94L8kjYedk9wFWPRX/UQl867LZhKQuO2jP08gsRDwpKgL/Z1VYQtV5Zwg9/345/1DS9dXTY5GM961BoFc0FxdWcEbUbsDY3GF1dZrNi530vEeE3b8kJPKVaUtLQJWA/q3oXrt6uLs0Mi0psV2ts5j4mVasw7EkkMMz/mm361gKeoLOCK94hMvw+wjzIaJp3LaK9owRpl4oMa82VhMWEQMuBn3UO6Y/WMWPeZA5T BI4jPPC7 SoKh19WkEG1BBVFg= 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: Introduce a temporary wrapper function damon_get_folio(), which help us to convert damon related function to use folios, and it will be droped once the conversion is completed. Signed-off-by: Kefeng Wang --- mm/damon/ops-common.c | 18 +++++++++--------- mm/damon/ops-common.h | 8 +++++++- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/mm/damon/ops-common.c b/mm/damon/ops-common.c index 75409601f934..40b79b022129 100644 --- a/mm/damon/ops-common.c +++ b/mm/damon/ops-common.c @@ -13,24 +13,24 @@ #include "ops-common.h" /* - * Get an online page for a pfn if it's in the LRU list. Otherwise, returns + * Get an online folio for a pfn if it's in the LRU list. Otherwise, returns * NULL. * - * The body of this function is stolen from the 'page_idle_get_page()'. We + * The body of this function is stolen from the 'folio_idle_get_folio()'. We * steal rather than reuse it because the code is quite simple. */ -struct page *damon_get_page(unsigned long pfn) +struct folio *damon_get_folio(unsigned long pfn) { - struct page *page = pfn_to_online_page(pfn); + struct folio *folio = pfn_to_online_folio(pfn); - if (!page || !PageLRU(page) || !get_page_unless_zero(page)) + if (!folio || !folio_test_lru(folio) || !folio_try_get(folio)) return NULL; - if (unlikely(!PageLRU(page))) { - put_page(page); - page = NULL; + if (unlikely(!folio_test_lru(folio))) { + folio_put(folio); + folio = NULL; } - return page; + return folio; } void damon_ptep_mkold(pte_t *pte, struct mm_struct *mm, unsigned long addr) diff --git a/mm/damon/ops-common.h b/mm/damon/ops-common.h index 8d82d3722204..4ee607813981 100644 --- a/mm/damon/ops-common.h +++ b/mm/damon/ops-common.h @@ -7,7 +7,13 @@ #include -struct page *damon_get_page(unsigned long pfn); +struct folio *damon_get_folio(unsigned long pfn); +static inline struct page *damon_get_page(unsigned long pfn) +{ + struct folio *folio = damon_get_folio(pfn); + + return &folio->page; +} void damon_ptep_mkold(pte_t *pte, struct mm_struct *mm, unsigned long addr); void damon_pmdp_mkold(pmd_t *pmd, struct mm_struct *mm, unsigned long addr);