[PATCH 4/4] ceph: remove page_snap_context()
From: Tal Zussman
Date: Sun Aug 02 2026 - 12:59:17 EST
Convert the final caller in get_writepages_data_length() to use a folio
and ceph_folio_snap_context(), then remove page_snap_context().
This drops the last open-coded use of page->private in ceph's writeback
path.
Signed-off-by: Tal Zussman <tz2294@xxxxxxxxxxxx>
---
fs/ceph/addr.c | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
index f4aaf9a5f196..702cf5fc1eab 100644
--- a/fs/ceph/addr.c
+++ b/fs/ceph/addr.c
@@ -29,9 +29,9 @@
*
* There are a few funny things going on here.
*
- * The page->private field is used to reference a struct
- * ceph_snap_context for _every_ dirty page. This indicates which
- * snapshot the page was logically dirtied in, and thus which snap
+ * The folio->private field is used to reference a struct
+ * ceph_snap_context for _every_ dirty folio. This indicates which
+ * snapshot the folio was logically dirtied in, and thus which snap
* context needs to be associated with the osd write during writeback.
*
* Similarly, struct ceph_inode_info maintains a set of counters to
@@ -68,13 +68,6 @@
static int ceph_netfs_check_write_begin(struct file *file, loff_t pos, unsigned int len,
struct folio **foliop, void **_fsdata);
-static inline struct ceph_snap_context *page_snap_context(struct page *page)
-{
- if (PagePrivate(page))
- return (void *)page->private;
- return NULL;
-}
-
static inline struct ceph_snap_context *ceph_folio_snap_context(struct folio *folio)
{
if (folio_test_private(folio))
@@ -697,7 +690,7 @@ static u64 get_writepages_data_length(struct inode *inode,
u64 end = i_size_read(inode);
u64 ret;
- snapc = page_snap_context(ceph_fscrypt_pagecache_page(page));
+ snapc = ceph_folio_snap_context(page_folio(ceph_fscrypt_pagecache_page(page)));
if (snapc != ci->i_head_snapc) {
bool found = false;
spin_lock(&ci->i_ceph_lock);
--
2.39.5