From: "Huang, Ying" <ying.huang@intel.com>
To: Kairui Song <ryncsn@gmail.com>
Cc: linux-mm@kvack.org, Kairui Song <kasong@tencent.com>,
Andrew Morton <akpm@linux-foundation.org>,
Matthew Wilcox <willy@infradead.org>,
Chris Li <chrisl@kernel.org>,
Barry Song <v-songbaohua@oppo.com>,
Ryan Roberts <ryan.roberts@arm.com>, Neil Brown <neilb@suse.de>,
Minchan Kim <minchan@kernel.org>,
Hugh Dickins <hughd@google.com>,
David Hildenbrand <david@redhat.com>,
Yosry Ahmed <yosryahmed@google.com>,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 6/8] mm/swap: get the swap file offset directly
Date: Tue, 23 Apr 2024 09:41:17 +0800 [thread overview]
Message-ID: <87mspkx3cy.fsf@yhuang6-desk2.ccr.corp.intel.com> (raw)
In-Reply-To: <20240417160842.76665-7-ryncsn@gmail.com> (Kairui Song's message of "Thu, 18 Apr 2024 00:08:40 +0800")
Kairui Song <ryncsn@gmail.com> writes:
> From: Kairui Song <kasong@tencent.com>
>
> folio_file_pos and page_file_offset are for mixed usage of swap cache
> and page cache, it can't be page cache here, so introduce a new helper
> to get the swap offset in swap file directly.
>
> Signed-off-by: Kairui Song <kasong@tencent.com>
> ---
> mm/page_io.c | 6 +++---
> mm/swap.h | 5 +++++
> 2 files changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/mm/page_io.c b/mm/page_io.c
> index ae2b49055e43..93de5aadb438 100644
> --- a/mm/page_io.c
> +++ b/mm/page_io.c
> @@ -279,7 +279,7 @@ static void sio_write_complete(struct kiocb *iocb, long ret)
> * be temporary.
> */
> pr_err_ratelimited("Write error %ld on dio swapfile (%llu)\n",
> - ret, page_file_offset(page));
> + ret, swap_file_pos(page_swap_entry(page)));
> for (p = 0; p < sio->pages; p++) {
> page = sio->bvec[p].bv_page;
> set_page_dirty(page);
> @@ -298,7 +298,7 @@ static void swap_writepage_fs(struct folio *folio, struct writeback_control *wbc
> struct swap_iocb *sio = NULL;
> struct swap_info_struct *sis = swp_swap_info(folio->swap);
> struct file *swap_file = sis->swap_file;
> - loff_t pos = folio_file_pos(folio);
> + loff_t pos = swap_file_pos(folio->swap);
>
> count_swpout_vm_event(folio);
> folio_start_writeback(folio);
> @@ -429,7 +429,7 @@ static void swap_read_folio_fs(struct folio *folio, struct swap_iocb **plug)
> {
> struct swap_info_struct *sis = swp_swap_info(folio->swap);
> struct swap_iocb *sio = NULL;
> - loff_t pos = folio_file_pos(folio);
> + loff_t pos = swap_file_pos(folio->swap);
>
> if (plug)
> sio = *plug;
> diff --git a/mm/swap.h b/mm/swap.h
> index fc2f6ade7f80..2de83729aaa8 100644
> --- a/mm/swap.h
> +++ b/mm/swap.h
> @@ -7,6 +7,11 @@ struct mempolicy;
> #ifdef CONFIG_SWAP
> #include <linux/blk_types.h> /* for bio_end_io_t */
>
> +static inline loff_t swap_file_pos(swp_entry_t entry)
> +{
> + return ((loff_t)swp_offset(entry)) << PAGE_SHIFT;
> +}
> +
> /* linux/mm/page_io.c */
> int sio_pool_init(void);
> struct swap_iocb;
I feel that the file concept for swap is kind of confusing. From the
file cache point of view, one "struct address space" conresponds to one
file. If so, we have a simple file system on a swap device (block
device backed or file backed), where the size of each file is 64M. The
swap entry encode the file system (swap_type), the file name
(swap_offset >> SWAP_ADDRESS_SPACE_SHIFT), and the offset in file (lower
bits of swap_offset).
If the above definition is good, it's better to rename swap_file_pos()
to swap_dev_pos(), because it returns the swap device position of the
swap entry.
And, when we reaches consensus on the swap file related concept, we may
document it somewhere and review all naming in swap code to cleanup.
--
Best Regards,
Huang, Ying
next prev parent reply other threads:[~2024-04-23 1:43 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-17 16:08 [PATCH 0/8] mm/swap: optimize swap cache search space Kairui Song
2024-04-17 16:08 ` [PATCH 1/8] NFS: remove nfs_page_lengthg and usage of page_index Kairui Song
2024-04-17 16:08 ` [PATCH 2/8] nilfs2: drop " Kairui Song
2024-04-17 16:14 ` Matthew Wilcox
2024-04-18 2:42 ` Kairui Song
2024-04-17 16:08 ` [PATCH 3/8] f2fs: " Kairui Song
2024-04-17 16:08 ` [PATCH 4/8] ceph: " Kairui Song
2024-04-18 0:28 ` Xiubo Li
2024-04-18 1:30 ` Matthew Wilcox
2024-04-18 1:40 ` Xiubo Li
2024-04-22 15:34 ` Kairui Song
2024-04-17 16:08 ` [PATCH 5/8] cifs: drop usage of page_file_offset Kairui Song
2024-04-17 16:25 ` Matthew Wilcox
2024-04-17 16:08 ` [PATCH 6/8] mm/swap: get the swap file offset directly Kairui Song
2024-04-18 18:43 ` kernel test robot
2024-04-23 1:41 ` Huang, Ying [this message]
2024-04-23 13:33 ` Kairui Song
2024-04-17 16:08 ` [PATCH 7/8] mm: drop page_index/page_file_offset and convert swap helpers to use folio Kairui Song
2024-04-18 1:55 ` Barry Song
2024-04-18 2:42 ` Kairui Song
2024-04-18 10:19 ` Barry Song
2024-04-18 3:30 ` Matthew Wilcox
2024-04-18 3:55 ` Barry Song
2024-04-17 16:08 ` [PATCH 8/8] mm/swap: reduce swap cache search space Kairui Song
2024-04-18 18:21 ` kernel test robot
2024-04-18 18:21 ` kernel test robot
2024-04-22 7:54 ` [PATCH 0/8] mm/swap: optimize " Huang, Ying
2024-04-22 15:20 ` Kairui Song
2024-04-23 1:29 ` Huang, Ying
2024-04-23 3:20 ` Matthew Wilcox
2024-04-24 2:24 ` Huang, Ying
2024-04-26 23:16 ` Chris Li
2024-04-28 1:14 ` Huang, Ying
2024-04-28 2:43 ` Chris Li
2024-04-28 3:21 ` Huang, Ying
2024-04-28 17:26 ` Chris Li
2024-04-28 17:37 ` Kairui Song
2024-04-28 17:45 ` Kairui Song
2024-04-29 5:50 ` Chris Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87mspkx3cy.fsf@yhuang6-desk2.ccr.corp.intel.com \
--to=ying.huang@intel.com \
--cc=akpm@linux-foundation.org \
--cc=chrisl@kernel.org \
--cc=david@redhat.com \
--cc=hughd@google.com \
--cc=kasong@tencent.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=minchan@kernel.org \
--cc=neilb@suse.de \
--cc=ryan.roberts@arm.com \
--cc=ryncsn@gmail.com \
--cc=v-songbaohua@oppo.com \
--cc=willy@infradead.org \
--cc=yosryahmed@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox