Btrfs: remove no longer used function to run delayed refs asynchronously
diff mbox series

Message ID 20190417092847.17299-1-fdmanana@kernel.org
State New
Headers show
Series
  • Btrfs: remove no longer used function to run delayed refs asynchronously
Related show

Commit Message

Filipe Manana April 17, 2019, 9:28 a.m. UTC
From: Filipe Manana <fdmanana@suse.com>

It used to be called from only two places (truncate path and releasing a
transaction handle), but commits 28bad2125767c5 ("btrfs: fix truncate
throttling") and db2462a6ad3dc4 ("btrfs: don't run delayed refs in the end
transaction logic") removed their calls to this function, so it's not used
anymore. Just remove it and all its helpers.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
 fs/btrfs/ctree.h       |  2 --
 fs/btrfs/extent-tree.c | 91 --------------------------------------------------
 2 files changed, 93 deletions(-)

Comments

Qu Wenruo April 17, 2019, 9:40 a.m. UTC | #1
On 2019/4/17 下午5:28, fdmanana@kernel.org wrote:
> From: Filipe Manana <fdmanana@suse.com>
> 
> It used to be called from only two places (truncate path and releasing a
> transaction handle), but commits 28bad2125767c5 ("btrfs: fix truncate
> throttling") and db2462a6ad3dc4 ("btrfs: don't run delayed refs in the end
> transaction logic") removed their calls to this function, so it's not used
> anymore. Just remove it and all its helpers.
> 
> Signed-off-by: Filipe Manana <fdmanana@suse.com>

Reviewed-by: Qu Wenruo <wqu@suse.com>

Glad to know that delayed refs can only be executed when committing a
transaction.

Thanks,
Qu
> ---
>  fs/btrfs/ctree.h       |  2 --
>  fs/btrfs/extent-tree.c | 91 --------------------------------------------------
>  2 files changed, 93 deletions(-)
> 
> diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
> index 0f4838e00fbc..a1c7effe6de4 100644
> --- a/fs/btrfs/ctree.h
> +++ b/fs/btrfs/ctree.h
> @@ -2698,8 +2698,6 @@ void btrfs_wait_nocow_writers(struct btrfs_block_group_cache *bg);
>  void btrfs_put_block_group(struct btrfs_block_group_cache *cache);
>  int btrfs_run_delayed_refs(struct btrfs_trans_handle *trans,
>  			   unsigned long count);
> -int btrfs_async_run_delayed_refs(struct btrfs_fs_info *fs_info,
> -				 unsigned long count, u64 transid, int wait);
>  void btrfs_cleanup_ref_head_accounting(struct btrfs_fs_info *fs_info,
>  				  struct btrfs_delayed_ref_root *delayed_refs,
>  				  struct btrfs_delayed_ref_head *head);
> diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
> index 5b33cf0a539b..22dccd691c1e 100644
> --- a/fs/btrfs/extent-tree.c
> +++ b/fs/btrfs/extent-tree.c
> @@ -2877,97 +2877,6 @@ int btrfs_should_throttle_delayed_refs(struct btrfs_trans_handle *trans)
>  	return btrfs_check_space_for_delayed_refs(trans->fs_info);
>  }
>  
> -struct async_delayed_refs {
> -	struct btrfs_root *root;
> -	u64 transid;
> -	int count;
> -	int error;
> -	int sync;
> -	struct completion wait;
> -	struct btrfs_work work;
> -};
> -
> -static inline struct async_delayed_refs *
> -to_async_delayed_refs(struct btrfs_work *work)
> -{
> -	return container_of(work, struct async_delayed_refs, work);
> -}
> -
> -static void delayed_ref_async_start(struct btrfs_work *work)
> -{
> -	struct async_delayed_refs *async = to_async_delayed_refs(work);
> -	struct btrfs_trans_handle *trans;
> -	struct btrfs_fs_info *fs_info = async->root->fs_info;
> -	int ret;
> -
> -	/* if the commit is already started, we don't need to wait here */
> -	if (btrfs_transaction_blocked(fs_info))
> -		goto done;
> -
> -	trans = btrfs_join_transaction(async->root);
> -	if (IS_ERR(trans)) {
> -		async->error = PTR_ERR(trans);
> -		goto done;
> -	}
> -
> -	/*
> -	 * trans->sync means that when we call end_transaction, we won't
> -	 * wait on delayed refs
> -	 */
> -	trans->sync = true;
> -
> -	/* Don't bother flushing if we got into a different transaction */
> -	if (trans->transid > async->transid)
> -		goto end;
> -
> -	ret = btrfs_run_delayed_refs(trans, async->count);
> -	if (ret)
> -		async->error = ret;
> -end:
> -	ret = btrfs_end_transaction(trans);
> -	if (ret && !async->error)
> -		async->error = ret;
> -done:
> -	if (async->sync)
> -		complete(&async->wait);
> -	else
> -		kfree(async);
> -}
> -
> -int btrfs_async_run_delayed_refs(struct btrfs_fs_info *fs_info,
> -				 unsigned long count, u64 transid, int wait)
> -{
> -	struct async_delayed_refs *async;
> -	int ret;
> -
> -	async = kmalloc(sizeof(*async), GFP_NOFS);
> -	if (!async)
> -		return -ENOMEM;
> -
> -	async->root = fs_info->tree_root;
> -	async->count = count;
> -	async->error = 0;
> -	async->transid = transid;
> -	if (wait)
> -		async->sync = 1;
> -	else
> -		async->sync = 0;
> -	init_completion(&async->wait);
> -
> -	btrfs_init_work(&async->work, btrfs_extent_refs_helper,
> -			delayed_ref_async_start, NULL, NULL);
> -
> -	btrfs_queue_work(fs_info->extent_workers, &async->work);
> -
> -	if (wait) {
> -		wait_for_completion(&async->wait);
> -		ret = async->error;
> -		kfree(async);
> -		return ret;
> -	}
> -	return 0;
> -}
> -
>  /*
>   * this starts processing the delayed reference count updates and
>   * extent insertions we have queued up so far.  count can be
>
David Sterba April 17, 2019, 1:40 p.m. UTC | #2
On Wed, Apr 17, 2019 at 10:28:47AM +0100, fdmanana@kernel.org wrote:
> From: Filipe Manana <fdmanana@suse.com>
> 
> It used to be called from only two places (truncate path and releasing a
> transaction handle), but commits 28bad2125767c5 ("btrfs: fix truncate
> throttling") and db2462a6ad3dc4 ("btrfs: don't run delayed refs in the end
> transaction logic") removed their calls to this function, so it's not used
> anymore. Just remove it and all its helpers.
> 
> Signed-off-by: Filipe Manana <fdmanana@suse.com>

Added to misc-next, thanks.

Patch
diff mbox series

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 0f4838e00fbc..a1c7effe6de4 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2698,8 +2698,6 @@  void btrfs_wait_nocow_writers(struct btrfs_block_group_cache *bg);
 void btrfs_put_block_group(struct btrfs_block_group_cache *cache);
 int btrfs_run_delayed_refs(struct btrfs_trans_handle *trans,
 			   unsigned long count);
-int btrfs_async_run_delayed_refs(struct btrfs_fs_info *fs_info,
-				 unsigned long count, u64 transid, int wait);
 void btrfs_cleanup_ref_head_accounting(struct btrfs_fs_info *fs_info,
 				  struct btrfs_delayed_ref_root *delayed_refs,
 				  struct btrfs_delayed_ref_head *head);
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 5b33cf0a539b..22dccd691c1e 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -2877,97 +2877,6 @@  int btrfs_should_throttle_delayed_refs(struct btrfs_trans_handle *trans)
 	return btrfs_check_space_for_delayed_refs(trans->fs_info);
 }
 
-struct async_delayed_refs {
-	struct btrfs_root *root;
-	u64 transid;
-	int count;
-	int error;
-	int sync;
-	struct completion wait;
-	struct btrfs_work work;
-};
-
-static inline struct async_delayed_refs *
-to_async_delayed_refs(struct btrfs_work *work)
-{
-	return container_of(work, struct async_delayed_refs, work);
-}
-
-static void delayed_ref_async_start(struct btrfs_work *work)
-{
-	struct async_delayed_refs *async = to_async_delayed_refs(work);
-	struct btrfs_trans_handle *trans;
-	struct btrfs_fs_info *fs_info = async->root->fs_info;
-	int ret;
-
-	/* if the commit is already started, we don't need to wait here */
-	if (btrfs_transaction_blocked(fs_info))
-		goto done;
-
-	trans = btrfs_join_transaction(async->root);
-	if (IS_ERR(trans)) {
-		async->error = PTR_ERR(trans);
-		goto done;
-	}
-
-	/*
-	 * trans->sync means that when we call end_transaction, we won't
-	 * wait on delayed refs
-	 */
-	trans->sync = true;
-
-	/* Don't bother flushing if we got into a different transaction */
-	if (trans->transid > async->transid)
-		goto end;
-
-	ret = btrfs_run_delayed_refs(trans, async->count);
-	if (ret)
-		async->error = ret;
-end:
-	ret = btrfs_end_transaction(trans);
-	if (ret && !async->error)
-		async->error = ret;
-done:
-	if (async->sync)
-		complete(&async->wait);
-	else
-		kfree(async);
-}
-
-int btrfs_async_run_delayed_refs(struct btrfs_fs_info *fs_info,
-				 unsigned long count, u64 transid, int wait)
-{
-	struct async_delayed_refs *async;
-	int ret;
-
-	async = kmalloc(sizeof(*async), GFP_NOFS);
-	if (!async)
-		return -ENOMEM;
-
-	async->root = fs_info->tree_root;
-	async->count = count;
-	async->error = 0;
-	async->transid = transid;
-	if (wait)
-		async->sync = 1;
-	else
-		async->sync = 0;
-	init_completion(&async->wait);
-
-	btrfs_init_work(&async->work, btrfs_extent_refs_helper,
-			delayed_ref_async_start, NULL, NULL);
-
-	btrfs_queue_work(fs_info->extent_workers, &async->work);
-
-	if (wait) {
-		wait_for_completion(&async->wait);
-		ret = async->error;
-		kfree(async);
-		return ret;
-	}
-	return 0;
-}
-
 /*
  * this starts processing the delayed reference count updates and
  * extent insertions we have queued up so far.  count can be