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 AE464C4345F for ; Thu, 18 Apr 2024 01:55:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2B5226B008C; Wed, 17 Apr 2024 21:55:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 266876B0092; Wed, 17 Apr 2024 21:55:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 12D236B0093; Wed, 17 Apr 2024 21:55:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id E8BD66B008C for ; Wed, 17 Apr 2024 21:55:42 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 96D5A1C1563 for ; Thu, 18 Apr 2024 01:55:42 +0000 (UTC) X-FDA: 82020986124.04.EF676B7 Received: from mail-ua1-f47.google.com (mail-ua1-f47.google.com [209.85.222.47]) by imf11.hostedemail.com (Postfix) with ESMTP id D8CC54000D for ; Thu, 18 Apr 2024 01:55:40 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Dpeio1LK; spf=pass (imf11.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.47 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713405340; a=rsa-sha256; cv=none; b=cxOGrry7vDO7FCzTVCDrOEH/YqRoOAcQZ7fyEb2EjWbklWdh+uPh561VkGKE082L1plxIt PVf/NLArSqMcAt7lKE0SchtsWPyjlrNlr0bvy+nE95nlqeXnpkfdiUSWtau7xpH+Lc7jna NoTUhnPryC2c1V0I7ZlWIBdpqt//fy4= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Dpeio1LK; spf=pass (imf11.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.47 as permitted sender) smtp.mailfrom=21cnbao@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=1713405340; 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=KIYxpCpWndb+Pn1g+UhMaTaHQTt+klHl035PGII/Rmc=; b=BRWb2m7QRlOUioppKNqrM75ru3/7gRfpBdRPabMYkTUFsozEtcR98pEb3TaFko9iukPYAi mhleq3yUXPU+Zd6HQrILTKTzSZT8qZdmVYfhy3dLzkAB3uIPbtZGMz16qme5gRmDcCPCmh QLEsfOT57Z6LTLsdLgVf4nbc5bx7jiE= Received: by mail-ua1-f47.google.com with SMTP id a1e0cc1a2514c-7e7bd3e7d0aso84845241.1 for ; Wed, 17 Apr 2024 18:55:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713405340; x=1714010140; 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=KIYxpCpWndb+Pn1g+UhMaTaHQTt+klHl035PGII/Rmc=; b=Dpeio1LKXKBloyqgfvMLePVwO19LtzON8P0h0XRvBFNjBLkogeaMNPAtVikKt5Eh9U QdOvR0aijL0fJDQ4IeyNo6+sea3X2fqobHc5Cv5Jq76Uci242XzegVPX+WxB/PyarPM7 2GlSoBO2cRQNoqBv36+6flCUJsfZK5Q5na/gXRk0Mo7GQue15F0PffxhmU9G5QW203rC nY+pft4bDtPr/lPU5hrz8TGPeFvepLISu02XT0qwGDsL3BDCllsZOa+abwY+oK1dDlt8 xw1FElF2hekRcRPHrP9oA3AGLPalktFZuCVz8N6m3jA70uHgFvZ020FELaMkYuFSxd52 UBwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713405340; x=1714010140; 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=KIYxpCpWndb+Pn1g+UhMaTaHQTt+klHl035PGII/Rmc=; b=A/FmK604bjNU9N2OXHO9YSF6mrjemxPwN5lu9ZSLp4FtLx7TOsEAkCIse6Kh9IsSg0 m0H/pytRc+ARjqxQhHoYhqYHp8cee35MD0uswylOjjxF6surQsWSE0cBOXHqcbLw7HRA e/Bz/shFti9C0IYUBt4h1nVN+vBsn5SBJi+9TUa68Wd4RfwAlMzmqmYeuMLdxXCWSbYd f2p9kigcMtAFzyeDPCZ6uehHex236Ku/dix7sG8nWpj+2ZiWDv7uq3orFchJk9MZ0oVN wP4TAKRbmF912IVH3/3zj7bF4JyC4FSI8Gx9mQq6enJITqHXZ88SoFhXhSTEfahQMfMB KC3Q== X-Gm-Message-State: AOJu0YxB9r64Kk+HzYxBYd1d8CBlqXcqYQVysz01R/Ci1GJIHFVG4Bch gwkgqFoIABK7cR+bWy4PVhnBcAlP8RTYpYr4IIAIfqgdnY8/fWCxDvY7KePyGEvkpEItGRtkr+m uWP7BDqU7ghYeFpRoefsam94y4Us= X-Google-Smtp-Source: AGHT+IE6dnCdtVOBvrZIQgJeetrTOkmNikKKZNS/HrJ5ENx/2u35PFSzGZXfhIru9eFLL+J2uUz9TNYElyrTBjswBCg= X-Received: by 2002:a05:6122:c9b:b0:4d3:34b1:7211 with SMTP id ba27-20020a0561220c9b00b004d334b17211mr1612766vkb.3.1713405339781; Wed, 17 Apr 2024 18:55:39 -0700 (PDT) MIME-Version: 1.0 References: <20240417160842.76665-1-ryncsn@gmail.com> <20240417160842.76665-8-ryncsn@gmail.com> In-Reply-To: <20240417160842.76665-8-ryncsn@gmail.com> From: Barry Song <21cnbao@gmail.com> Date: Thu, 18 Apr 2024 13:55:28 +1200 Message-ID: Subject: Re: [PATCH 7/8] mm: drop page_index/page_file_offset and convert swap helpers to use folio To: Kairui Song Cc: linux-mm@kvack.org, Andrew Morton , "Huang, Ying" , Matthew Wilcox , Chris Li , Barry Song , Ryan Roberts , Neil Brown , Minchan Kim , Hugh Dickins , David Hildenbrand , Yosry Ahmed , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: D8CC54000D X-Stat-Signature: 5nezycit8i5iq1xuimwg9hbf16gr6t1f X-Rspam-User: X-HE-Tag: 1713405340-897192 X-HE-Meta: U2FsdGVkX1+OXLAe1JzswupgVi9lJEDYNyOLlX2uIHJkmmw5ThSFkgYxgOQCR3vMGPDFVhxVY6xtsfaSuqAS4114LeQMsrwbl/qx/tUimOGVmaFCMupxN1EHTWn73JUFVikpPtw/fRV9zTWFbVe2c4QPmuTADoRoDO/kfnTkzd8E+hzDejrdf9mKsr6AmmkuQ8cQWO6MKa+GDyTs/xzTl+bLBiM+EenZjteKiuTIsEKjSbu6Ut8VCIuhWQV5XJpacjZ111hoVTs+4myIakvXCWRDNyIOMTygybi3R9WnWpXcJeOXm3zpEQuU36Ukf+QGTfG00ZtpkD7CKVG++hs5SV4LQ1nZDKFUOp/KNEeZTvczH4R2O/eJzWPWFJNQq0diBLkm/IWHJdVtY1Dr++PZTpiRQ2kWwohb0UVtx/+we317tRJfl2llt1/jHP2svW+GZ0NpqjBsSvDtHNG9B5+X3oPsaCAZbetjgGo15cl6K2tvxcGNXtaS9R/m5hmlbkvShCfgIn2XSouPuKpJuBvFXrpVAsH9ic2LTZFJTUV/aQdHfzaSs561I1jNxB3Mje5uNSKl95sNtrth0IHRxNETOfznPNOM5/mkCH8IqEco5ml6Yg7Vx2M4Uw0/0o9kJZgUTtmHuGkPgIRMCO3LLa77c7h7wTrZtR0MLpYl+6Cukewv6yV7MLctafZarQXype+i4qu6CRQY1TQE0LrmiExWM/xkOcNRvyRGyHWWwsrZvMgzwwPH6hURro5Lqa04KqMbJUsK4DCl7+Tz4YUr6EQcXNkerCYYKLxoyBuvNRua0ZQLvTBGV/osog6wQ7I7xovdhqMFVjjC2I76UAMelc6xxuIuc3ZwKYOQPs4F1b1awJ3lqzaWVUV3/R//Xx3msme/sZXHklaD0BhlBWJ1f43Oz+dFeOdmfPtkiPJ311LOSaGZHfScrNHhRbLAMrKvxAlThOLWckEJwL2bE0MZSkd JLdu2yCO oE2KRhe7YsgK1cuioo6GXO5r4TMFuIo5OPeyRHbZf+tXzt9vBd+MXvQP4zO6v2s78GMNqu/55MQWPWRiLD3EL/NOO9vkUiOh1WWXIM3WJqjv+BcNkGQ+eT3ndTpFcbq2cP2RZXepDnlEqHnpV6UP5N4JRQCq083+7s1FZjOhMZcex5wXLnG+hhGmUDPhbxofdN7uMup0gT11DT/59ozSj8K17TdiHx57J1awux7YypyDqsbIhzBi9nRsF+B7FDZ5flBTc+ttMplNWL4+5CYAd24quatyoEv8o5iCeqk+w8EBHg7PIKGaJkqnvdhzNbGgzpxDrBEBZHv4sPEK/SiQQbdJuqX+rU91mCjyxD/AwUYdIP+mS49Q9fTAnQagY6pP8eumdgQ6xIU8Thx4BRW2SrU8KQXWGV7ptu6MrgE3dR6CC5egQ61ZDlvxpKHsC+oidegZjo9TuODHWR35idftQ76brcqDKcrA6kpqenxDjjQFQIas= 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 Thu, Apr 18, 2024 at 4:12=E2=80=AFAM Kairui Song wrot= e: > > From: Kairui Song > > When applied on swap cache pages, page_index / page_file_offset was used > to retrieve the swap cache index or swap file offset of a page, and they > have their folio equivalence version: folio_index / folio_file_pos. > > We have eliminated all users for page_index / page_file_offset, everythin= g > is using folio_index / folio_file_pos now, so remove the old helpers. > > Then convert the implementation of folio_index / folio_file_pos to > to use folio natively. > > After this commit, all users that might encounter mixed usage of swap > cache and page cache will only use following two helpers: > > folio_index (calls __folio_swap_cache_index) > folio_file_pos (calls __folio_swap_file_pos) > > The offset in swap file and index in swap cache is still basically the > same thing at this moment, but will be different in following commits. > > Signed-off-by: Kairui Song Hi Kairui, thanks ! I also find it rather odd that folio_file_page() is utilized for both swp and file. mm/memory.c <> page =3D folio_file_page(folio, swp_offset(entry)); mm/swap_state.c <> return folio_file_page(folio, swp_offset(entry)); mm/swapfile.c <> page =3D folio_file_page(folio, swp_offset(entry)); Do you believe it's worthwhile to tidy up? > --- > include/linux/mm.h | 13 ------------- > include/linux/pagemap.h | 19 +++++++++---------- > mm/swapfile.c | 13 +++++++++---- > 3 files changed, 18 insertions(+), 27 deletions(-) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 0436b919f1c7..797480e76c9c 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -2245,19 +2245,6 @@ static inline void *folio_address(const struct fol= io *folio) > return page_address(&folio->page); > } > > -extern pgoff_t __page_file_index(struct page *page); > - > -/* > - * Return the pagecache index of the passed page. Regular pagecache pag= es > - * use ->index whereas swapcache pages use swp_offset(->private) > - */ > -static inline pgoff_t page_index(struct page *page) > -{ > - if (unlikely(PageSwapCache(page))) > - return __page_file_index(page); > - return page->index; > -} > - > /* > * Return true only if the page has been allocated with > * ALLOC_NO_WATERMARKS and the low watermark was not > diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h > index 2df35e65557d..313f3144406e 100644 > --- a/include/linux/pagemap.h > +++ b/include/linux/pagemap.h > @@ -780,7 +780,7 @@ static inline struct page *grab_cache_page_nowait(str= uct address_space *mapping, > mapping_gfp_mask(mapping)); > } > > -#define swapcache_index(folio) __page_file_index(&(folio)->page) > +extern pgoff_t __folio_swap_cache_index(struct folio *folio); > > /** > * folio_index - File index of a folio. > @@ -795,9 +795,9 @@ static inline struct page *grab_cache_page_nowait(str= uct address_space *mapping, > */ > static inline pgoff_t folio_index(struct folio *folio) > { > - if (unlikely(folio_test_swapcache(folio))) > - return swapcache_index(folio); > - return folio->index; > + if (unlikely(folio_test_swapcache(folio))) > + return __folio_swap_cache_index(folio); > + return folio->index; > } > > /** > @@ -920,11 +920,6 @@ static inline loff_t page_offset(struct page *page) > return ((loff_t)page->index) << PAGE_SHIFT; > } > > -static inline loff_t page_file_offset(struct page *page) > -{ > - return ((loff_t)page_index(page)) << PAGE_SHIFT; > -} > - > /** > * folio_pos - Returns the byte position of this folio in its file. > * @folio: The folio. > @@ -934,6 +929,8 @@ static inline loff_t folio_pos(struct folio *folio) > return page_offset(&folio->page); > } > > +extern loff_t __folio_swap_file_pos(struct folio *folio); > + > /** > * folio_file_pos - Returns the byte position of this folio in its file. > * @folio: The folio. > @@ -943,7 +940,9 @@ static inline loff_t folio_pos(struct folio *folio) > */ > static inline loff_t folio_file_pos(struct folio *folio) > { > - return page_file_offset(&folio->page); > + if (unlikely(folio_test_swapcache(folio))) > + return __folio_swap_file_pos(folio); > + return ((loff_t)folio->index << PAGE_SHIFT); > } > > /* > diff --git a/mm/swapfile.c b/mm/swapfile.c > index 4919423cce76..0c36a5c2400f 100644 > --- a/mm/swapfile.c > +++ b/mm/swapfile.c > @@ -3419,12 +3419,17 @@ struct address_space *swapcache_mapping(struct fo= lio *folio) > } > EXPORT_SYMBOL_GPL(swapcache_mapping); > > -pgoff_t __page_file_index(struct page *page) > +pgoff_t __folio_swap_cache_index(struct folio *folio) > { > - swp_entry_t swap =3D page_swap_entry(page); > - return swp_offset(swap); > + return swp_offset(folio->swap); > } > -EXPORT_SYMBOL_GPL(__page_file_index); > +EXPORT_SYMBOL_GPL(__folio_swap_cache_index); > + > +loff_t __folio_swap_file_pos(struct folio *folio) > +{ > + return swap_file_pos(folio->swap); > +} > +EXPORT_SYMBOL_GPL(__folio_swap_file_pos); > > /* > * add_swap_count_continuation - called when a swap count is duplicated > -- > 2.44.0 > Thanks Barry