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 4C361C369DC for ; Wed, 30 Apr 2025 00:54:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5FCF86B00BF; Tue, 29 Apr 2025 20:54:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 58F656B00C0; Tue, 29 Apr 2025 20:54:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3B4026B00C1; Tue, 29 Apr 2025 20:54:18 -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 180DA6B00BF for ; Tue, 29 Apr 2025 20:54:18 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 7C987141497 for ; Tue, 29 Apr 2025 23:38:53 +0000 (UTC) X-FDA: 83388698946.20.69527A2 Received: from mail-yb1-f180.google.com (mail-yb1-f180.google.com [209.85.219.180]) by imf02.hostedemail.com (Postfix) with ESMTP id AE39980009 for ; Tue, 29 Apr 2025 23:38:51 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=myBr93m5; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.180 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745969931; a=rsa-sha256; cv=none; b=txIpur+G9CFrMFF/V6HKmqPnStL+RWXI1IBnRXuUS+5mas/YKanUTlbISAaWvE216mKKCx NmKmxUIg1tW6lBbl0oWw+0MvbQhVcLmgUS7Vz2tH/99gXNwW7buDfOBkuie3ajMkHAvFAd Kk+z51u+X7K8DyxPjHjZ3ePNm5fL58k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745969931; 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:in-reply-to:references:references:dkim-signature; bh=0qBYzjibBJx9rHZLcTQDEGn367QWHS1A048569h/uvM=; b=yO4CDCp5xbHPho86RWA+qgGGXCD3XRdHhL+Flyf5+9BMmNm1ZqCO9dlLa+ii4AdseI9ErG +BHJoL0I2qmpBbnR66eHq4+thsQHwDle1VjhcrHXR8k99TY3nHlSPvf1fRloY0ig2rX+9w cjJ93yk+3ynLZT+u4Up2+2Brl+EOx+c= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=myBr93m5; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.180 as permitted sender) smtp.mailfrom=nphamcs@gmail.com Received: by mail-yb1-f180.google.com with SMTP id 3f1490d57ef6-e72c2a1b0d4so6338237276.2 for ; Tue, 29 Apr 2025 16:38:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745969930; x=1746574730; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0qBYzjibBJx9rHZLcTQDEGn367QWHS1A048569h/uvM=; b=myBr93m5slMcDjZWbohHphKXV8W5Fzenux5SvpX+pGUqjAXJ5x1AMgGGxTqqx/MZPW JY+Ecryorf/D6IBndOoIe0BbqgKR1jRkpTAywxZ1VTN2ITBNAQZV/VZhSkHiXQBNA0ny M/l6LpqCRgATAdnBCqOWK7z+b9UTozR//jJtHN0FbEU8mkfl+9S4Z5HWmOgHC0kkbzxm psVr8aBPFpkyG4aQ/X4cq4p6Dm6IG/3YSw5RJ8JFcUMPlvVZt8Srl1xiVxdUNA3TR70p DI28XVWcUBbAzpM1km1UcC4/o/9Wesfu3XN1dBvuS/X0YtzMn9pO3HtEEZVbS12P3av5 OS4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745969930; x=1746574730; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0qBYzjibBJx9rHZLcTQDEGn367QWHS1A048569h/uvM=; b=sSWwJVTANIskL4omye83Qz7bSwLs8ySu+8ldOCPnwsw2pk4TUswuos4/S/5fYRj5FZ U3BiI6qG8xUd3zaXDjK7G0YX67YVRq8k7S0ueYhbmjjNaR4Pc/bFCfEclFbdIUzG4zxs R9bySqKHhmt9RiqLiUxHH/T7LSzlX09aI0Z70jXpMTGZnjA9HfBPuvfSPXgl/E2dpK44 s0OhsHMpJ2qFZU+dJojPD359/NPxvHn7uxvu2FhabvXVYZDLFxCn1jB4X5+Hgft5beFa b9kvwtj0Dqz4C58qcI8szMrNnDEOTSaaAjKkQ1G2wQOfUZaE1IkuK9SC0M2EmKK3XuLy yPFA== X-Gm-Message-State: AOJu0YyYqHHw9q7Iqxra89I0J85CFk++hXSqBc2Y+ZdrKVbfqecT/HWh OPQ1ap2znUM5dGbqr3xH8LOJc8AYaAxLGunSlKbTVOJ92JXIHgNG8FS3hA== X-Gm-Gg: ASbGncsAKIFxk+xNdeNoLoHgcMLfmcDZOS0RKWRbBmXi+V/YKJQL2BXRjvFxQ+BlYa5 d7SOKhQDiCGnlbWPPHP3JmFiXXPjhnJaicRSIh+cCulHEoxWTbFFWM8EvCBg/a6Eo46/LWuXSIN 8+3/tAcFOTcR0tNX2i22ZqZObvaQO7YGrHvEE07rl3iN710HBCnVjhXsq9TzqhFMKDw+hNXnQJL N1ruy3EUMb1g++fw+3crF2xc1MY/F1fvYCq5hKIRXPQ4V++TdtsPN3B8Rzqrb47EMbyVkIqM6+0 kGzxEcXgCPb/AJkfM83PlnAqw+huCAWUZ8CO+JRCruE= X-Google-Smtp-Source: AGHT+IHdxLhTmtD4Ht9GO+oV1MromZ9Nj3cR1phCcjSOrLEmdVAvEWKlu3ewjdvFFLOqR9mFjIe3Tw== X-Received: by 2002:a05:6902:150a:b0:e73:124b:95c4 with SMTP id 3f1490d57ef6-e740412f1e7mr1147823276.13.1745969930578; Tue, 29 Apr 2025 16:38:50 -0700 (PDT) Received: from localhost ([2a03:2880:25ff:73::]) by smtp.gmail.com with ESMTPSA id 3f1490d57ef6-e7412e1f0a4sm63120276.17.2025.04.29.16.38.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 16:38:50 -0700 (PDT) From: Nhat Pham To: linux-mm@kvack.org Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, hughd@google.com, yosry.ahmed@linux.dev, mhocko@kernel.org, roman.gushchin@linux.dev, shakeel.butt@linux.dev, muchun.song@linux.dev, len.brown@intel.com, chengming.zhou@linux.dev, kasong@tencent.com, chrisl@kernel.org, huang.ying.caritas@gmail.com, ryan.roberts@arm.com, viro@zeniv.linux.org.uk, baohua@kernel.org, osalvador@suse.de, lorenzo.stoakes@oracle.com, christophe.leroy@csgroup.eu, pavel@kernel.org, kernel-team@meta.com, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, linux-pm@vger.kernel.org, peterx@redhat.com Subject: [RFC PATCH v2 01/18] swap: rearrange the swap header file Date: Tue, 29 Apr 2025 16:38:29 -0700 Message-ID: <20250429233848.3093350-2-nphamcs@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250429233848.3093350-1-nphamcs@gmail.com> References: <20250429233848.3093350-1-nphamcs@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: AE39980009 X-Stat-Signature: z4r5znwzpspjw5t4ojp18it9475zapfc X-Rspam-User: X-HE-Tag: 1745969931-68651 X-HE-Meta: U2FsdGVkX1+nyCpzWU0mEzgNxFRUIyMD+pTFGm83ZPI/SX1KEgXX6FuTji74OOUD7ASaFaQYOVgljEP9qp9mZBVV2DJRvfkGSSJLV/aXthk2ESuY355HC5cy7kBSwtC2lzaRj2AJtTh0yXsa0e6Qp8IX7FrsPD9zyUAjUmQsNeFuYisraIbVOphzGjhk8WK32Gk23U+bvmTy5BoRcHBCkbElsX472sGnsAaq7tCjXFSJlavONda9JVio3r37FltxCzOhc92WyPMgiG6VKz1A87N2IJK29M/qC2LiV4w+gv1ol0//YooFnGlyc4a7oQyjG83bua5M7TazPX/crtGGd1VcM6oKgXO8JkdKBhiJ4JWvdFG9LldhPCNFUdKRCLXwtp5/ltmNz2zzayXWY2EKC8akUocnTHFS8sAOQdJj/J/DTejla3mblj4V3uI+vV80d7knBgxMtYj1VVvA1cb5hhnI7AJqmAIG3/urBKMidq8MIMPWr5kCZKHZF/5rSd6gn3mCIDHO4k/99AYphM4uhp5gUi8rhcpR/t4ceAOSySGexyKVEObLMix6kWa3dmDF49NzsBigmZxJYaZWH8Arm82Cp/8oJ5nYhRQo8X0TUXxn0HzR5mWRD71xFv7VNAzgpHkMyOzqQVUxGJ4Z61pal4fJn+G4tZ+84og6rJUTcg0qemd9l1udaBgzeaue2fBNQTOp7M+n1ZG0uf59Weu5UBGgpLCTimUrpHDcVQvS3ySiRS+iGV8vSkacXlMVA+XL0m02KpjSEDOVmfgXkp66W5xz39gSOXwbIqgHPXyRvxdZI7o9/6vF8HM0zeaegCAr9nMQ1uyl7jjKHe8YhzhCuZ5WIw8Ns/VQYn5E1n8W9N0WnGXsrJrY57z53XgERRxwBnlSt+XWdtcGQo6I+/Y5jB/yorAQMhGMrZMNpxmDZtOO7ARAJrgyw+MCk1Pb1Y8uXjKV0AVqNgifOsuuLw4 RJdaovRv tc2irE5KYW1CBz/NLCutTVm9lj1wfZhZfkfAvsnKkgbjk2SKjie1bAyr2sVsCbMxZJXBgJyXBszYAdfmCHPqTmN1rkPYDcmsjeM/ViOe16/zq6cUS7/ro3m3zxpQM7149q3kc78Ps9dRkBDch1iWGTJxEvDpEyCM5CqhydE1hpCONtEHTpuArGQSdBzFtrSOPOqFM8Nfzq8QfpR0FgUnI99BsSJ8txD86lxjdXi+e2T8zcbq7JiL1coySM/mI4iBjcarodocWvcybCsIgNA0s0s92BS+8r/Z/IZ3wd/HtuPDD9+xgdwYOXGPdXfXaKeMqGQvl+bQwDfKe9mhtdUowN5RTuL2kh9DufRh/KF7AiJQ5kKHxuFlsepGMrfP0f0XAjgDBvxZ0y8ueUWnWwbNj0QYXvqDNflFOnc5FWmfqqOdInOBX1HXX1ohjjxfWcZQdvrJBD/OdjxhzLFq6RsJDKw7OHwNZn/We1HF6gQFHrGOv5zt9vRhXUxI5FQ== 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: In the swap header file (include/linux/swap.h), group the swap API into the following categories: 1. Lifetime swap functions (i.e the function that changes the reference count of the swap entry). 2. Swap cache API. 3. Physical swapfile allocator and swap device API. Also remove extern in the functions that are rearranged. This is purely a clean up. No functional change intended. Signed-off-by: Nhat Pham --- include/linux/swap.h | 63 +++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/include/linux/swap.h b/include/linux/swap.h index b13b72645db3..8b8c10356a5c 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -453,24 +453,40 @@ extern void __meminit kswapd_stop(int nid); #ifdef CONFIG_SWAP -int add_swap_extent(struct swap_info_struct *sis, unsigned long start_page, - unsigned long nr_pages, sector_t start_block); -int generic_swapfile_activate(struct swap_info_struct *, struct file *, - sector_t *); - +/* Lifetime swap API (mm/swapfile.c) */ +swp_entry_t folio_alloc_swap(struct folio *folio); +bool folio_free_swap(struct folio *folio); +void put_swap_folio(struct folio *folio, swp_entry_t entry); +void swap_shmem_alloc(swp_entry_t, int); +int swap_duplicate(swp_entry_t); +int swapcache_prepare(swp_entry_t entry, int nr); +void swap_free_nr(swp_entry_t entry, int nr_pages); +void free_swap_and_cache_nr(swp_entry_t entry, int nr); +int __swap_count(swp_entry_t entry); +int swap_swapcount(struct swap_info_struct *si, swp_entry_t entry); +int swp_swapcount(swp_entry_t entry); + +/* Swap cache API (mm/swap_state.c) */ static inline unsigned long total_swapcache_pages(void) { return global_node_page_state(NR_SWAPCACHE); } - -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 */ +void free_swap_cache(struct folio *folio); +int init_swap_address_space(unsigned int type, unsigned long nr_pages); +void exit_swap_address_space(unsigned int type); + +/* Physical swap allocator and swap device API (mm/swapfile.c) */ +int add_swap_extent(struct swap_info_struct *sis, unsigned long start_page, + unsigned long nr_pages, sector_t start_block); +int generic_swapfile_activate(struct swap_info_struct *, struct file *, + sector_t *); + extern atomic_long_t nr_swap_pages; extern long total_swap_pages; extern atomic_t nr_rotate_swap; -extern bool has_usable_swap(void); +bool has_usable_swap(void); /* Swap 50% full? Release swapcache more aggressively.. */ static inline bool vm_swap_full(void) @@ -483,31 +499,18 @@ static inline long get_nr_swap_pages(void) return atomic_long_read(&nr_swap_pages); } -extern void si_swapinfo(struct sysinfo *); -swp_entry_t folio_alloc_swap(struct folio *folio); -bool folio_free_swap(struct folio *folio); -void put_swap_folio(struct folio *folio, swp_entry_t entry); -extern swp_entry_t get_swap_page_of_type(int); -extern int get_swap_pages(int n, swp_entry_t swp_entries[], int order); -extern int add_swap_count_continuation(swp_entry_t, gfp_t); -extern void swap_shmem_alloc(swp_entry_t, int); -extern int swap_duplicate(swp_entry_t); -extern int swapcache_prepare(swp_entry_t entry, int nr); -extern void swap_free_nr(swp_entry_t entry, int nr_pages); -extern void swapcache_free_entries(swp_entry_t *entries, int n); -extern void free_swap_and_cache_nr(swp_entry_t entry, int nr); +void si_swapinfo(struct sysinfo *); +swp_entry_t get_swap_page_of_type(int); +int get_swap_pages(int n, swp_entry_t swp_entries[], int order); +int add_swap_count_continuation(swp_entry_t, gfp_t); +void swapcache_free_entries(swp_entry_t *entries, int n); int swap_type_of(dev_t device, sector_t offset); int find_first_swap(dev_t *device); -extern unsigned int count_swap_pages(int, int); -extern sector_t swapdev_block(int, pgoff_t); -extern int __swap_count(swp_entry_t entry); -extern int swap_swapcount(struct swap_info_struct *si, swp_entry_t entry); -extern int swp_swapcount(swp_entry_t entry); +unsigned int count_swap_pages(int, int); +sector_t swapdev_block(int, pgoff_t); struct swap_info_struct *swp_swap_info(swp_entry_t entry); struct backing_dev_info; -extern int init_swap_address_space(unsigned int type, unsigned long nr_pages); -extern void exit_swap_address_space(unsigned int type); -extern struct swap_info_struct *get_swap_device(swp_entry_t entry); +struct swap_info_struct *get_swap_device(swp_entry_t entry); sector_t swap_folio_sector(struct folio *folio); static inline void put_swap_device(struct swap_info_struct *si) -- 2.47.1