[PATCH v2 07/10] ceph: remove page remnants from write_folio_nounlock()
Tal Zussman <[email protected]> Tue, 04 Aug 2026 14:52:15 -0400
| Newsgroups | gmane.linux.file-systems,gmane.comp.file-systems.ceph.devel,gmane.linux.kernel,gmane.linux.kernel.mm |
|---|---|
| Message-ID | <20260804-remove-wait-on-page-writeback-v2-7-81f0ab065284@columbia.edu> |
Use ceph_folio_start_fscache() and only use a struct page pointer at the osd_req_op_extent_osd_data_pages() boundary, which requires a page array. This removes a call to compound_head() in ceph_set_page_fscache(). This was the last user of ceph_set_page_fscache(), so remove it. Signed-off-by: Tal Zussman <[email protected]> --- fs/ceph/addr.c | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index a96986c503bf..59e559bdfdff 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -558,11 +558,6 @@ static void ceph_folio_start_fscache(struct folio *folio) folio_start_private_2(folio); /* [DEPRECATED] */ } -static void ceph_set_page_fscache(struct page *page) -{ - folio_start_private_2(page_folio(page)); /* [DEPRECATED] */ -} - static void ceph_fscache_write_terminated(void *priv, ssize_t error) { struct inode *inode = priv; @@ -584,10 +579,6 @@ static inline void ceph_folio_start_fscache(struct folio *folio) { } -static inline void ceph_set_page_fscache(struct page *page) -{ -} - static inline void ceph_fscache_write_to_cache(struct inode *inode, u64 off, u64 len, bool caching) { } @@ -734,7 +725,7 @@ static u64 get_writepages_data_length(struct inode *inode, static int write_folio_nounlock(struct folio *folio, struct writeback_control *wbc) { - struct page *page = &folio->page; + struct page *page; struct inode *inode = folio->mapping->host; struct ceph_inode_info *ci = ceph_inode(inode); struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode); @@ -813,7 +804,7 @@ static int write_folio_nounlock(struct folio *folio, folio_start_writeback(folio); if (caching) - ceph_set_page_fscache(&folio->page); + ceph_folio_start_fscache(folio); ceph_fscache_write_to_cache(inode, page_off, len, caching); if (IS_ENCRYPTED(inode)) { @@ -833,9 +824,8 @@ static int write_folio_nounlock(struct folio *folio, /* it may be a short write due to an object boundary */ WARN_ON_ONCE(len > folio_size(folio)); - osd_req_op_extent_osd_data_pages(req, 0, - bounce_page ? &bounce_page : &page, wlen, 0, - false, false); + page = bounce_page ? bounce_page : &folio->page; + osd_req_op_extent_osd_data_pages(req, 0, &page, wlen, 0, false, false); doutc(cl, "%llx.%llx %llu~%llu (%llu bytes, %sencrypted)\n", ceph_vinop(inode), page_off, len, wlen, IS_ENCRYPTED(inode) ? "" : "not "); -- 2.39.5