Commit eda517fd authored by Josef Bacik's avatar Josef Bacik Committed by David Sterba

btrfs: move free space cachep's out of ctree.h

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.
Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 226463d7
...@@ -41,8 +41,6 @@ struct btrfs_pending_snapshot; ...@@ -41,8 +41,6 @@ struct btrfs_pending_snapshot;
struct btrfs_delayed_ref_root; struct btrfs_delayed_ref_root;
struct btrfs_space_info; struct btrfs_space_info;
struct btrfs_block_group; 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_ordered_sum;
struct btrfs_ref; struct btrfs_ref;
struct btrfs_bio; struct btrfs_bio;
......
...@@ -29,6 +29,9 @@ ...@@ -29,6 +29,9 @@
#define MAX_CACHE_BYTES_PER_GIG SZ_64K #define MAX_CACHE_BYTES_PER_GIG SZ_64K
#define FORCE_EXTENT_THRESHOLD SZ_1M #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 { struct btrfs_trim_range {
u64 start; u64 start;
u64 bytes; u64 bytes;
...@@ -4132,6 +4135,31 @@ int btrfs_set_free_space_cache_v1_active(struct btrfs_fs_info *fs_info, bool act ...@@ -4132,6 +4135,31 @@ int btrfs_set_free_space_cache_v1_active(struct btrfs_fs_info *fs_info, bool act
return ret; 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 #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
/* /*
* Use this if you need to make a bitmap or extent entry specifically, it * Use this if you need to make a bitmap or extent entry specifically, it
......
...@@ -88,6 +88,8 @@ struct btrfs_io_ctl { ...@@ -88,6 +88,8 @@ struct btrfs_io_ctl {
int bitmaps; 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 inode *lookup_free_space_inode(struct btrfs_block_group *block_group,
struct btrfs_path *path); struct btrfs_path *path);
int create_free_space_inode(struct btrfs_trans_handle *trans, int create_free_space_inode(struct btrfs_trans_handle *trans,
......
...@@ -107,8 +107,6 @@ static const struct address_space_operations btrfs_aops; ...@@ -107,8 +107,6 @@ static const struct address_space_operations btrfs_aops;
static const struct file_operations btrfs_dir_file_operations; static const struct file_operations btrfs_dir_file_operations;
static struct kmem_cache *btrfs_inode_cachep; 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_setsize(struct inode *inode, struct iattr *attr);
static int btrfs_truncate(struct inode *inode, bool skip_writeback); static int btrfs_truncate(struct inode *inode, bool skip_writeback);
...@@ -8924,8 +8922,6 @@ void __cold btrfs_destroy_cachep(void) ...@@ -8924,8 +8922,6 @@ void __cold btrfs_destroy_cachep(void)
rcu_barrier(); rcu_barrier();
bioset_exit(&btrfs_dio_bioset); bioset_exit(&btrfs_dio_bioset);
kmem_cache_destroy(btrfs_inode_cachep); 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) int __init btrfs_init_cachep(void)
...@@ -8937,18 +8933,6 @@ int __init btrfs_init_cachep(void) ...@@ -8937,18 +8933,6 @@ int __init btrfs_init_cachep(void)
if (!btrfs_inode_cachep) if (!btrfs_inode_cachep)
goto fail; 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, if (bioset_init(&btrfs_dio_bioset, BIO_POOL_SIZE,
offsetof(struct btrfs_dio_private, bio), offsetof(struct btrfs_dio_private, bio),
BIOSET_NEED_BVECS)) BIOSET_NEED_BVECS))
......
...@@ -2747,10 +2747,14 @@ static int __init init_btrfs_fs(void) ...@@ -2747,10 +2747,14 @@ static int __init init_btrfs_fs(void)
if (err) if (err)
goto free_transaction; goto free_transaction;
err = extent_state_init_cachep(); err = btrfs_free_space_init();
if (err) if (err)
goto free_ctree; goto free_ctree;
err = extent_state_init_cachep();
if (err)
goto free_free_space;
err = extent_buffer_init_cachep(); err = extent_buffer_init_cachep();
if (err) if (err)
goto free_extent_cachep; goto free_extent_cachep;
...@@ -2819,6 +2823,8 @@ static int __init init_btrfs_fs(void) ...@@ -2819,6 +2823,8 @@ static int __init init_btrfs_fs(void)
extent_buffer_free_cachep(); extent_buffer_free_cachep();
free_extent_cachep: free_extent_cachep:
extent_state_free_cachep(); extent_state_free_cachep();
free_free_space:
btrfs_free_space_exit();
free_ctree: free_ctree:
btrfs_ctree_exit(); btrfs_ctree_exit();
free_transaction: free_transaction:
...@@ -2834,6 +2840,7 @@ static int __init init_btrfs_fs(void) ...@@ -2834,6 +2840,7 @@ static int __init init_btrfs_fs(void)
static void __exit exit_btrfs_fs(void) static void __exit exit_btrfs_fs(void)
{ {
btrfs_free_space_exit();
btrfs_ctree_exit(); btrfs_ctree_exit();
btrfs_transaction_exit(); btrfs_transaction_exit();
btrfs_destroy_cachep(); btrfs_destroy_cachep();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment