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 46E70CF9C5B for ; Tue, 24 Sep 2024 00:32:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A00D36B007B; Mon, 23 Sep 2024 20:32:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9B0D76B0083; Mon, 23 Sep 2024 20:32:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 877D86B0085; Mon, 23 Sep 2024 20:32:54 -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 689F26B007B for ; Mon, 23 Sep 2024 20:32:54 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 112AB41693 for ; Tue, 24 Sep 2024 00:32:54 +0000 (UTC) X-FDA: 82597756668.23.FCDED4C Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) by imf28.hostedemail.com (Postfix) with ESMTP id 2A229C0007 for ; Tue, 24 Sep 2024 00:32:51 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="MNa/Ry6y"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf28.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.54 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1727137885; a=rsa-sha256; cv=none; b=3VKGkCcys6y2Y3q3yLda6sMkMI0CfmZ8BrORc0g+SXVUUCufTrMjAP+GDKw1Hs0k3oLJau alEI0oXJmpSKWHXy15dr9kHrBPpz+xucanjAkxi+/142gAnN7X/y6tcucz6KU1dwmX3u1h SbXYxiZYK0DXcZFNZl7tFpgOERAEkBs= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="MNa/Ry6y"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf28.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.54 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1727137885; 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=P7mc2p+2Jck8sDD3ZoIb1R82s20ZBjvKNc7tKmgur9M=; b=Hi/PqScvTVvXycMHM7jXfhDXytf3wtmmoBE3vysZnlGzCHtTPl6yc68/1V0RwA34+Vkdzu 8hgLJXqeq5uZJ0ygULzAB/uxPAgb8+jpU0hz5XrFJK8QpNkywy3P82nCU+1KUprt0A/1h4 ckvdOjmUayppUGZPXalCeaH+dlh/b88= Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-5c4146c7d5dso6413231a12.3 for ; Mon, 23 Sep 2024 17:32:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1727137971; x=1727742771; 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=P7mc2p+2Jck8sDD3ZoIb1R82s20ZBjvKNc7tKmgur9M=; b=MNa/Ry6yTxA8DPXFJdaUxbLCfwcaXE3hCdCpqtwzcfrMvQkEcBKF1DgOHLD7ymBz3U 1WgHJbrrHBp8qKYhW/EgU9UlhG/2LQN0AqOkMiXXeaTyOxzkYuq3yVtLs3AM2fqfziDJ XOfcrgY3bkEqM08E9Xtbtmys3lQSrn7kTDwIeg3jfNeq5IZ/P3gVfl+SDGbKbu7R+3wL YOvqkfbLpua/WjaCsOhokNWEXdFT0dCVNCOC2/12l4wpn5YihEtUst21VZFMHUX5plUe cT7yttx7XJovepf/b4nPChqvEWfwScbDaNoh5ukKm9sFnUGQWHHbt6McWuKzjdTFSMKw JPPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727137971; x=1727742771; 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=P7mc2p+2Jck8sDD3ZoIb1R82s20ZBjvKNc7tKmgur9M=; b=Oq4IvJbmtn/mGVJs6FYtT2Hi2VFIFjqGKrQk4aIC3RT32+VX24ZU2dezN+ZUZ9DfC4 b5lc+BQDjlj1vHbzL0qaVp0JM9dZW1f+NyMgGjH+mngGy5i2LdAQjxwiQA0XprEl2CfD cwje0BpobbQs/qSIY9eG2+PNyyDqdOpYl0TV3ISajbBrNXX0cxF1YibwTkMC69IgLdtT lqUxS9pw9Uz4hZQxruISktXDYCOVkEAn/j25gG2AsLXgHQ9ujXfuCd5aFP1BPNYlXcWp afPn2JwpK+Aamx5qbNOTG/bgSjtVeKeb2fv7MVBxzJBdbLdHizOgqW9+ACKe71cbTyhX bkkQ== X-Forwarded-Encrypted: i=1; AJvYcCUOeDJ+ZB/8FsKbbsqOIwOKtzonvr54pMtKbC65vmAjQSkzQwU1fziiXvvU5cTTPIDRCbi1zs5BJQ==@kvack.org X-Gm-Message-State: AOJu0Yyn5/0sfyP4s9IeoC4jzO+ONs3WUmGaL29NUbZClxDjAZj1I+a8 94vwIEUVIhiBsXEKzv4fef0tiQqO8JsjrvFceFZQnuQGcY4LhTFSt70BGImGjSnMs49aDElBLBh zAsf9fFl+nOp5J69t07K8XoLlmly2EImX/cI1 X-Google-Smtp-Source: AGHT+IFd4kw9b/7lDpmusBy8E04RK0NQNVnjwp3zx4Jo21hSTepyuUd1A7R6O/pR/57fGcI+h3W8VRP01s4zgQkUhcM= X-Received: by 2002:a17:906:d7d0:b0:a8a:926a:cfff with SMTP id a640c23a62f3a-a90d501ad26mr1374564866b.27.1727137970215; Mon, 23 Sep 2024 17:32:50 -0700 (PDT) MIME-Version: 1.0 References: <20240923231142.4155415-1-nphamcs@gmail.com> <20240923231142.4155415-3-nphamcs@gmail.com> In-Reply-To: <20240923231142.4155415-3-nphamcs@gmail.com> From: Yosry Ahmed Date: Mon, 23 Sep 2024 17:32:14 -0700 Message-ID: Subject: Re: [RFC PATCH 2/2] swap: shmem: remove SWAP_MAP_SHMEM To: Nhat Pham Cc: akpm@linux-foundation.org, hannes@cmpxchg.org, hughd@google.com, shakeel.butt@linux.dev, ryan.roberts@arm.com, ying.huang@intel.com, chrisl@kernel.org, david@redhat.com, kasong@tencent.com, willy@infradead.org, viro@zeniv.linux.org.uk, baohua@kernel.org, chengming.zhou@linux.dev, linux-mm@kvack.org, kernel-team@meta.com, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 2A229C0007 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: k44hm3rppo9c8nusgfhamanfoqj9sfsf X-HE-Tag: 1727137971-653282 X-HE-Meta: U2FsdGVkX1/IHkH3ZNYUDOhs6md5mNV6Z64j2g2/qdvbQm5is2q0alUh0PkW8ZGjgVF+sG3VYbU3wbI5mv3MXgko9s1kxxniTCxD3A1aL5dm1TihlJHtqagJbiS5Dl1VlIe1315GBgbblPaHeLtGSPFFgauuoyZCGJRVoK2FKTsBR3yGuZU27FgVFGfntJO1IVfKewZDcfuglhRsNiK6BMfiTjtzdUo1ZK8TgxezQGMA7606KDlU4fllxB1v29jPkaavViZMohhQC0ww/U4eEPPdrF8JV2ymMCIpyjfZ4G2RHne9qQdO2c5IaWmVVsetOmBVTYdThpdhuYjXK/wv/GrlUb5ffRA5rRuHuGMGSFL7LAnSwhbH6JpCL/BjoTLm7/MwCdift972icx6Bh/j0LPHQ1L+GSv353ILJ9dCXhAjRfMb1gH5zGIKAxoEbdxutoyod/3+AqX3ie5cpQBXaEXuZT5TvjNqWTtmyKZDz7hkFddADkRlO2fKTMG/cpvbBwgL6ANf0Hx036QjGr58zruMmyxQfJG20wFyUsElHNuIzMn0jmoyXeIXQWVInqPivrXOojq032b3jguqQYCQKF1fAjJzYDGEqZsLBLo3ZgIXOC8NGKeC3jTna3Sv8JxZzx8/0gFhxcRtrlKxN2buzEbZeErC4P6yrAO/K8dOQJRPp3p/pMNOzcHwtgO3Dh2K5gPOD9CTMqQl6f8XjeXoT7FAqyXwbPX/PAt+6U1aH7arsqKuEadRlA37eMfRCjPkvc/ednKR3+bulnqeMa+VrgjiA7DhrPpn8u9sRbi46FRP0Y1XEZ4cuZvEwZrZVmKFYXOfP5nVzEJK589X3f9ba4qVqoCxeaQmjlr5mbhYXWGVaOTUqP0D0lrf0dRxcEYsqYQPb9DhZ0vkGixcHCj7Jlaqk/aDiBBLggunSs1lSzJcj+fv8V50Z3EMweLDOOVQyJ7+QMm+BQslFlABAgi r1ic3Qxa DQssumq9VCPE7w8+eTHdmSDD8F31vmNZp7Wgx3ak92Qxt7qCMfBI+NQOEzv3c6cvY6kPXuS7Sh470b2Qo9cPsnOEW4/NAcRx4VWlnpIRt2HIcndBIWljqftn29f2n2dY8HrfyMSve05jrhD1ghQ54wkCDIFUdSkXTerktTpphE3RENKxp0UOqoYhYL6nTNS7xLduzgvY9h/wEdVcZHi/VQJ5jvH1CMEGeombSkkOu7nDdnxRUwvo8cECFlfG7M98E45CXBZytOG5uTSs= 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 Mon, Sep 23, 2024 at 4:11=E2=80=AFPM Nhat Pham wrote= : > > The SWAP_MAP_SHMEM state was introduced in the commit aaa468653b4a > ("swap_info: note SWAP_MAP_SHMEM"), to quickly determine if a swap entry > belongs to shmem during swapoff. > > However, swapoff has since been rewritten in the commit b56a2d8af914 > ("mm: rid swapoff of quadratic complexity"). Now having swap count =3D=3D > SWAP_MAP_SHMEM value is basically the same as having swap count =3D=3D 1, > and swap_shmem_alloc() behaves analogously to swap_duplicate(). It's probably useful to point out that swap_shmem_alloc() is equivalent to swap_duplicate() because __swap_duplicate() should never return -ENOMEM for shmem, as we only ever increment the swap count by 1 (for each entry). > > Remove this state and the associated helper to simplify the state > machine (both mentally and in terms of actual code). We will also have > an extra state/special value that can be repurposed (for swap entries > that never gets re-duplicated). > > Signed-off-by: Nhat Pham > --- > include/linux/swap.h | 6 ------ > mm/shmem.c | 2 +- > mm/swapfile.c | 15 --------------- > 3 files changed, 1 insertion(+), 22 deletions(-) > > diff --git a/include/linux/swap.h b/include/linux/swap.h > index e6ab234be7be..017f3c03ff7a 100644 > --- a/include/linux/swap.h > +++ b/include/linux/swap.h > @@ -232,7 +232,6 @@ enum { > /* Special value in first swap_map */ > #define SWAP_MAP_MAX 0x3e /* Max count */ > #define SWAP_MAP_BAD 0x3f /* Note page is bad */ > -#define SWAP_MAP_SHMEM 0xbf /* Owned by shmem/tmpfs */ > > /* Special value in each swap_map continuation */ > #define SWAP_CONT_MAX 0x7f /* Max count */ > @@ -482,7 +481,6 @@ 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_nr(swp_entry_t, int); > extern int swapcache_prepare(swp_entry_t entry, int nr); > extern void swap_free_nr(swp_entry_t entry, int nr_pages); > @@ -549,10 +547,6 @@ static inline int add_swap_count_continuation(swp_en= try_t swp, gfp_t gfp_mask) > return 0; > } > > -static inline void swap_shmem_alloc(swp_entry_t swp, int nr) > -{ > -} > - > static inline int swap_duplicate_nr(swp_entry_t swp, int nr) > { > return 0; > diff --git a/mm/shmem.c b/mm/shmem.c > index 361affdf3990..1875f2521dc6 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -1559,7 +1559,7 @@ static int shmem_writepage(struct page *page, struc= t writeback_control *wbc) > __GFP_HIGH | __GFP_NOMEMALLOC | __GFP_NOWARN, > NULL) =3D=3D 0) { > shmem_recalc_inode(inode, 0, nr_pages); > - swap_shmem_alloc(swap, nr_pages); > + swap_duplicate_nr(swap, nr_pages); > shmem_delete_from_page_cache(folio, swp_to_radix_entry(sw= ap)); > > mutex_unlock(&shmem_swaplist_mutex); > diff --git a/mm/swapfile.c b/mm/swapfile.c > index 47a2cd5f590d..cebc244ee60f 100644 > --- a/mm/swapfile.c > +++ b/mm/swapfile.c > @@ -1381,12 +1381,6 @@ static unsigned char __swap_entry_free_locked(stru= ct swap_info_struct *si, > if (usage =3D=3D SWAP_HAS_CACHE) { > VM_BUG_ON(!has_cache); > has_cache =3D 0; > - } else if (count =3D=3D SWAP_MAP_SHMEM) { > - /* > - * Or we could insist on shmem.c using a special > - * swap_shmem_free() and free_shmem_swap_and_cache()... > - */ > - count =3D 0; > } else if ((count & ~COUNT_CONTINUED) <=3D SWAP_MAP_MAX) { > if (count =3D=3D COUNT_CONTINUED) { > if (swap_count_continued(si, offset, count)) > @@ -3686,15 +3680,6 @@ static int __swap_duplicate(swp_entry_t entry, uns= igned char usage, int nr) > return err; > } > > -/* > - * Help swapoff by noting that swap entry belongs to shmem/tmpfs > - * (in which case its reference count is never incremented). > - */ > -void swap_shmem_alloc(swp_entry_t entry, int nr) > -{ > - __swap_duplicate(entry, SWAP_MAP_SHMEM, nr); > -} > - > /** > * swap_duplicate_nr() - Increase reference count of nr contiguous swap = entries > * by 1. > -- > 2.43.5