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 396D3C83F2F for ; Thu, 31 Aug 2023 18:49:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C4BEE280006; Thu, 31 Aug 2023 14:49:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BFC9C8D0002; Thu, 31 Aug 2023 14:49:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AEB00280006; Thu, 31 Aug 2023 14:49:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 9EE748D0002 for ; Thu, 31 Aug 2023 14:49:48 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 58A7A803CC for ; Thu, 31 Aug 2023 18:49:48 +0000 (UTC) X-FDA: 81185288856.25.7A10FF1 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf25.hostedemail.com (Postfix) with ESMTP id 38BD6A0026 for ; Thu, 31 Aug 2023 18:49:45 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=none; spf=pass (imf25.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1693507786; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kxT9bEoQL7KiQEnj8m/fDmc+JaTLDwk3aT0sICMa0ok=; b=KyEBFTFSuoS2oqlI8TNvUTbWh79RUoyJKWdIs52VetcYUV7kTfRspsMj8BmgwgCL2wFjgL D6JFPasIrpqtUsrvoKTHaJw5VKSdKNmb3S+mq9T769n97xlW9bYGcZs3OvGCsFlkn60emG v2+UVoSm+gzDoDdZRXhyOu/3M0WevOA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1693507786; a=rsa-sha256; cv=none; b=8RtgtqhnPCpnq8LvUTX36kV1mYkmodYz4cJNq+x3zFKiLMEQ9afq58i6tR8ZHwF5esUPpL ud08yKvNmxzeFEJ0nJX90FLgtmEn9hRdeZSZ0XDSnwLlkyYKeajRBX4psYRYLcw/eYazrH VfdEsOV7gR/yw/k0yXIFP1RV8ZlmrJg= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=none; spf=pass (imf25.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 59B70C15; Thu, 31 Aug 2023 11:50:24 -0700 (PDT) Received: from [10.57.65.16] (unknown [10.57.65.16]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BE0553FBD2; Thu, 31 Aug 2023 11:49:44 -0700 (PDT) Message-ID: <5ea5e3a7-e3b5-41f0-ab85-febfae9e2859@arm.com> Date: Thu, 31 Aug 2023 19:49:43 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH 17/18] mm: Convert free_swap_cache() to take a folio Content-Language: en-GB To: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org References: <20230825135918.4164671-1-willy@infradead.org> <20230830185041.3427464-3-willy@infradead.org> From: Ryan Roberts In-Reply-To: <20230830185041.3427464-3-willy@infradead.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 38BD6A0026 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: dndjgn81chd7gaw198a6utmsiwjzrxzc X-HE-Tag: 1693507785-28365 X-HE-Meta: U2FsdGVkX1996IicxtvWTOJq10VbTOktaDhMaa5qJpDfmX7fFzWK0D+lwTTkkOEhnT8svKXnkjqu74+1f5im6lAWB/c1LoQfNOIE6QqgaoErniXn2xkw/nXilX22L/u1rSZg+0xOR9kCyBsVGDlhuNQRhswp1BLws6gJmhbopeMbPlMiou9oBUDYi3+sjTJAMkX9kDB0jG8XrKFwBRVrR5Er1rT2on2orK+jeAdhW6svVHXSrxF22bAa6TPnR/y9aEZvLNzuo5wEDlALJ/p8KH/3+DkJxx5P1USvB3S1rMByr/y4E5NVkDTX3OcR3xO2i2Ir2YH8u8eolk8qQYIbHUcWy+FX8H2d86Ygcl2KbAeiSbsQZPo7JHI8xYFzdYoTTNlpWA5Hnhr3U3u4XhmYERlRKKKc3psGKB/ZB+hc31ryiIp4weo0TvzpxXqjP8EFpVf3hyuSYdEJCZJ9KDJmd25d1liKjDYS+hhuEtDntoX5EfATHA+FmQ0nUkAbs8b8kU27SmkqYbJIaWba94bkHmtr0K+E7cwcYKACXVgQYYJoV4rNIcMgMAO5bbpwyewr8Ne9rmqd8CukE44of4PerZvkyPteO0BVPKi2HBtXzR83PW6v68thfX7K2RMG/d4j6nfqOCoECwLEhu3hrvX1NzJvVhwegFwqbJ3xz9Tdv98YkHx+WLkNcunrxfBfLjZQwcptOz2oMJIo7MRJ8zK2snDsdlq+46e2qNyw8knPnn4x9GPzIsmhGPQ9Q4cN7IzhPJ3XrjmPxP3eIouak+vJAclEaLBUzOBjbQn+Vrr/6UZdur3cZYDEGIlBBoJ/E9o/ymCQBgRerISmA/gbR2wxdLe4X99IaysF9kSOW58Du1M0dO7idIKvbH0B0P+TsF5ZRt8QVo8VEd7nEjU0ZFvJyO19TaG4mUA6rdTvw8fgi/K/e5OghUgsgJZaEeD39zTvjx9PM/mYQEBLKjjc73S uKG5eLz9 37en3WBrgORBThVmc+E1zBASKj8RFxQbCQRqjVSRhUWdVEQbgWRQVhVrzreSL3Kj/rtq6IDo8FfSmb0EJYX3i//9XsxKc9HZSKsodeEFk7L8+kgFbPpbeLHN3wxi/U/dDaouBwxXOquYEymA3Td4fWYJoWREJWTwf4Rawq5XN16mi80Ncj6uc05xZ84R2H5E0sH1KI1ytOZeSQVXHaK7lNfMRSF6T2HxPv5QfORtZpBpRZ/XNmCPXqM3lro77qdfL2aSXE39RTIfTGMGkLiP2sOR4BItSbPxBs/QGx5UTOStt8/vg6f1JtYBg2Q== 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: On 30/08/2023 19:50, Matthew Wilcox (Oracle) wrote: > All but one caller already has a folio, so convert > free_page_and_swap_cache() to have a folio and remove the call to > page_folio(). > > Signed-off-by: Matthew Wilcox (Oracle) Reviewed-by: Ryan Roberts > --- > include/linux/swap.h | 8 ++++---- > mm/khugepaged.c | 2 +- > mm/memory.c | 2 +- > mm/swap_state.c | 12 ++++++------ > 4 files changed, 12 insertions(+), 12 deletions(-) > > diff --git a/include/linux/swap.h b/include/linux/swap.h > index 493487ed7c38..3536595e3bda 100644 > --- a/include/linux/swap.h > +++ b/include/linux/swap.h > @@ -449,9 +449,9 @@ static inline unsigned long total_swapcache_pages(void) > return global_node_page_state(NR_SWAPCACHE); > } > > -extern void free_swap_cache(struct page *page); > -extern void free_page_and_swap_cache(struct page *); > -extern void free_pages_and_swap_cache(struct encoded_page **, int); > +void free_swap_cache(struct folio *folio); > +void free_page_and_swap_cache(struct page *); > +void free_pages_and_swap_cache(struct encoded_page **, int); > /* linux/mm/swapfile.c */ > extern atomic_long_t nr_swap_pages; > extern long total_swap_pages; > @@ -534,7 +534,7 @@ static inline void put_swap_device(struct swap_info_struct *si) > /* used to sanity check ptes in zap_pte_range when CONFIG_SWAP=0 */ > #define free_swap_and_cache(e) is_pfn_swap_entry(e) > > -static inline void free_swap_cache(struct page *page) > +static inline void free_swap_cache(struct folio *folio) > { > } > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > index afc94c281035..7b83bb6a1199 100644 > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -725,7 +725,7 @@ static void __collapse_huge_page_copy_succeeded(pte_t *pte, > node_stat_sub_folio(src, NR_ISOLATED_ANON + > folio_is_file_lru(src)); > folio_unlock(src); > - free_swap_cache(&src->page); > + free_swap_cache(src); > folio_putback_lru(src); > } > } > diff --git a/mm/memory.c b/mm/memory.c > index e35328c2f76e..2611d0fa4465 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -3194,7 +3194,7 @@ static vm_fault_t wp_page_copy(struct vm_fault *vmf) > folio_put(new_folio); > if (old_folio) { > if (page_copied) > - free_swap_cache(&old_folio->page); > + free_swap_cache(old_folio); > folio_put(old_folio); > } > > diff --git a/mm/swap_state.c b/mm/swap_state.c > index f68ddeb93698..e6b4a00d3655 100644 > --- a/mm/swap_state.c > +++ b/mm/swap_state.c > @@ -282,10 +282,8 @@ void clear_shadow_from_swap_cache(int type, unsigned long begin, > * folio_free_swap() _with_ the lock. > * - Marcelo > */ > -void free_swap_cache(struct page *page) > +void free_swap_cache(struct folio *folio) > { > - struct folio *folio = page_folio(page); > - > if (folio_test_swapcache(folio) && !folio_mapped(folio) && > folio_trylock(folio)) { > folio_free_swap(folio); > @@ -299,9 +297,11 @@ void free_swap_cache(struct page *page) > */ > void free_page_and_swap_cache(struct page *page) > { > - free_swap_cache(page); > + struct folio *folio = page_folio(page); > + > + free_swap_cache(folio); > if (!is_huge_zero_page(page)) > - put_page(page); > + folio_put(folio); > } > > /* > @@ -316,7 +316,7 @@ void free_pages_and_swap_cache(struct encoded_page **pages, int nr) > folio_batch_init(&folios); > for (int i = 0; i < nr; i++) { > struct folio *folio = page_folio(encoded_page_ptr(pages[i])); > - free_swap_cache(&folio->page); > + free_swap_cache(folio); > if (folio_batch_add(&folios, folio) == 0) > folios_put(&folios); > }