From patchwork Wed Apr 16 20:12:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fan Ni X-Patchwork-Id: 14054448 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 DEA3BC369C5 for ; Wed, 16 Apr 2025 20:17:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2A43F280136; Wed, 16 Apr 2025 16:17:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 22B59280135; Wed, 16 Apr 2025 16:17:39 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0A4A8280136; Wed, 16 Apr 2025 16:17:39 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id DDA45280135 for ; Wed, 16 Apr 2025 16:17:38 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 3BBA0120C6C for ; Wed, 16 Apr 2025 20:17:39 +0000 (UTC) X-FDA: 83341017438.14.3020809 Received: from mail-yb1-f179.google.com (mail-yb1-f179.google.com [209.85.219.179]) by imf11.hostedemail.com (Postfix) with ESMTP id 736E140002 for ; Wed, 16 Apr 2025 20:17:37 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=hw0imCDH; spf=pass (imf11.hostedemail.com: domain of nifan.cxl@gmail.com designates 209.85.219.179 as permitted sender) smtp.mailfrom=nifan.cxl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744834657; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=CflYkpCwmcNHOZhPPaWFtrcabnpu0tQed65YHPVcA00=; b=RdIeHV4hiSuLvVl/Ejn2YyhYZ7EsHKAmKNKfV4ovZLa0h0YnNqx9mAyw7XjMkB0yVkGED2 uOqe6J5AeO0f/jqs6Q3v2l/Tl4TbXAT/hPdmvoWV8q+Q2hhcTnnyIQUTKz/7fxKN2nIzV7 JoRCqCg1W9UiJFZS5TfmXw/OKgvF/SU= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=hw0imCDH; spf=pass (imf11.hostedemail.com: domain of nifan.cxl@gmail.com designates 209.85.219.179 as permitted sender) smtp.mailfrom=nifan.cxl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744834657; a=rsa-sha256; cv=none; b=04+IDzgjtLGSH9v8f6rZlpLn/KgpqWSdA0mMjjlKEKVPvE0Sc4/bSqbjyutDIaxJLQxl9O zB9w4i09GV82J+lMpP8bszkpj3uPj2jfNRJswB2MbSA2uBSXZWCmQi9bDbjcUO9oV5LWWE 0U3049vjx9KLEq8UrNLqzeyn5oBZRlY= Received: by mail-yb1-f179.google.com with SMTP id 3f1490d57ef6-e6e2971f79fso98235276.0 for ; Wed, 16 Apr 2025 13:17:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744834656; x=1745439456; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=CflYkpCwmcNHOZhPPaWFtrcabnpu0tQed65YHPVcA00=; b=hw0imCDHtaG0rwNHdhL73vEc+3aQxDytD9LL5nZ2rDSO7R4LR0IE/fK1005hGXPMx4 C05lsHrllwg9LDNt7ehd5vVwmsRk+JF8lR/B9zZOjb20vpSHvxZWYaQT837xuYaS1Px0 7Mmq0G2rbpK/YflN8gambAXWOJZJWh2mqTg/6VjTtCtg9CgWVYqF5pomt94y3tL741De UgvRFY3Pgz7wgk0Vstdsq4hEgqEA/wfApk4vRjoGr+lu0qwGZnP/MfVygTSwMVlib2Zi 3rTUiPyfxUIwr7U6bJlMaxExYdOhcgIOOg16C7E+ffCc1fzFqj5SrQVfUPQ3vKJyLoaN fALA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744834656; x=1745439456; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=CflYkpCwmcNHOZhPPaWFtrcabnpu0tQed65YHPVcA00=; b=LjbRHHFDe2iSk57ZSvxF1tgXjg53LVSIitHWgHRUw6HzhVcmQNkDxG0y9/Ajhw9dPA kYiyA1Hq1N7YaMveViy4BNc0sOB1RMt++0S9NZZUacIAfIrByhjzKicwpAqJPXm7F0Uy dD/EW5ztCZQJx21V9/fNeuDbJbgFdBU+3+Qo/HAxf6WcAmEg1xlVd6JfWz0IbBSLkIB4 C1lubT3UX63FHsqUFhW2qtbGQo1+PDcgIw7exN+qGhvL3dZ9XX+2nXxbtFkDaLfeIbj7 e4UkbbsMZzHGY536L94Cg+nOEBbwzIotpAO8K4SVN2iBJhjnrn97/jnHI5HG2YdC45Wp iEzg== X-Forwarded-Encrypted: i=1; AJvYcCXeHqP1wgdKSv49cUb2yknpraWddeJrfcMU/id2BWfa/jEFVdKIPqR8REmUCfNuHp3ZwZ+OJrnGJw==@kvack.org X-Gm-Message-State: AOJu0Yz7Ge3fsAVPiMiJPKLqeP1xLNov3O4i710/ihxSfTn1NR7hMJz1 +94Jp+skNh/e8F+jfrVPifWuB4GuJAg7caEwnVTIy9kfKBBXdghI X-Gm-Gg: ASbGnctWipCYb78sIh8agaWcldId8CNwDqurbE3jRCXPLLsRtaL0pAAbnFAswF5RXCz A6ezyNH5QueKDJC0H8I9FDc1u+6BNEvo49+CLfZV8leC5seaPADXIZjtAVd3NiysYuj5WrESDi7 4QJEkhrHSj6r8cVgZsk/iHgBehlEXvA+VSyJl0jAzFUPUy6tXnklESrrlZ0wwkw/fy8ZbHn1P1q sZTkJ2EPwVUjH5pkdHIKG+q/dhQQr/jsCJwEQfAYzcnY3gkUS18U3MdkFvL3l7G/H0Pe4dwuU/A 9aDdoRCENxlmp7ukPePfciP7w0RQHATOtRAKnXT16TesWkt1LyI= X-Google-Smtp-Source: AGHT+IFFXzgbUYgP60nqbnEnfLWEDGbfDou4lsJyEpl6suKqcdpb+qylOcokWL9qWwzjfiOf9tXo/A== X-Received: by 2002:a05:6902:2681:b0:e5b:1b55:1325 with SMTP id 3f1490d57ef6-e7275967f68mr4277783276.25.1744834656400; Wed, 16 Apr 2025 13:17:36 -0700 (PDT) Received: from localhost.localdomain ([50.205.20.42]) by smtp.gmail.com with ESMTPSA id 3f1490d57ef6-e7032783effsm3887699276.56.2025.04.16.13.17.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Apr 2025 13:17:35 -0700 (PDT) From: nifan.cxl@gmail.com To: willy@infradead.org Cc: mcgrof@kernel.org, a.manzanares@samsung.com, dave@stgolabs.net, akpm@linux-foundation.org, david@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, will@kernel.org, aneesh.kumar@kernel.org, hca@linux.ibm.com, gor@linux.ibm.com, linux-s390@vger.kernel.org, ziy@nvidia.com, Fan Ni , "Vishal Moola (Oracle)" Subject: [PATCH] mm: Convert free_page_and_swap_cache() to free_folio_and_swap_cache() Date: Wed, 16 Apr 2025 13:12:15 -0700 Message-ID: <20250416201720.41678-1-nifan.cxl@gmail.com> X-Mailer: git-send-email 2.47.2 MIME-Version: 1.0 X-Stat-Signature: auf1k1em6ix37gb7cz83o7irc5j8u98i X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 736E140002 X-Rspam-User: X-HE-Tag: 1744834657-775556 X-HE-Meta: U2FsdGVkX1+D6FS7sDhagdgHNNUeHtSxOLrkFwfqMn74pvC2x/pLazIaQszBwjjSwZ3M7e2jj9JHk/r7hfKrm1Eevw8MOTElmEDAKd6QJG2zCDIznOuMFdppAK61wAw6rS9TcwGKqATUpN83n/q6Sdv/1rE7lCN7NJk41L3+VefSnZSO2glW+pWKkQ9veck+C7hX0FU/Rzu25MXB1dk/t7elyJkWY+pFZKLyijtoqUKLkhq7YBN8lWX8fQqSoW9cmfKPPmoyqtfqiBkXlLLh8/c6YInnrUVeJk5f3D0HvuQjf7wBssGG/rc7TNcPh6KIfd/8K4T6rvTazSyBV/qjbh6aW3CXTUgNfyys8wk/I/T/GB59LeneBvZFe7kFJM66gCXrohnrcyNgOyMVOZlJuGXoG6wRUExxSGpvDU8yr+h8g/vYv7gq7jPBTyB1R1zd0nY9Ln7TyfAqKE7Nnk47/SRsHYI5TGz9xrNFrO5MJgXjsvuYf7tLsnuwAB9IDzS8DTEX0QPqwMMX951ph/RhUqdOoAlAFTc9JtUUA1LpW7oqUjX5Vro5QBzDevQzjz5eMarjdmiB7rTJizaqnH8+m/0zG555fFZJiiWoLb0FtSJOJ2jqZBMsFFQ+JqWq5E/1XMIOm2ADN33NohaJWfsgyIsYNUwK/hmpHFGejvh0CsAqhHmaF0V8ylPt5P73dgZTLC1MHH/guzFSXGv4HNW4hTYkxvXhckVamfW8QuWf0miH3GRX2DFxdX2I01DpQmbZl5XRGLqeoW5Ulqv0oFcWLdUGoOqiFVt2VtNhvEN9+E5UBTVUsaT1E1KjLqN4uGap1TA/2NqtG2bUL0CZ2ik8NwCU+utlRB69xC9+LX3sITZH4kkuG/QKIpy6XSH2li5wQH8DTAC3qFV8nzsYcVn3JUaE+Q6MHSsfEIkvV6j8PfRW6ba4IBqeIZzVWMTI1WnvaTkrZBOO1C9xIEFLEuu 4EAB/pDI iEGV1ocT+OCG++k4bP7QK4M4gX51qpNd+W3w++jFEt+xyDZGvh5N9G2R/Lk1QZXpQsnn8noaLbA03yVRmPIGr10yiZ6o4hCF6gJ/UYGRGIScV2WjnVVzMWSMhny41HICDeIgydKx1yQRAwiz+pkYhm2xEjLsefzYDgWsR+abEckfeQzandfYRbGr3RQuuBXi2HZzcT9RZI1RAB5BUzVVYwGlAK3QjFZ3gYg4X7AhF8icc9HAet6X0g4QIHzXQv6r7/J1bVtjInGDHeWem9sdOqO8oRc78S7/0DuTLaKOqdtNk/t3yR3TerPfHE7TaLGctJLMy++81ecfZPM538bcKR1FDSyiQLvS+39mfilSi0pY7qBjKhgQA2Amr+XFYrsqUlEfO38wTeoxBV3k1IvmTEOKZOchYm2EQlV4QvcFYbiH+TvFqNzLdpl5IsaWmWqSdagff9NtCVQg5FQCutF4YoCWtinSonAE0KZkoJx8YH331Z9/c8ktXh7o5iBepn3I4hKi6R2IrgXlDomLJ6P/NLWSZ0wTkcOY0qcstr9xiMARmQK6sfZArfJ25TTnsEe2NjSdYMEpmaE+UAe37xhN9ysvPwMyWhT6KUcbXC+ixNJJZfec646di4tyYNYXsV+v1htGvjv8gxK8t+VS0/w6AUrSjg4PHKARQfdy/JincdmlU6vg2ZsjAKgzcq1TMt0iVYcAN 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: From: Fan Ni The function free_page_and_swap_cache() takes a struct page pointer as input parameter, but it will immediately convert it to folio and all operations following within use folio instead of page. It makes more sense to pass in folio directly. Convert free_page_and_swap_cache() to free_folio_and_swap_cache() to consume folio directly. Signed-off-by: Fan Ni Acked-by: Davidlohr Bueso Acked-by: David Hildenbrand Reviewed-by: Zi Yan Reviewed-by: Vishal Moola (Oracle) Reviewed-by: Matthew Wilcox (Oracle) --- v3: Rephase the commit log, apply reviewed-by and Acked-by tags, and remove comments on sparc. v2: https://lore.kernel.org/linux-mm/20250413042316.533763-1-nifan.cxl@gmail.com/ v1: https://lore.kernel.org/linux-mm/20250410180254.164118-1-nifan.cxl@gmail.com/ --- arch/s390/include/asm/tlb.h | 4 ++-- include/linux/swap.h | 8 +++----- mm/huge_memory.c | 2 +- mm/khugepaged.c | 2 +- mm/swap_state.c | 8 +++----- 5 files changed, 10 insertions(+), 14 deletions(-) diff --git a/arch/s390/include/asm/tlb.h b/arch/s390/include/asm/tlb.h index f20601995bb0..e5103e8e697d 100644 --- a/arch/s390/include/asm/tlb.h +++ b/arch/s390/include/asm/tlb.h @@ -40,7 +40,7 @@ static inline bool __tlb_remove_folio_pages(struct mmu_gather *tlb, /* * Release the page cache reference for a pte removed by * tlb_ptep_clear_flush. In both flush modes the tlb for a page cache page - * has already been freed, so just do free_page_and_swap_cache. + * has already been freed, so just do free_folio_and_swap_cache. * * s390 doesn't delay rmap removal. */ @@ -49,7 +49,7 @@ static inline bool __tlb_remove_page_size(struct mmu_gather *tlb, { VM_WARN_ON_ONCE(delay_rmap); - free_page_and_swap_cache(page); + free_folio_and_swap_cache(page_folio(page)); return false; } diff --git a/include/linux/swap.h b/include/linux/swap.h index db46b25a65ae..4e4e27d3ce3d 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -450,7 +450,7 @@ static inline unsigned long total_swapcache_pages(void) } void free_swap_cache(struct folio *folio); -void free_page_and_swap_cache(struct page *); +void free_folio_and_swap_cache(struct folio *folio); void free_pages_and_swap_cache(struct encoded_page **, int); /* linux/mm/swapfile.c */ extern atomic_long_t nr_swap_pages; @@ -520,10 +520,8 @@ static inline void put_swap_device(struct swap_info_struct *si) #define si_swapinfo(val) \ do { (val)->freeswap = (val)->totalswap = 0; } while (0) -/* only sparc can not include linux/pagemap.h in this file - * so leave put_page and release_pages undeclared... */ -#define free_page_and_swap_cache(page) \ - put_page(page) +#define free_folio_and_swap_cache(folio) \ + folio_put(folio) #define free_pages_and_swap_cache(pages, nr) \ release_pages((pages), (nr)); diff --git a/mm/huge_memory.c b/mm/huge_memory.c index e97a97586478..0d28da37f826 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -3648,7 +3648,7 @@ static int __split_unmapped_folio(struct folio *folio, int new_order, * requires taking the lru_lock so we do the put_page * of the tail pages after the split is complete. */ - free_page_and_swap_cache(&new_folio->page); + free_folio_and_swap_cache(new_folio); } return ret; } diff --git a/mm/khugepaged.c b/mm/khugepaged.c index b8838ba8207a..5cf204ab6af0 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -746,7 +746,7 @@ static void __collapse_huge_page_copy_succeeded(pte_t *pte, ptep_clear(vma->vm_mm, address, _pte); folio_remove_rmap_pte(src, src_page, vma); spin_unlock(ptl); - free_page_and_swap_cache(src_page); + free_folio_and_swap_cache(src); } } diff --git a/mm/swap_state.c b/mm/swap_state.c index ec2b1c9c9926..c354435a0923 100644 --- a/mm/swap_state.c +++ b/mm/swap_state.c @@ -231,13 +231,11 @@ void free_swap_cache(struct folio *folio) } /* - * Perform a free_page(), also freeing any swap cache associated with - * this page if it is the last user of the page. + * Freeing a folio and also freeing any swap cache associated with + * this folio if it is the last user. */ -void free_page_and_swap_cache(struct page *page) +void free_folio_and_swap_cache(struct folio *folio) { - struct folio *folio = page_folio(page); - free_swap_cache(folio); if (!is_huge_zero_folio(folio)) folio_put(folio);