]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mm: remove BDI_CAP_WRITEBACK_ACCT
authorJoanne Koong <joannelkoong@gmail.com>
Mon, 7 Jul 2025 23:46:06 +0000 (16:46 -0700)
committerMiklos Szeredi <mszeredi@redhat.com>
Wed, 27 Aug 2025 12:29:43 +0000 (14:29 +0200)
There are no users of BDI_CAP_WRITEBACK_ACCT now that fuse doesn't do
its own writeback accounting. This commit removes
BDI_CAP_WRITEBACK_ACCT.

Signed-off-by: Joanne Koong <joannelkoong@gmail.com>
Acked-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
include/linux/backing-dev.h
mm/backing-dev.c
mm/page-writeback.c

index 9a1e895dd5df1bc901a4ca63fb14be7ee4008165..3e64f14739dd2d08a9fb5153ac1ebc5374a308aa 100644 (file)
@@ -108,12 +108,10 @@ int bdi_set_strict_limit(struct backing_dev_info *bdi, unsigned int strict_limit
  *
  * BDI_CAP_WRITEBACK:          Supports dirty page writeback, and dirty pages
  *                             should contribute to accounting
- * BDI_CAP_WRITEBACK_ACCT:     Automatically account writeback pages
  * BDI_CAP_STRICTLIMIT:                Keep number of dirty pages below bdi threshold
  */
 #define BDI_CAP_WRITEBACK              (1 << 0)
-#define BDI_CAP_WRITEBACK_ACCT         (1 << 1)
-#define BDI_CAP_STRICTLIMIT            (1 << 2)
+#define BDI_CAP_STRICTLIMIT            (1 << 1)
 
 extern struct backing_dev_info noop_backing_dev_info;
 
index 783904d8c5ef867974d88998612677aeb111202e..35f11e75e30efbe74f392f9d0c57c01443e78535 100644 (file)
@@ -1026,7 +1026,7 @@ struct backing_dev_info *bdi_alloc(int node_id)
                kfree(bdi);
                return NULL;
        }
-       bdi->capabilities = BDI_CAP_WRITEBACK | BDI_CAP_WRITEBACK_ACCT;
+       bdi->capabilities = BDI_CAP_WRITEBACK;
        bdi->ra_pages = VM_READAHEAD_PAGES;
        bdi->io_pages = VM_READAHEAD_PAGES;
        timer_setup(&bdi->laptop_mode_wb_timer, laptop_mode_timer_fn, 0);
index 3e248d1c3969be82fb2f460f840ce47124d21645..de669636120d217d57586264b33ff7ab216cd57a 100644 (file)
@@ -3014,26 +3014,22 @@ bool __folio_end_writeback(struct folio *folio)
 
        if (mapping && mapping_use_writeback_tags(mapping)) {
                struct inode *inode = mapping->host;
-               struct backing_dev_info *bdi = inode_to_bdi(inode);
+               struct bdi_writeback *wb = inode_to_wb(inode);
                unsigned long flags;
 
                xa_lock_irqsave(&mapping->i_pages, flags);
                ret = folio_xor_flags_has_waiters(folio, 1 << PG_writeback);
                __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);
 
-                       wb_stat_mod(wb, WB_WRITEBACK, -nr);
-                       __wb_writeout_add(wb, nr);
-                       if (!mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK))
-                               wb_inode_writeback_end(wb);
+               wb_stat_mod(wb, WB_WRITEBACK, -nr);
+               __wb_writeout_add(wb, nr);
+               if (!mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK)) {
+                       wb_inode_writeback_end(wb);
+                       if (mapping->host)
+                               sb_clear_inode_writeback(mapping->host);
                }
 
-               if (mapping->host && !mapping_tagged(mapping,
-                                                    PAGECACHE_TAG_WRITEBACK))
-                       sb_clear_inode_writeback(mapping->host);
-
                xa_unlock_irqrestore(&mapping->i_pages, flags);
        } else {
                ret = folio_xor_flags_has_waiters(folio, 1 << PG_writeback);
@@ -3058,7 +3054,7 @@ void __folio_start_writeback(struct folio *folio, bool keep_write)
        if (mapping && mapping_use_writeback_tags(mapping)) {
                XA_STATE(xas, &mapping->i_pages, folio_index(folio));
                struct inode *inode = mapping->host;
-               struct backing_dev_info *bdi = inode_to_bdi(inode);
+               struct bdi_writeback *wb = inode_to_wb(inode);
                unsigned long flags;
                bool on_wblist;
 
@@ -3069,21 +3065,18 @@ void __folio_start_writeback(struct folio *folio, bool keep_write)
                on_wblist = mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK);
 
                xas_set_mark(&xas, PAGECACHE_TAG_WRITEBACK);
-               if (bdi->capabilities & BDI_CAP_WRITEBACK_ACCT) {
-                       struct bdi_writeback *wb = inode_to_wb(inode);
-
-                       wb_stat_mod(wb, WB_WRITEBACK, nr);
-                       if (!on_wblist)
-                               wb_inode_writeback_start(wb);
+               wb_stat_mod(wb, WB_WRITEBACK, nr);
+               if (!on_wblist) {
+                       wb_inode_writeback_start(wb);
+                       /*
+                        * We can come through here when swapping anonymous
+                        * folios, so we don't necessarily have an inode to
+                        * track for sync.
+                        */
+                       if (mapping->host)
+                               sb_mark_inode_writeback(mapping->host);
                }
 
-               /*
-                * We can come through here when swapping anonymous
-                * folios, so we don't necessarily have an inode to
-                * track for sync.
-                */
-               if (mapping->host && !on_wblist)
-                       sb_mark_inode_writeback(mapping->host);
                if (!folio_test_dirty(folio))
                        xas_clear_mark(&xas, PAGECACHE_TAG_DIRTY);
                if (!keep_write)