diff mbox series

[15/17] btrfs: move free space cachep's out of ctree.h

Message ID d74e617ece68c21850260393cdce86ad5ae33ee9.1663167824.git.josef@toxicpanda.com (mailing list archive)
State New, archived
Headers show
Series btrfs: initial ctree.h cleanups, simple stuff | expand

Commit Message

Josef Bacik Sept. 14, 2022, 3:06 p.m. UTC
This is local to the free-space-cache.c code, remove it from ctree.h and
inode.c, create new init/exit functions for the cachep, and move it
locally to free-space-cache.c.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 fs/btrfs/ctree.h            |  2 --
 fs/btrfs/free-space-cache.c | 28 ++++++++++++++++++++++++++++
 fs/btrfs/free-space-cache.h |  2 ++
 fs/btrfs/inode.c            | 16 ----------------
 fs/btrfs/super.c            |  9 ++++++++-
 5 files changed, 38 insertions(+), 19 deletions(-)

Comments

Qu Wenruo Sept. 15, 2022, 9:27 a.m. UTC | #1
On 2022/9/14 23:06, Josef Bacik wrote:
> This is local to the free-space-cache.c code, remove it from ctree.h and
> inode.c, create new init/exit functions for the cachep, and move it
> locally to free-space-cache.c.
> 
> Signed-off-by: Josef Bacik <josef@toxicpanda.com>

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

Thanks,
Qu
> ---
>   fs/btrfs/ctree.h            |  2 --
>   fs/btrfs/free-space-cache.c | 28 ++++++++++++++++++++++++++++
>   fs/btrfs/free-space-cache.h |  2 ++
>   fs/btrfs/inode.c            | 16 ----------------
>   fs/btrfs/super.c            |  9 ++++++++-
>   5 files changed, 38 insertions(+), 19 deletions(-)
> 
> diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
> index 3a61f5c0ab5f..af6f6764d9a4 100644
> --- a/fs/btrfs/ctree.h
> +++ b/fs/btrfs/ctree.h
> @@ -41,8 +41,6 @@ struct btrfs_pending_snapshot;
>   struct btrfs_delayed_ref_root;
>   struct btrfs_space_info;
>   struct btrfs_block_group;
> -extern struct kmem_cache *btrfs_free_space_cachep;
> -extern struct kmem_cache *btrfs_free_space_bitmap_cachep;
>   struct btrfs_ordered_sum;
>   struct btrfs_ref;
>   struct btrfs_bio;
> diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
> index 7859eeca484c..ee03c5e6db4c 100644
> --- a/fs/btrfs/free-space-cache.c
> +++ b/fs/btrfs/free-space-cache.c
> @@ -29,6 +29,9 @@
>   #define MAX_CACHE_BYTES_PER_GIG	SZ_64K
>   #define FORCE_EXTENT_THRESHOLD	SZ_1M
>   
> +static struct kmem_cache *btrfs_free_space_cachep;
> +static struct kmem_cache *btrfs_free_space_bitmap_cachep;
> +
>   struct btrfs_trim_range {
>   	u64 start;
>   	u64 bytes;
> @@ -4132,6 +4135,31 @@ int btrfs_set_free_space_cache_v1_active(struct btrfs_fs_info *fs_info, bool act
>   	return ret;
>   }
>   
> +int __init btrfs_free_space_init(void)
> +{
> +	btrfs_free_space_cachep = kmem_cache_create("btrfs_free_space",
> +			sizeof(struct btrfs_free_space), 0,
> +			SLAB_MEM_SPREAD, NULL);
> +	if (!btrfs_free_space_cachep)
> +		return -ENOMEM;
> +
> +	btrfs_free_space_bitmap_cachep = kmem_cache_create("btrfs_free_space_bitmap",
> +							PAGE_SIZE, PAGE_SIZE,
> +							SLAB_MEM_SPREAD, NULL);
> +	if (!btrfs_free_space_bitmap_cachep) {
> +		kmem_cache_destroy(btrfs_free_space_cachep);
> +		return -ENOMEM;
> +	}
> +
> +	return 0;
> +}
> +
> +void __cold btrfs_free_space_exit(void)
> +{
> +	kmem_cache_destroy(btrfs_free_space_cachep);
> +	kmem_cache_destroy(btrfs_free_space_bitmap_cachep);
> +}
> +
>   #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
>   /*
>    * Use this if you need to make a bitmap or extent entry specifically, it
> diff --git a/fs/btrfs/free-space-cache.h b/fs/btrfs/free-space-cache.h
> index eaf30f6444dd..cab954a9d97b 100644
> --- a/fs/btrfs/free-space-cache.h
> +++ b/fs/btrfs/free-space-cache.h
> @@ -88,6 +88,8 @@ struct btrfs_io_ctl {
>   	int bitmaps;
>   };
>   
> +int __init btrfs_free_space_init(void);
> +void __cold btrfs_free_space_exit(void);
>   struct inode *lookup_free_space_inode(struct btrfs_block_group *block_group,
>   		struct btrfs_path *path);
>   int create_free_space_inode(struct btrfs_trans_handle *trans,
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index 1401e2da9284..da5be8f23f68 100644
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -107,8 +107,6 @@ static const struct address_space_operations btrfs_aops;
>   static const struct file_operations btrfs_dir_file_operations;
>   
>   static struct kmem_cache *btrfs_inode_cachep;
> -struct kmem_cache *btrfs_free_space_cachep;
> -struct kmem_cache *btrfs_free_space_bitmap_cachep;
>   
>   static int btrfs_setsize(struct inode *inode, struct iattr *attr);
>   static int btrfs_truncate(struct inode *inode, bool skip_writeback);
> @@ -8936,8 +8934,6 @@ void __cold btrfs_destroy_cachep(void)
>   	rcu_barrier();
>   	bioset_exit(&btrfs_dio_bioset);
>   	kmem_cache_destroy(btrfs_inode_cachep);
> -	kmem_cache_destroy(btrfs_free_space_cachep);
> -	kmem_cache_destroy(btrfs_free_space_bitmap_cachep);
>   }
>   
>   int __init btrfs_init_cachep(void)
> @@ -8949,18 +8945,6 @@ int __init btrfs_init_cachep(void)
>   	if (!btrfs_inode_cachep)
>   		goto fail;
>   
> -	btrfs_free_space_cachep = kmem_cache_create("btrfs_free_space",
> -			sizeof(struct btrfs_free_space), 0,
> -			SLAB_MEM_SPREAD, NULL);
> -	if (!btrfs_free_space_cachep)
> -		goto fail;
> -
> -	btrfs_free_space_bitmap_cachep = kmem_cache_create("btrfs_free_space_bitmap",
> -							PAGE_SIZE, PAGE_SIZE,
> -							SLAB_MEM_SPREAD, NULL);
> -	if (!btrfs_free_space_bitmap_cachep)
> -		goto fail;
> -
>   	if (bioset_init(&btrfs_dio_bioset, BIO_POOL_SIZE,
>   			offsetof(struct btrfs_dio_private, bio),
>   			BIOSET_NEED_BVECS))
> diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
> index acd590bed579..c2e634de01e4 100644
> --- a/fs/btrfs/super.c
> +++ b/fs/btrfs/super.c
> @@ -2745,10 +2745,14 @@ static int __init init_btrfs_fs(void)
>   	if (err)
>   		goto free_transaction;
>   
> -	err = extent_state_init_cachep();
> +	err = btrfs_free_space_init();
>   	if (err)
>   		goto free_ctree;
>   
> +	err = extent_state_init_cachep();
> +	if (err)
> +		goto free_free_space;
> +
>   	err = extent_buffer_init_cachep();
>   	if (err)
>   		goto free_extent_cachep;
> @@ -2817,6 +2821,8 @@ static int __init init_btrfs_fs(void)
>   	extent_buffer_free_cachep();
>   free_extent_cachep:
>   	extent_state_free_cachep();
> +free_free_space:
> +	btrfs_free_space_exit();
>   free_ctree:
>   	btrfs_ctree_exit();
>   free_transaction:
> @@ -2832,6 +2838,7 @@ static int __init init_btrfs_fs(void)
>   
>   static void __exit exit_btrfs_fs(void)
>   {
> +	btrfs_free_space_exit();
>   	btrfs_ctree_exit();
>   	btrfs_transaction_exit();
>   	btrfs_destroy_cachep();
Johannes Thumshirn Sept. 15, 2022, 2:27 p.m. UTC | #2
Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
diff mbox series

Patch

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 3a61f5c0ab5f..af6f6764d9a4 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -41,8 +41,6 @@  struct btrfs_pending_snapshot;
 struct btrfs_delayed_ref_root;
 struct btrfs_space_info;
 struct btrfs_block_group;
-extern struct kmem_cache *btrfs_free_space_cachep;
-extern struct kmem_cache *btrfs_free_space_bitmap_cachep;
 struct btrfs_ordered_sum;
 struct btrfs_ref;
 struct btrfs_bio;
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index 7859eeca484c..ee03c5e6db4c 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -29,6 +29,9 @@ 
 #define MAX_CACHE_BYTES_PER_GIG	SZ_64K
 #define FORCE_EXTENT_THRESHOLD	SZ_1M
 
+static struct kmem_cache *btrfs_free_space_cachep;
+static struct kmem_cache *btrfs_free_space_bitmap_cachep;
+
 struct btrfs_trim_range {
 	u64 start;
 	u64 bytes;
@@ -4132,6 +4135,31 @@  int btrfs_set_free_space_cache_v1_active(struct btrfs_fs_info *fs_info, bool act
 	return ret;
 }
 
+int __init btrfs_free_space_init(void)
+{
+	btrfs_free_space_cachep = kmem_cache_create("btrfs_free_space",
+			sizeof(struct btrfs_free_space), 0,
+			SLAB_MEM_SPREAD, NULL);
+	if (!btrfs_free_space_cachep)
+		return -ENOMEM;
+
+	btrfs_free_space_bitmap_cachep = kmem_cache_create("btrfs_free_space_bitmap",
+							PAGE_SIZE, PAGE_SIZE,
+							SLAB_MEM_SPREAD, NULL);
+	if (!btrfs_free_space_bitmap_cachep) {
+		kmem_cache_destroy(btrfs_free_space_cachep);
+		return -ENOMEM;
+	}
+
+	return 0;
+}
+
+void __cold btrfs_free_space_exit(void)
+{
+	kmem_cache_destroy(btrfs_free_space_cachep);
+	kmem_cache_destroy(btrfs_free_space_bitmap_cachep);
+}
+
 #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
 /*
  * Use this if you need to make a bitmap or extent entry specifically, it
diff --git a/fs/btrfs/free-space-cache.h b/fs/btrfs/free-space-cache.h
index eaf30f6444dd..cab954a9d97b 100644
--- a/fs/btrfs/free-space-cache.h
+++ b/fs/btrfs/free-space-cache.h
@@ -88,6 +88,8 @@  struct btrfs_io_ctl {
 	int bitmaps;
 };
 
+int __init btrfs_free_space_init(void);
+void __cold btrfs_free_space_exit(void);
 struct inode *lookup_free_space_inode(struct btrfs_block_group *block_group,
 		struct btrfs_path *path);
 int create_free_space_inode(struct btrfs_trans_handle *trans,
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 1401e2da9284..da5be8f23f68 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -107,8 +107,6 @@  static const struct address_space_operations btrfs_aops;
 static const struct file_operations btrfs_dir_file_operations;
 
 static struct kmem_cache *btrfs_inode_cachep;
-struct kmem_cache *btrfs_free_space_cachep;
-struct kmem_cache *btrfs_free_space_bitmap_cachep;
 
 static int btrfs_setsize(struct inode *inode, struct iattr *attr);
 static int btrfs_truncate(struct inode *inode, bool skip_writeback);
@@ -8936,8 +8934,6 @@  void __cold btrfs_destroy_cachep(void)
 	rcu_barrier();
 	bioset_exit(&btrfs_dio_bioset);
 	kmem_cache_destroy(btrfs_inode_cachep);
-	kmem_cache_destroy(btrfs_free_space_cachep);
-	kmem_cache_destroy(btrfs_free_space_bitmap_cachep);
 }
 
 int __init btrfs_init_cachep(void)
@@ -8949,18 +8945,6 @@  int __init btrfs_init_cachep(void)
 	if (!btrfs_inode_cachep)
 		goto fail;
 
-	btrfs_free_space_cachep = kmem_cache_create("btrfs_free_space",
-			sizeof(struct btrfs_free_space), 0,
-			SLAB_MEM_SPREAD, NULL);
-	if (!btrfs_free_space_cachep)
-		goto fail;
-
-	btrfs_free_space_bitmap_cachep = kmem_cache_create("btrfs_free_space_bitmap",
-							PAGE_SIZE, PAGE_SIZE,
-							SLAB_MEM_SPREAD, NULL);
-	if (!btrfs_free_space_bitmap_cachep)
-		goto fail;
-
 	if (bioset_init(&btrfs_dio_bioset, BIO_POOL_SIZE,
 			offsetof(struct btrfs_dio_private, bio),
 			BIOSET_NEED_BVECS))
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index acd590bed579..c2e634de01e4 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -2745,10 +2745,14 @@  static int __init init_btrfs_fs(void)
 	if (err)
 		goto free_transaction;
 
-	err = extent_state_init_cachep();
+	err = btrfs_free_space_init();
 	if (err)
 		goto free_ctree;
 
+	err = extent_state_init_cachep();
+	if (err)
+		goto free_free_space;
+
 	err = extent_buffer_init_cachep();
 	if (err)
 		goto free_extent_cachep;
@@ -2817,6 +2821,8 @@  static int __init init_btrfs_fs(void)
 	extent_buffer_free_cachep();
 free_extent_cachep:
 	extent_state_free_cachep();
+free_free_space:
+	btrfs_free_space_exit();
 free_ctree:
 	btrfs_ctree_exit();
 free_transaction:
@@ -2832,6 +2838,7 @@  static int __init init_btrfs_fs(void)
 
 static void __exit exit_btrfs_fs(void)
 {
+	btrfs_free_space_exit();
 	btrfs_ctree_exit();
 	btrfs_transaction_exit();
 	btrfs_destroy_cachep();