On 7/8/25 01:46, Joanne Koong wrote: > commit 0c58a97f919c ("fuse: remove tmp folio for writebacks and internal > rb tree") removed temp folios for dirty page writeback. Consequently, > fuse can now use the default writeback accounting. > > With switching fuse to use default writeback accounting, there are some > added benefits. This updates wb->writeback_inodes tracking as well now > and updates writeback throughput estimates after writeback completion. > > This commit also removes inc_wb_stat() and dec_wb_stat(). These have no > callers anymore now that fuse does not call them. > > Signed-off-by: Joanne Koong <joannelkoong@xxxxxxxxx> > --- > fs/fuse/file.c | 9 +-------- > fs/fuse/inode.c | 2 -- > include/linux/backing-dev.h | 10 ---------- > 3 files changed, 1 insertion(+), 20 deletions(-) > > diff --git a/fs/fuse/file.c b/fs/fuse/file.c > index adc4aa6810f5..e53331c851eb 100644 > --- a/fs/fuse/file.c > +++ b/fs/fuse/file.c > @@ -1784,19 +1784,15 @@ static void fuse_writepage_finish(struct fuse_writepage_args *wpa) > struct fuse_args_pages *ap = &wpa->ia.ap; > struct inode *inode = wpa->inode; > struct fuse_inode *fi = get_fuse_inode(inode); > - struct backing_dev_info *bdi = inode_to_bdi(inode); > int i; > > - for (i = 0; i < ap->num_folios; i++) { > + for (i = 0; i < ap->num_folios; i++) > /* > * Benchmarks showed that ending writeback within the > * scope of the fi->lock alleviates xarray lock > * contention and noticeably improves performance. > */ > folio_end_writeback(ap->folios[i]); > - dec_wb_stat(&bdi->wb, WB_WRITEBACK); > - wb_writeout_inc(&bdi->wb); > - } Probably, just my own style, personally I keep the braces when there are comments. > > wake_up(&fi->page_waitq); > } > @@ -1982,14 +1978,11 @@ static void fuse_writepage_add_to_bucket(struct fuse_conn *fc, > static void fuse_writepage_args_page_fill(struct fuse_writepage_args *wpa, struct folio *folio, > uint32_t folio_index) > { > - struct inode *inode = folio->mapping->host; > struct fuse_args_pages *ap = &wpa->ia.ap; > > ap->folios[folio_index] = folio; > ap->descs[folio_index].offset = 0; > ap->descs[folio_index].length = folio_size(folio); > - > - inc_wb_stat(&inode_to_bdi(inode)->wb, WB_WRITEBACK); > } > > static struct fuse_writepage_args *fuse_writepage_args_setup(struct folio *folio, > diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c > index bfe8d8af46f3..a6c064eb7d08 100644 > --- a/fs/fuse/inode.c > +++ b/fs/fuse/inode.c > @@ -1557,8 +1557,6 @@ static int fuse_bdi_init(struct fuse_conn *fc, struct super_block *sb) > if (err) > return err; > > - /* fuse does it's own writeback accounting */ > - sb->s_bdi->capabilities &= ~BDI_CAP_WRITEBACK_ACCT; > sb->s_bdi->capabilities |= BDI_CAP_STRICTLIMIT; > > /* > diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h > index e721148c95d0..9a1e895dd5df 100644 > --- a/include/linux/backing-dev.h > +++ b/include/linux/backing-dev.h > @@ -66,16 +66,6 @@ static inline void wb_stat_mod(struct bdi_writeback *wb, > percpu_counter_add_batch(&wb->stat[item], amount, WB_STAT_BATCH); > } > > -static inline void inc_wb_stat(struct bdi_writeback *wb, enum wb_stat_item item) > -{ > - wb_stat_mod(wb, item, 1); > -} > - > -static inline void dec_wb_stat(struct bdi_writeback *wb, enum wb_stat_item item) > -{ > - wb_stat_mod(wb, item, -1); > -} > - > static inline s64 wb_stat(struct bdi_writeback *wb, enum wb_stat_item item) > { > return percpu_counter_read_positive(&wb->stat[item]); Reviewed-by: Bernd Schubert <bschubert@xxxxxxx>