The one caller of test_clear_page_writeback() already has a folio, so make
it clear that test_clear_page_writeback() operates on the entire folio.

Signed-off-by: Matthew Wilcox (Oracle) <wi...@infradead.org>
---
 include/linux/page-flags.h |  2 +-
 mm/filemap.c               |  2 +-
 mm/page-writeback.c        | 18 +++++++++---------
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index 90381858d901..01aa4a71bf14 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -594,7 +594,7 @@ static __always_inline void SetPageUptodate(struct page 
*page)
 
 CLEARPAGEFLAG(Uptodate, uptodate, PF_NO_TAIL)
 
-int test_clear_page_writeback(struct page *page);
+int test_clear_folio_writeback(struct folio *folio);
 int __test_set_page_writeback(struct page *page, bool keep_write);
 
 #define test_set_page_writeback(page)                  \
diff --git a/mm/filemap.c b/mm/filemap.c
index 906b29c3e1fb..a00030b2ef71 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1463,7 +1463,7 @@ void end_folio_writeback(struct folio *folio)
         * reused before the wake_up_folio().
         */
        get_folio(folio);
-       if (!test_clear_page_writeback(&folio->page))
+       if (!test_clear_folio_writeback(folio))
                BUG();
 
        smp_mb__after_atomic();
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 908fc7f60ae7..db8a99e4a3d2 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -2719,24 +2719,24 @@ int clear_page_dirty_for_io(struct page *page)
 }
 EXPORT_SYMBOL(clear_page_dirty_for_io);
 
-int test_clear_page_writeback(struct page *page)
+int test_clear_folio_writeback(struct folio *folio)
 {
-       struct address_space *mapping = page_mapping(page);
+       struct address_space *mapping = folio_mapping(folio);
        struct mem_cgroup *memcg;
        struct lruvec *lruvec;
        int ret;
 
-       memcg = lock_page_memcg(page);
-       lruvec = mem_cgroup_page_lruvec(page, page_pgdat(page));
+       memcg = lock_folio_memcg(folio);
+       lruvec = mem_cgroup_folio_lruvec(folio, folio_pgdat(folio));
        if (mapping && mapping_use_writeback_tags(mapping)) {
                struct inode *inode = mapping->host;
                struct backing_dev_info *bdi = inode_to_bdi(inode);
                unsigned long flags;
 
                xa_lock_irqsave(&mapping->i_pages, flags);
-               ret = TestClearPageWriteback(page);
+               ret = TestClearFolioWriteback(folio);
                if (ret) {
-                       __xa_clear_mark(&mapping->i_pages, page_index(page),
+                       __xa_clear_mark(&mapping->i_pages, folio_index(folio),
                                                PAGECACHE_TAG_WRITEBACK);
                        if (bdi->capabilities & BDI_CAP_WRITEBACK_ACCT) {
                                struct bdi_writeback *wb = inode_to_wb(inode);
@@ -2752,12 +2752,12 @@ int test_clear_page_writeback(struct page *page)
 
                xa_unlock_irqrestore(&mapping->i_pages, flags);
        } else {
-               ret = TestClearPageWriteback(page);
+               ret = TestClearFolioWriteback(folio);
        }
        if (ret) {
                dec_lruvec_state(lruvec, NR_WRITEBACK);
-               dec_zone_page_state(page, NR_ZONE_WRITE_PENDING);
-               inc_node_page_state(page, NR_WRITTEN);
+               dec_zone_folio_stat(folio, NR_ZONE_WRITE_PENDING);
+               inc_node_folio_stat(folio, NR_WRITTEN);
        }
        __unlock_page_memcg(memcg);
        return ret;
-- 
2.29.2

Reply via email to