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 --- 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 a3324da08123..ddb12fccdcff 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_folio_wait_fscache(struct folio *folio) { folio_wait_private_2(folio); /* [DEPRECATED] */ @@ -589,10 +584,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_folio_wait_fscache(struct folio *folio) { } @@ -743,7 +734,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); @@ -825,7 +816,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)) { @@ -845,9 +836,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