btrfs: Cleanup btrfs_destroy_delayed_refs()
diff mbox series

Message ID 20190416055739.25771-1-wqu@suse.com
State New
Headers show
Series
  • btrfs: Cleanup btrfs_destroy_delayed_refs()
Related show

Commit Message

Qu Wenruo April 16, 2019, 5:57 a.m. UTC
This patches cleans up btrfs_destroy_delayed_refs() by:
- Remove the forward declaration
  The caller comes after the implementation, no need to do forward
  declaration.

- Remove the @fs_info parameter
  @fs_info can be extracted from @trans parameter.

- Make it return void
  Again, no failure pattern.

Signed-off-by: Qu Wenruo <wqu@suse.com>
---
 fs/btrfs/disk-io.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

Comments

Nikolay Borisov April 16, 2019, 6:13 a.m. UTC | #1
On 16.04.19 г. 8:57 ч., Qu Wenruo wrote:
> This patches cleans up btrfs_destroy_delayed_refs() by:
> - Remove the forward declaration
>   The caller comes after the implementation, no need to do forward
>   declaration.
> 
> - Remove the @fs_info parameter
>   @fs_info can be extracted from @trans parameter.
> 
> - Make it return void
>   Again, no failure pattern.
> 
> Signed-off-by: Qu Wenruo <wqu@suse.com>

Reviewed-by: Nikolay Borisov <nborisov@suse.com>

> ---
>  fs/btrfs/disk-io.c | 13 ++++---------
>  1 file changed, 4 insertions(+), 9 deletions(-)
> 
> diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
> index 6fe9197f6ee4..d83298570bdb 100644
> --- a/fs/btrfs/disk-io.c
> +++ b/fs/btrfs/disk-io.c
> @@ -54,8 +54,6 @@
>  static const struct extent_io_ops btree_extent_io_ops;
>  static void end_workqueue_fn(struct btrfs_work *work);
>  static void btrfs_destroy_ordered_extents(struct btrfs_root *root);
> -static int btrfs_destroy_delayed_refs(struct btrfs_transaction *trans,
> -				      struct btrfs_fs_info *fs_info);
>  static void btrfs_destroy_delalloc_inodes(struct btrfs_root *root);
>  static int btrfs_destroy_marked_extents(struct btrfs_fs_info *fs_info,
>  					struct extent_io_tree *dirty_pages,
> @@ -4224,13 +4222,12 @@ static void btrfs_destroy_all_ordered_extents(struct btrfs_fs_info *fs_info)
>  	btrfs_wait_ordered_roots(fs_info, U64_MAX, 0, (u64)-1);
>  }
>  
> -static int btrfs_destroy_delayed_refs(struct btrfs_transaction *trans,
> -				      struct btrfs_fs_info *fs_info)
> +static void btrfs_destroy_delayed_refs(struct btrfs_transaction *trans)
>  {
> +	struct btrfs_fs_info *fs_info = trans->fs_info;
>  	struct rb_node *node;
>  	struct btrfs_delayed_ref_root *delayed_refs;
>  	struct btrfs_delayed_ref_node *ref;
> -	int ret = 0;
>  
>  	delayed_refs = &trans->delayed_refs;
>  
> @@ -4238,7 +4235,7 @@ static int btrfs_destroy_delayed_refs(struct btrfs_transaction *trans,
>  	if (atomic_read(&delayed_refs->num_entries) == 0) {
>  		spin_unlock(&delayed_refs->lock);
>  		btrfs_info(fs_info, "delayed_refs has NO entry");
> -		return ret;
> +		return;
>  	}
>  
>  	while ((node = rb_first_cached(&delayed_refs->href_root)) != NULL) {
> @@ -4281,8 +4278,6 @@ static int btrfs_destroy_delayed_refs(struct btrfs_transaction *trans,
>  	}
>  
>  	spin_unlock(&delayed_refs->lock);
> -
> -	return ret;
>  }
>  
>  static void btrfs_destroy_delalloc_inodes(struct btrfs_root *root)
> @@ -4488,7 +4483,7 @@ void btrfs_cleanup_one_transaction(struct btrfs_transaction *cur_trans,
>  	ASSERT(list_empty(&cur_trans->dirty_bgs));
>  	ASSERT(list_empty(&cur_trans->io_bgs));
>  
> -	btrfs_destroy_delayed_refs(cur_trans, fs_info);
> +	btrfs_destroy_delayed_refs(cur_trans);
>  
>  	cur_trans->state = TRANS_STATE_COMMIT_START;
>  	wake_up(&fs_info->transaction_blocked_wait);
>
David Sterba April 18, 2019, 3:49 p.m. UTC | #2
On Tue, Apr 16, 2019 at 01:57:39PM +0800, Qu Wenruo wrote:
> This patches cleans up btrfs_destroy_delayed_refs() by:
> - Remove the forward declaration
>   The caller comes after the implementation, no need to do forward
>   declaration.

Ok.

> - Remove the @fs_info parameter
>   @fs_info can be extracted from @trans parameter.

Ok.

> - Make it return void
>   Again, no failure pattern.

When switching a fuction to return void, please check the whole
callgraph for functions that do not properly handler errors and do
BUG_ON. You won't see errors passed from them so this gives the
impression no error handling is needed in the caller.

This has been sent in the past, so I can point you to the 2nd paragraph in
https://lore.kernel.org/linux-btrfs/20180815124425.GM24025@twin.jikos.cz/

hint: btrfs_pin_extent

Patch
diff mbox series

diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 6fe9197f6ee4..d83298570bdb 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -54,8 +54,6 @@ 
 static const struct extent_io_ops btree_extent_io_ops;
 static void end_workqueue_fn(struct btrfs_work *work);
 static void btrfs_destroy_ordered_extents(struct btrfs_root *root);
-static int btrfs_destroy_delayed_refs(struct btrfs_transaction *trans,
-				      struct btrfs_fs_info *fs_info);
 static void btrfs_destroy_delalloc_inodes(struct btrfs_root *root);
 static int btrfs_destroy_marked_extents(struct btrfs_fs_info *fs_info,
 					struct extent_io_tree *dirty_pages,
@@ -4224,13 +4222,12 @@  static void btrfs_destroy_all_ordered_extents(struct btrfs_fs_info *fs_info)
 	btrfs_wait_ordered_roots(fs_info, U64_MAX, 0, (u64)-1);
 }
 
-static int btrfs_destroy_delayed_refs(struct btrfs_transaction *trans,
-				      struct btrfs_fs_info *fs_info)
+static void btrfs_destroy_delayed_refs(struct btrfs_transaction *trans)
 {
+	struct btrfs_fs_info *fs_info = trans->fs_info;
 	struct rb_node *node;
 	struct btrfs_delayed_ref_root *delayed_refs;
 	struct btrfs_delayed_ref_node *ref;
-	int ret = 0;
 
 	delayed_refs = &trans->delayed_refs;
 
@@ -4238,7 +4235,7 @@  static int btrfs_destroy_delayed_refs(struct btrfs_transaction *trans,
 	if (atomic_read(&delayed_refs->num_entries) == 0) {
 		spin_unlock(&delayed_refs->lock);
 		btrfs_info(fs_info, "delayed_refs has NO entry");
-		return ret;
+		return;
 	}
 
 	while ((node = rb_first_cached(&delayed_refs->href_root)) != NULL) {
@@ -4281,8 +4278,6 @@  static int btrfs_destroy_delayed_refs(struct btrfs_transaction *trans,
 	}
 
 	spin_unlock(&delayed_refs->lock);
-
-	return ret;
 }
 
 static void btrfs_destroy_delalloc_inodes(struct btrfs_root *root)
@@ -4488,7 +4483,7 @@  void btrfs_cleanup_one_transaction(struct btrfs_transaction *cur_trans,
 	ASSERT(list_empty(&cur_trans->dirty_bgs));
 	ASSERT(list_empty(&cur_trans->io_bgs));
 
-	btrfs_destroy_delayed_refs(cur_trans, fs_info);
+	btrfs_destroy_delayed_refs(cur_trans);
 
 	cur_trans->state = TRANS_STATE_COMMIT_START;
 	wake_up(&fs_info->transaction_blocked_wait);