Re: [PATCH v2 1/2] fuse: use default writeback accounting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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>




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux