From patchwork Sun Apr 13 04:22:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fan Ni X-Patchwork-Id: 14049182 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 D5180C3601E for ; Sun, 13 Apr 2025 04:23:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DC119680052; Sun, 13 Apr 2025 00:23:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D7163680041; Sun, 13 Apr 2025 00:23:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C115A680052; Sun, 13 Apr 2025 00:23:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id A4522680041 for ; Sun, 13 Apr 2025 00:23:53 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id E152F1A1D64 for ; Sun, 13 Apr 2025 04:23:54 +0000 (UTC) X-FDA: 83327727588.16.8B911F1 Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) by imf27.hostedemail.com (Postfix) with ESMTP id 19A7740006 for ; Sun, 13 Apr 2025 04:23:52 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=G1TJAsmT; spf=pass (imf27.hostedemail.com: domain of nifan.cxl@gmail.com designates 209.85.210.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=1744518233; 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=1AS2H+/PIPI3NYMlr10CLL/3dv7YPjYADwcNGHTbPO0=; b=d1I51lGVa5p+1XInx+Jbey3JVeeDA+JtEyxarPZ57qUe1MwhgmxX0yJU9as/K3cRcM+x1H 4LfZIgCpygH0xkBYoB1Sh7lsj07PR4eeUOP35Gj27zAIUE5C52ko2Y/M/RXOjC+Mqe0Yr1 shFzlZQbQeOFktBYy/hNehJQYe0+GPo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744518233; a=rsa-sha256; cv=none; b=PkBEZ82/bXgZYeRxL7gCD+fY+kMbGzWT80dSA+0BXqLgzjvR6615EbWChU9jHZktqfYmPu iDM+4Klc66DlPJ+Fcti1r/RbqWnXkP+qPjGtpjokfcDW8FPzGdR2tpQFHqTJOC/2jCe8g8 l7+vSlUVRq/uBw6UvdCfkGyImYIcPxc= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=G1TJAsmT; spf=pass (imf27.hostedemail.com: domain of nifan.cxl@gmail.com designates 209.85.210.179 as permitted sender) smtp.mailfrom=nifan.cxl@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pf1-f179.google.com with SMTP id d2e1a72fcca58-736c062b1f5so2654628b3a.0 for ; Sat, 12 Apr 2025 21:23:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744518232; x=1745123032; 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=1AS2H+/PIPI3NYMlr10CLL/3dv7YPjYADwcNGHTbPO0=; b=G1TJAsmTHFXQWCDcW23nQ1UWPXrl5MY5pbYyo7qCOHX3nC085u3RR3P4BmQKGf5hYI +GFYK6Q422oBkZGc5nQC7K8fFlT4zvx/IpS0ciJmlkHBvbBfZQ/eh2HAh60bTwoLhoPX l2y2awNmzJPXgRo2kDBwRMNzmfanV4wUERJdprNP1xqXr3Dp98jT7qjL/5it4O1gCY8I qIKqQMAn5qxSdeGInIL8Bxtc/DePyzw2dvm+GmW4/JgdpdSDMsQ/eycxYfAgUFig5L81 L+14tLa5CcXQPMMUY/IkK6Bi8rVD0IglHkUY7E40GE/cXhKZ8+u71voVYlcTDqxIE3bi uXAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744518232; x=1745123032; 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=1AS2H+/PIPI3NYMlr10CLL/3dv7YPjYADwcNGHTbPO0=; b=HP1VeXSzWy9n8jzDoZiM0ZlwnoAlJbWJYBE3s3Ak2hY0QQkqhu22nFhI/Nv4DUAq5h Dj8/7QbqGJPm5vkUbw0hQAy6GjGohR1Tu2SOWNDSr6r6dcrZaLYWtAShiP/XQCbeZiCR bkmAN2rSVSyIZFrcH5+j8c2lt68Z+BjItVnpmVQOatyqtwOmPmA6uanqvNwFrssurSVU e7KF48J9IsFide+hdV2RrrUFRT7Q9+w2yEKCuiqBF+ubQQTJN3l406BZTLLd2pTbtLEG sEjp/Rmojuz39kVmrEl5XH8aJCIsKQJ2N6MZt2og/IMxbA83QMPYMpDPL3XO5Hi8saGC MmPA== X-Forwarded-Encrypted: i=1; AJvYcCU+TPHiNvISQgLmyTx8J9a4qH/GuJnnBJ3w09zZWGc/KuHrM7yL9dJ5txpEf4MAY0Hzs1VkSZ392g==@kvack.org X-Gm-Message-State: AOJu0YzigxBVo7efECOw8uY801+6UaCPfld0z15sOlwvhygn/Iuf6RuI X8GFxR2FuTVi/lH0TuPHacrxx82jwGy0hd3BqVlP7d0CnZNTd6Hf X-Gm-Gg: ASbGnctSa9zpDrKL+QDkOsSKSXK2OX5QzfKCND5cOYPoR/BQQN6ZFbnatiTe2TB9YmG hvLllGFxkoi3dZ87NDaeLq9Lyw5QKidhBR//um71fDwZ53swpWNbvLK0CHCFPUe8hm9oWHuEhuA by0xE5nYB3XFTDZXq3DIM0VffYkZsTrHxcUzcUBxIILpjs6gAB0Jx/oZTNgpwo2SeQw9/JkDcAj w8a6ZfskTw2N42IkbGxMAlX8VX+1TlutIgZ00vgzPBiaaEDfIBqoy7OPsuFpRPcZMzo85Y/+0Vk xg5dz+ZNFxGXM3Q9Tu1thuurvGHLOTGITuZ440rPKNfZIbpoFjVfOcd4 X-Google-Smtp-Source: AGHT+IGdCOnxdewEJNBYQH13wJswSBADISfBNiUR36v8dulkNBEpxas6SlgPzhnmT1diOhe2pjAACw== X-Received: by 2002:a05:6a21:339d:b0:1f3:33bf:6640 with SMTP id adf61e73a8af0-2017979bf66mr10683683637.18.1744518231647; Sat, 12 Apr 2025 21:23:51 -0700 (PDT) Received: from localhost.localdomain ([2601:646:8f03:9fee:5e33:e006:dcd5:852d]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73bd230db26sm4394079b3a.134.2025.04.12.21.23.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Apr 2025 21:23:51 -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 v2] mm: Introduce free_folio_and_swap_cache() to replace free_page_and_swap_cache() Date: Sat, 12 Apr 2025 21:22:21 -0700 Message-ID: <20250413042316.533763-1-nifan.cxl@gmail.com> X-Mailer: git-send-email 2.47.2 MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 19A7740006 X-Stat-Signature: 85k4h8a13864ktecrdk3edhagmrymt1r X-HE-Tag: 1744518232-194843 X-HE-Meta: U2FsdGVkX1/aHgADdcptdiFqkhgN9TT46LmFdu4h+nIPLfrKrk81aLfdmNIr9Xx9Q9P42jK1AP4iC82PWZl0v+8z1YjZEvC+yZNt6Pnz7BaBjCb6im7SaAvhYCzm23xLwfGuZ3lPx/38YvQUCEzDEVkx86UyZ/dlIbh3snEDzZttZUKud5YNq1+UIeiqdDOLmX/MA8LvohAJUeSz/DYVyW131ToK4pqBRCdijGfA5CS7k+H2mhlL+z2u6KKpYpsDZoXNN8ALt9tmNf4gIHjZSH/rhzXgrIYBOJBccMTG5Xg6wOiBBMk+FIDa1M+61NHOzsrCUqxS9FI92Hf/pEbAPJXq1B7WWWcdU6qBWDrBLECe7snZRHJY6U1xZJ5viyo6D7/SkdWO7MAKfyHbwtzxgA3zF/LJp9LO9FCzyJheyZIuBTlwPYV4klhw5nm0J3st5sggud6MR8Yp+b3Zo3xqVumbIe+0hxa8nqRqj1iPGSPmF+iFXleHbVh35BvGk2EZ3+Clv8qS8AWP+Od+1c6mZpBqmGnU/U9X0tiy4QmuUbSwNSQP25foulNRl+R9RQF2RD/rmliy76cHIvmxlD7Ca5tDneaMM1qKpKyiOnI+lRvavo7p4GNdTPvRl1OkcQ2HOSYdDLLQ5f41DldF7S0wnR0GIRNOKkqI6yl72PgWLaeaIp60qM5sLSVhLMVnh1TM8gyvnmK+DO89rKAeEvuYVPhTKX/+aYvh2F7GHd91Hle3kFbp9ndiA6HhlQrb8VPCaaOfJTPP8Q3jSACGd3p1F1x1KyMt94UpdRkv/e1uqD5GQ4QjcOVNdCLuU+uiwDNi8SfNdafD1lqHn8ChygKkV974mmLN1tQ1YUydNJCzzdXWtNxp6tQl6kBDpwIbF1Lf7NTnlcg693h7/TwRCv88FBP51X5KRCCwjcJIS9dmSVejbBtufzj1AW440jd3s068edb7xDG/2vrO4Z34NZd 2ZVKtjGh NvcNuX6ZWuAbc+bxwUJgCkNcVVPAwR9zJhGSz/XRAYT4CvdeF4pYQQDdcymUZBx/UeU27Gm20qvpCLP8rOvHK7MK1k0sj5YRCmRm59ZmaTAHX3XZQH/jh9fcVgDbiA5njScjDLEGp0eYvtlARXMdtKKW5pW7U/zjh5qHaOQub1c0ipZsagV1SuNYqVvsLeL19fCzOEC0a5SUJTRwVPusjcDpHe0qQ/O+NEpZ06Zir50y9TnusQET78uh+gr/9ea4xz01Ih2wNw+dAyN5uSvwlFdTFrB6W2GcBvqpjsh8WY3bSh+Bkcinav1+QVEWmTazJbNwd2JGeiCkWxOHYi7d2DmzzHLR4oshF+k1Xf18QHIFqdZS9YTHkcO/pCac30r4aqmgMVYy1iEjAPt2SqExFJxoVcocsX3YgaKqJu2HD4SPXnzGXVfdjCpqU7jIFvgQdoIMBIfq1a7xPxBRq722cPFPoKy+Mjo0Y2MHD0K6xFo8cE/hMJQWAm71X9Xj2m/8YTCc6kbzXF+fx8PK2GZjmNxkS2EF+PdaPyvmMawsScx+00S1ee9uC17IpDk8Ejb5vT9DKYo7sUf1j/Za/g0HB02p31q0Kbdh6gyZra2Dy580GIhNUVg+tfe/I6bIUkLZBFzso7sZbjJvdaaM= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, 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. Introduce free_folio_and_swap_cache(), which takes folio as input to replace free_page_and_swap_cache(). And apply it to all occurrences where free_page_and_swap_cache() was used. Signed-off-by: Fan Ni Reviewed-by: Zi Yan Acked-by: Davidlohr Bueso Reviewed-by: Vishal Moola (Oracle) Acked-by: David Hildenbrand Reviewed-by: Matthew Wilcox (Oracle) --- arch/s390/include/asm/tlb.h | 4 ++-- include/linux/swap.h | 6 +++--- mm/huge_memory.c | 2 +- mm/khugepaged.c | 2 +- mm/swap_state.c | 8 +++----- 5 files changed, 10 insertions(+), 12 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..ef76f65686ee 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; @@ -522,8 +522,8 @@ static inline void put_swap_device(struct swap_info_struct *si) 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 28c87e0e036f..65a5ddf60ec7 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -3640,7 +3640,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 68fd981b514f..ac4e0994931c 100644 --- a/mm/swap_state.c +++ b/mm/swap_state.c @@ -232,13 +232,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);