public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] btrfs: reuse exit helper in btrfs_bioset_init()
@ 2025-04-14 12:44 Yangtao Li
  2025-04-14 19:03 ` David Sterba
  0 siblings, 1 reply; 2+ messages in thread
From: Yangtao Li @ 2025-04-14 12:44 UTC (permalink / raw)
  To: clm, josef, dsterba; +Cc: linux-btrfs, linux-kernel, Yangtao Li

As David Sterba said before:

  This is partially duplicating btrfs_delayed_ref_exit(), I'd rather reuse
  the exit helper.

  I've checked if this can be done elsewhere, seems that there's only one
  other case btrfs_bioset_init(), which is partially duplicating
  btrfs_bioset_exit(). All other init/exit functions are trivial and
  allocate one structure. So if you want to do that cleanup, please update
  btrfs_bioset_init() to the preferred pattern. Thanks.

So let's convert it.

Signed-off-by: Yangtao Li <frank.li@vivo.com>
---
 fs/btrfs/bio.c | 30 +++++++++++++-----------------
 1 file changed, 13 insertions(+), 17 deletions(-)

diff --git a/fs/btrfs/bio.c b/fs/btrfs/bio.c
index 8c2eee1f1878..f6f84837d62b 100644
--- a/fs/btrfs/bio.c
+++ b/fs/btrfs/bio.c
@@ -892,6 +892,14 @@ void btrfs_submit_repair_write(struct btrfs_bio *bbio, int mirror_num, bool dev_
 	btrfs_bio_end_io(bbio, errno_to_blk_status(ret));
 }
 
+void __cold btrfs_bioset_exit(void)
+{
+	mempool_exit(&btrfs_failed_bio_pool);
+	bioset_exit(&btrfs_repair_bioset);
+	bioset_exit(&btrfs_clone_bioset);
+	bioset_exit(&btrfs_bioset);
+}
+
 int __init btrfs_bioset_init(void)
 {
 	if (bioset_init(&btrfs_bioset, BIO_POOL_SIZE,
@@ -900,29 +908,17 @@ int __init btrfs_bioset_init(void)
 		return -ENOMEM;
 	if (bioset_init(&btrfs_clone_bioset, BIO_POOL_SIZE,
 			offsetof(struct btrfs_bio, bio), 0))
-		goto out_free_bioset;
+		goto out;
 	if (bioset_init(&btrfs_repair_bioset, BIO_POOL_SIZE,
 			offsetof(struct btrfs_bio, bio),
 			BIOSET_NEED_BVECS))
-		goto out_free_clone_bioset;
+		goto out;
 	if (mempool_init_kmalloc_pool(&btrfs_failed_bio_pool, BIO_POOL_SIZE,
 				      sizeof(struct btrfs_failed_bio)))
-		goto out_free_repair_bioset;
+		goto out;
 	return 0;
 
-out_free_repair_bioset:
-	bioset_exit(&btrfs_repair_bioset);
-out_free_clone_bioset:
-	bioset_exit(&btrfs_clone_bioset);
-out_free_bioset:
-	bioset_exit(&btrfs_bioset);
+out:
+	btrfs_bioset_exit();
 	return -ENOMEM;
 }
-
-void __cold btrfs_bioset_exit(void)
-{
-	mempool_exit(&btrfs_failed_bio_pool);
-	bioset_exit(&btrfs_repair_bioset);
-	bioset_exit(&btrfs_clone_bioset);
-	bioset_exit(&btrfs_bioset);
-}
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] btrfs: reuse exit helper in btrfs_bioset_init()
  2025-04-14 12:44 [PATCH] btrfs: reuse exit helper in btrfs_bioset_init() Yangtao Li
@ 2025-04-14 19:03 ` David Sterba
  0 siblings, 0 replies; 2+ messages in thread
From: David Sterba @ 2025-04-14 19:03 UTC (permalink / raw)
  To: Yangtao Li; +Cc: clm, josef, dsterba, linux-btrfs, linux-kernel

On Mon, Apr 14, 2025 at 06:44:01AM -0600, Yangtao Li wrote:
> As David Sterba said before:
> 
>   This is partially duplicating btrfs_delayed_ref_exit(), I'd rather reuse
>   the exit helper.
> 
>   I've checked if this can be done elsewhere, seems that there's only one
>   other case btrfs_bioset_init(), which is partially duplicating
>   btrfs_bioset_exit(). All other init/exit functions are trivial and
>   allocate one structure. So if you want to do that cleanup, please update
>   btrfs_bioset_init() to the preferred pattern. Thanks.

Please write the changelogs as standalone text without the references or
copied text from some suggestions.

Mentions, credits or Suggested-by make most sense if there's some
groundbreaking idea implemented and not mentioning the author would be
percieved as stealing it. Otherwise, suggestions are part of the
review process and should be transformed into useful text in the
changelog.

> So let's convert it.
> 
> Signed-off-by: Yangtao Li <frank.li@vivo.com>
> ---
>  fs/btrfs/bio.c | 30 +++++++++++++-----------------
>  1 file changed, 13 insertions(+), 17 deletions(-)
> 
> diff --git a/fs/btrfs/bio.c b/fs/btrfs/bio.c
> index 8c2eee1f1878..f6f84837d62b 100644
> --- a/fs/btrfs/bio.c
> +++ b/fs/btrfs/bio.c
> @@ -892,6 +892,14 @@ void btrfs_submit_repair_write(struct btrfs_bio *bbio, int mirror_num, bool dev_
>  	btrfs_bio_end_io(bbio, errno_to_blk_status(ret));
>  }
>  
> +void __cold btrfs_bioset_exit(void)
> +{
> +	mempool_exit(&btrfs_failed_bio_pool);
> +	bioset_exit(&btrfs_repair_bioset);
> +	bioset_exit(&btrfs_clone_bioset);
> +	bioset_exit(&btrfs_bioset);
> +}

This function is public and you don't need to move it.

> +
>  int __init btrfs_bioset_init(void)
>  {
>  	if (bioset_init(&btrfs_bioset, BIO_POOL_SIZE,
> @@ -900,29 +908,17 @@ int __init btrfs_bioset_init(void)
>  		return -ENOMEM;
>  	if (bioset_init(&btrfs_clone_bioset, BIO_POOL_SIZE,
>  			offsetof(struct btrfs_bio, bio), 0))
> -		goto out_free_bioset;
> +		goto out;
>  	if (bioset_init(&btrfs_repair_bioset, BIO_POOL_SIZE,
>  			offsetof(struct btrfs_bio, bio),
>  			BIOSET_NEED_BVECS))
> -		goto out_free_clone_bioset;
> +		goto out;
>  	if (mempool_init_kmalloc_pool(&btrfs_failed_bio_pool, BIO_POOL_SIZE,
>  				      sizeof(struct btrfs_failed_bio)))
> -		goto out_free_repair_bioset;
> +		goto out;
>  	return 0;
>  
> -out_free_repair_bioset:
> -	bioset_exit(&btrfs_repair_bioset);
> -out_free_clone_bioset:
> -	bioset_exit(&btrfs_clone_bioset);
> -out_free_bioset:
> -	bioset_exit(&btrfs_bioset);
> +out:
> +	btrfs_bioset_exit();
>  	return -ENOMEM;
>  }
> -
> -void __cold btrfs_bioset_exit(void)
> -{
> -	mempool_exit(&btrfs_failed_bio_pool);
> -	bioset_exit(&btrfs_repair_bioset);
> -	bioset_exit(&btrfs_clone_bioset);
> -	bioset_exit(&btrfs_bioset);
> -}
> -- 
> 2.39.0
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-04-14 19:03 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-14 12:44 [PATCH] btrfs: reuse exit helper in btrfs_bioset_init() Yangtao Li
2025-04-14 19:03 ` David Sterba

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox