From: Kairui Song <ryncsn@gmail.com>
To: linux-mm@kvack.org
Cc: Andrew Morton <akpm@linux-foundation.org>,
"Huang, Ying" <ying.huang@intel.com>,
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,
Kairui Song <kasong@tencent.com>
Subject: [PATCH v2 6/8] mm/swap: get the swap file offset directly
Date: Wed, 24 Apr 2024 01:03:37 +0800 [thread overview]
Message-ID: <20240423170339.54131-7-ryncsn@gmail.com> (raw)
In-Reply-To: <20240423170339.54131-1-ryncsn@gmail.com>
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.
Need to include swapops.h in mm/swap.h to ensure swp_offset is always
defined before use.
Signed-off-by: Kairui Song <kasong@tencent.com>
---
mm/page_io.c | 6 +++---
mm/swap.h | 9 +++++++++
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/mm/page_io.c b/mm/page_io.c
index ae2b49055e43..615812cfe4ca 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_dev_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_dev_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_dev_pos(folio->swap);
if (plug)
sio = *plug;
diff --git a/mm/swap.h b/mm/swap.h
index fc2f6ade7f80..82023ab93205 100644
--- a/mm/swap.h
+++ b/mm/swap.h
@@ -5,6 +5,7 @@
struct mempolicy;
#ifdef CONFIG_SWAP
+#include <linux/swapops.h> /* for swp_offset */
#include <linux/blk_types.h> /* for bio_end_io_t */
/* linux/mm/page_io.c */
@@ -31,6 +32,14 @@ extern struct address_space *swapper_spaces[];
(&swapper_spaces[swp_type(entry)][swp_offset(entry) \
>> SWAP_ADDRESS_SPACE_SHIFT])
+/*
+ * Return the swap device position of the swap entry.
+ */
+static inline loff_t swap_dev_pos(swp_entry_t entry)
+{
+ return ((loff_t)swp_offset(entry)) << PAGE_SHIFT;
+}
+
void show_swap_cache_info(void);
bool add_to_swap(struct folio *folio);
void *get_shadow_from_swap_cache(swp_entry_t entry);
--
2.44.0
next prev parent reply other threads:[~2024-04-23 17:04 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-23 17:03 [PATCH v2 0/8] mm/swap: optimize swap cache search space Kairui Song
2024-04-23 17:03 ` [PATCH v2 1/8] NFS: remove nfs_page_lengthg and usage of page_index Kairui Song
2024-04-23 17:03 ` [PATCH v2 2/8] nilfs2: drop " Kairui Song
2024-04-23 18:48 ` Ryusuke Konishi
2024-04-24 1:57 ` Kairui Song
2024-04-23 17:03 ` [PATCH v2 3/8] f2fs: " Kairui Song
2024-04-23 17:03 ` [f2fs-dev] " Kairui Song
2024-04-23 22:58 ` Matthew Wilcox
2024-04-23 22:58 ` [f2fs-dev] " Matthew Wilcox
2024-04-28 3:17 ` Chao Yu
2024-04-28 3:17 ` [f2fs-dev] " Chao Yu
2024-04-23 17:03 ` [PATCH v2 4/8] ceph: " Kairui Song
2024-04-24 0:03 ` Xiubo Li
2024-04-23 17:03 ` [PATCH v2 5/8] cifs: drop usage of page_file_offset Kairui Song
2024-04-23 17:03 ` Kairui Song [this message]
2024-04-23 17:03 ` [PATCH v2 7/8] mm: drop page_index/page_file_offset and convert swap helpers to use folio Kairui Song
2024-04-24 2:17 ` Huang, Ying
2024-04-24 2:56 ` Kairui Song
2024-04-24 4:05 ` Matthew Wilcox
2024-04-24 6:45 ` Huang, Ying
2024-04-24 8:48 ` Kairui Song
2024-04-23 17:03 ` [PATCH v2 8/8] mm/swap: reduce swap cache search space Kairui Song
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=20240423170339.54131-7-ryncsn@gmail.com \
--to=ryncsn@gmail.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=v-songbaohua@oppo.com \
--cc=willy@infradead.org \
--cc=ying.huang@intel.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.