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 |
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();
Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
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();
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(-)