@@ -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) \
@@ -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();
@@ -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;
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) <willy@infradead.org> --- include/linux/page-flags.h | 2 +- mm/filemap.c | 2 +- mm/page-writeback.c | 18 +++++++++--------- 3 files changed, 11 insertions(+), 11 deletions(-)