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 CBC53C369C2 for ; Tue, 22 Apr 2025 15:51:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CFAA06B000C; Tue, 22 Apr 2025 11:50:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CAA916B000D; Tue, 22 Apr 2025 11:50:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B49F66B000E; Tue, 22 Apr 2025 11:50:59 -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 983996B000C for ; Tue, 22 Apr 2025 11:50:59 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id C1A811A052F for ; Tue, 22 Apr 2025 15:50:59 +0000 (UTC) X-FDA: 83362118238.11.CE27653 Received: from mail-qt1-f172.google.com (mail-qt1-f172.google.com [209.85.160.172]) by imf07.hostedemail.com (Postfix) with ESMTP id E519C40009 for ; Tue, 22 Apr 2025 15:50:57 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Hdd8//cu"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf07.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.160.172 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745337057; a=rsa-sha256; cv=none; b=1A31fhrmZhGKMqhFZGBVo8JKvCqIIKs7H98awvjQNSGc2/VRmaTrcWiNBhLwVSuHjKa7xY +Dp389VbiDNS4P0z1QaEht91B/JZGcLL99O7twaInoBaaXP9cgucGJckEEz+jXmX4Fj/TQ kbbgvAM/LCcPdRN0mMU04iJ428GwGRI= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Hdd8//cu"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf07.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.160.172 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745337057; 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:dkim-signature; bh=7oowU4ubiAR+sY0xZ++0AHuDMpFQG52efmVb/Y2eNfo=; b=0RyYqGMjqvEWKa60lege/yhL1blTLuMdPaiGRCYOZHDtkwXLwSfPCNVnMRtfaPvdlv636Y C+Q3+0AvBi8qIqMd/PijSao9qM+zgsXwAu15LcFaQfFLumhQrliagh27GzQKn8p+oAampE snY7+fZu+7axzDa6hCIcVm5ZYzD42Hk= Received: by mail-qt1-f172.google.com with SMTP id d75a77b69052e-4769f3e19a9so36171751cf.0 for ; Tue, 22 Apr 2025 08:50:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745337057; x=1745941857; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=7oowU4ubiAR+sY0xZ++0AHuDMpFQG52efmVb/Y2eNfo=; b=Hdd8//cuvTVRVX//0DrXslWl540cr/tCHNn25OazA9nIwPScvp4mMQkfGYDp8bH6HR QGY5kEcTDacEJZP4Z0VGTA8rY705ACkvqGYVanIRInh7aywb2e/CNRaTmrwJ+MZydrGE 185PkMV2iQPmX6xloZedggQuYeCdecv5l59Hy9RyVx2xjfk9G2Qjx5pzahfF+SyUKzWU N5h5CWNG0tUyQ/895Nwbfv/Prief/M9E4vckLORJcRC9XRJm3hzs6oyvvdIhBRtc2o0P unnM51/jCRbnmwTugahEv7IWFgT6VlGD15PGero8wBRijUYjOJ3gfGe4Sr4VQspyy/BF 8PhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745337057; x=1745941857; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7oowU4ubiAR+sY0xZ++0AHuDMpFQG52efmVb/Y2eNfo=; b=BbZm8wClf7cvO7CDdUBeN6FLIzVdHfbI0p0F3Dh6f/sGRfOIkDwCklLyVOm3ObmJLV DQ3Qzgh2EmMFCciXITr/UjwotEkFsHisxYAOeJLLHQwC5W3E0dCtJ5KOni8hhGnfQbMl 42XuYxMcBz2hT6JVeNkfUjqiAy7psU8rHcvOrkOkKe4R53tZJYPpFgL37jRVq1Er6nMH +yLAn8M+e9YqwfVL1kPi70wD7MFlrl5DEb5uNN6k1ivZ3HYK7aLqMb6gA5+yX1SArCr3 VzsliQB3QPsmSu6m14u4o/ViELf06YyNPyhtreF5QwVivK8SoEmTEGTZ/jQBwXmYRojw AwRA== X-Forwarded-Encrypted: i=1; AJvYcCW42tztVoRjhdOrFG/mzmmL5GwGZvTxlCvarbBi5x3A1XGL7s732kAuHEG9qvVSShUEHycrp5g0gA==@kvack.org X-Gm-Message-State: AOJu0YxmXCwRCCQJN1FAg8qYsmmmVZ2nUVa4tOSWqoG3h92lnrJZK+YC f8kC9StedJ+0U/TUy1/jtz0QAxX0K5r/c/XlbWt9lA9rRf6H8AJ+ROPh6leq+5sDAwO8TTuU0vs si9+5/AKPX19IelcNgDwkuPeRP50= X-Gm-Gg: ASbGncv/R22fRE4m3gWCylm9t0FP6Sky0eyKHnvHls1Bbc/la0QE+MGJQKOGV/ST7Lb +9Sehb8hs8r51AXmYtH9r/ddadvo4LLlKbduEXoKmablY//C3dC0RipAcDxuqFfbMI8+gEVt62L xD7X3Yk5s1/K2qbaja0Qzzt8Y= X-Google-Smtp-Source: AGHT+IFTQJvOfea+03HAmL9GIosZ3IA3k3+2rYzqUw2jPSNa10A/2r2nDWdPOvptn58dV5riuFvJ00P+D2mvRKAx7Is= X-Received: by 2002:a05:6214:262c:b0:6e6:5d61:4f01 with SMTP id 6a1803df08f44-6f2c45125a4mr324053346d6.8.1745337056905; Tue, 22 Apr 2025 08:50:56 -0700 (PDT) MIME-Version: 1.0 References: <20250407234223.1059191-1-nphamcs@gmail.com> <20250407234223.1059191-4-nphamcs@gmail.com> <20250408141555.GA816@cmpxchg.org> <6807ab09.670a0220.152ca3.502fSMTPIN_ADDED_BROKEN@mx.google.com> In-Reply-To: <6807ab09.670a0220.152ca3.502fSMTPIN_ADDED_BROKEN@mx.google.com> From: Nhat Pham Date: Tue, 22 Apr 2025 08:50:46 -0700 X-Gm-Features: ATxdqUETwwP-bJUx8AP5nTAO6LFG9MhYiOS8p8tUjdEza2vLaCtWajTH1zIUKgY Message-ID: Subject: Re: [RFC PATCH 03/14] mm: swap: add a separate type for physical swap slots To: Yosry Ahmed Cc: Johannes Weiner , linux-mm@kvack.org, akpm@linux-foundation.org, hughd@google.com, 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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: E519C40009 X-Stat-Signature: 6dy6941nd44j64ezqnafqczrgn1mmpx4 X-HE-Tag: 1745337057-991962 X-HE-Meta: U2FsdGVkX1+9p1EU08Gwxxt8x5lCmKn6g64bOABz4qIoh5xnm7+8WOoNR3aMBcZTg6hUOMGRtBkEEyVJTGhDGsoub1DKQf6HzK4aa45EPBZMOTLJPtJ2HT6QfscU5XmVjNAaafVmEW8GS50cZ7utMTanBycg9knH4diX/SsWO1c81Ve0Q6ekcNAIKzqwa/2pJoOOXvwN15hx43JegiaDNNSZUiqtcFX5VmnMiiSyw9AlckOUibJRJX6E+YfrEpCbp44n7aARKdD64GEckdWzHr3NMLDeVpuHRzbY7gasgm6O8yeIRKg2fu5Bn2ioUfy2LvhvDw6LwyabuayyGasQAm1n1webuKm1g7MNFmoG58arErnP4iHrVc0KrOnjaoCljTd9v4M+5iqxoQdYXt5qjVo1q/wPMZe+y41lJZWnrR45RF3veG0LA6td0j2CiHvJPmSJ1hG5Da1i//2w61uvuj7YJnTMqoZPevb6Yg8lCzWZkvd9f1xVWcgg7hgyDDAOF922aFkGg97HhkeT52Jz6Hq3xE55/4Qfey8XGL3AW4B6pWziMfAt42BVD2Ke4faJimHpQ+Izzbw7va2UcPbCeB+fG/lsZLJ/q72/txD6NKN5QQtpT7N+nlgzRJBdRb3pNswU5p2G3BB0E25PeOisDzTYx8GM/Pw0Dml1hFONZZNgQkEONYjIXUGZrOi81VMYZeT32or54Gkjq7MhvLyuA4RiJqUNY5XSpd4UK9JE2YOnPZRX5C5MtzPnHbJgVlYl3VxHyq+BfVHgXYlDG/IwkI+4ARtVphxXEMkTuSv7j/rBYL0/7TEwHlh2xKOO3p49vHF3YNWTUj8lSOIehIp8EVeYZAXMFVWQiPAIIkkeeBk2NOk6GKEQBZipKziTCn2/Q82vnCBoizhfFB5Ch435so+eXqlVRdFmzLa5S4r2SbkurBo/3erQGPC/3VDpnOYEIVCuS/x1jjwP49zgdA7 5t6h9Rg5 NZlmTwFuqiGzm/WZ/Q4M8nV5l/WsesB7XwffurEmVofqgwo82SWO2MgBROF0YmQ5zDOOAT+yKLtgOsQDeuuD3qDQqLYxY6s9QHX+X2Tu980m+z+Nhmr5FDkqFvhbV6BwtDRN8iYmQS3udoCsYU17N/kI32JCuLx8yBxmRq+/GWzaYMDLxhoRUYz6uC1K+5jcmmGHoZuAwXDfdHO2/VPQm3BFtUvhXsi3TG58CeMNqIA80woat/j2iSVh267qKog/k3BUKV8tBThDfx7K3UATzx4EobAFOV6l61m7LQXRKpoEtGlJuKQzDpxZdcUa9+EqDrJGQzDJhqJ1BL6sM3KcMt2AmNrQVT5p+RvR3oLGZbiQs5y/AUiwqLkD9GZqEcT/D8pd4Pnq5ZacsoZ4= 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: On Tue, Apr 22, 2025 at 7:43=E2=80=AFAM Yosry Ahmed = wrote: > > On Tue, Apr 08, 2025 at 10:15:55AM -0400, Johannes Weiner wrote: > > On Mon, Apr 07, 2025 at 04:42:04PM -0700, Nhat Pham wrote: > > > In preparation for swap virtualization, add a new type to represent t= he > > > physical swap slots of swapfile. This allows us to separates: > > > > > > 1. The logical view of the swap entry (i.e what is stored in page tab= le > > > entries and used to index into the swap cache), represented by the > > > old swp_entry_t type. > > > > > > from: > > > > > > 2. Its physical backing state (i.e the actual backing slot on the swa= p > > > device), represented by the new swp_slot_t type. > > > > > > The functions that operate at the physical level (i.e on the swp_slot= _t > > > types) are also renamed where appropriate (prefixed with swp_slot_* f= or > > > e.g). We also take this opportunity to re-arrange the header files > > > (include/linux/swap.h and swapops.h), grouping the swap API into the > > > following categories: > > > > > > 1. Virtual swap API (i.e functions on swp_entry_t type). > > > > > > 2. Swap cache API (mm/swap_state.c) > > > > > > 3. Swap slot cache API (mm/swap_slots.c) > > > > > > 4. Physical swap slots and device API (mm/swapfile.c). > > > > This all makes sense. > > > > However, > > > > > @@ -483,50 +503,37 @@ 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 orde= r); > > > -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_slot_t swap_slot_alloc_of_type(int); > > > +int swap_slot_alloc(int n, swp_slot_t swp_slots[], int order); > > > +void swap_slot_free_nr(swp_slot_t slot, int nr_pages); > > > +void swap_slot_cache_free_slots(swp_slot_t *slots, int n); > > > int swap_type_of(dev_t device, sector_t offset); > > > +sector_t swapdev_block(int, pgoff_t); > > > 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 e= ntry); > > > -extern int swp_swapcount(swp_entry_t entry); > > > -struct swap_info_struct *swp_swap_info(swp_entry_t entry); > > > +unsigned int count_swap_pages(int, int); > > > +struct swap_info_struct *swap_slot_swap_info(swp_slot_t slot); > > > 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 *swap_slot_tryget_swap_info(swp_slot_t slot)= ; > > > sector_t swap_folio_sector(struct folio *folio); > > > > this is difficult to review. > > > > Can you please split out: > > > > 1. Code moves / cut-and-paste > > > > 2. Renames > > > > 3. New code > > > > into three separate steps > > +1, I agree with the fundamental change (and is something that I > attempted before), but it's really difficult to parse :) > > Also, weren't the swap slots scheduled for removal or is my brain making > stuff up again? You mean the swap slot cache? That's the one Kairui wants to remove (I think he removed a huge chunk of it already). This "swap slot" is basically just a new type I introduced to separate the physical and virtual swap types. >