From: Qu Wenruo <wqu@suse.com>
To: Josef Bacik <josef@toxicpanda.com>,
linux-btrfs@vger.kernel.org, kernel-team@fb.com
Subject: Re: [PATCH 15/17] btrfs: move free space cachep's out of ctree.h
Date: Thu, 15 Sep 2022 17:27:53 +0800 [thread overview]
Message-ID: <bb59552f-85ec-5172-bb6d-f3a76febd491@suse.com> (raw)
In-Reply-To: <d74e617ece68c21850260393cdce86ad5ae33ee9.1663167824.git.josef@toxicpanda.com>
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();
next prev parent reply other threads:[~2022-09-15 9:28 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-14 15:06 [PATCH 00/17] btrfs: initial ctree.h cleanups, simple stuff Josef Bacik
2022-09-14 15:06 ` [PATCH 01/17] btrfs: remove set/clear_pending_info helpers Josef Bacik
2022-09-15 9:03 ` Qu Wenruo
2022-09-15 14:11 ` Johannes Thumshirn
2022-10-07 16:51 ` David Sterba
2022-09-14 15:06 ` [PATCH 02/17] btrfs: remove BTRFS_TOTAL_BYTES_PINNED_BATCH Josef Bacik
2022-09-15 9:03 ` Qu Wenruo
2022-09-15 14:11 ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 03/17] btrfs: remove BTRFS_IOPRIO_READA Josef Bacik
2022-09-15 9:03 ` Qu Wenruo
2022-09-15 14:12 ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 04/17] btrfs: move btrfs on disk definitions out of ctree.h Josef Bacik
2022-09-15 9:07 ` Qu Wenruo
2022-10-07 17:07 ` David Sterba
2022-10-07 23:50 ` Qu Wenruo
2022-09-14 15:06 ` [PATCH 05/17] btrfs: move btrfs_get_block_group helper out of disk-io.h Josef Bacik
2022-09-15 9:10 ` Qu Wenruo
2022-09-15 14:14 ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 06/17] btrfs: move maximum limits to btrfs_tree.h Josef Bacik
2022-09-15 9:10 ` Qu Wenruo
2022-09-15 14:15 ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 07/17] btrfs: move BTRFS_MAX_MIRRORS into scrub.c Josef Bacik
2022-09-15 9:11 ` Qu Wenruo
2022-09-15 14:16 ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 08/17] btrfs: move discard stat defs to free-space-cache.h Josef Bacik
2022-09-15 9:13 ` Qu Wenruo
2022-09-15 14:18 ` Johannes Thumshirn
2022-10-07 17:17 ` David Sterba
2022-10-07 17:16 ` David Sterba
2022-09-14 15:06 ` [PATCH 09/17] btrfs: move btrfs_chunk_item_size out of ctree.h Josef Bacik
2022-09-15 9:14 ` Qu Wenruo
2022-10-07 17:23 ` David Sterba
2022-09-15 14:19 ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 10/17] btrfs: move btrfs_should_fragment_free_space into block-group.c Josef Bacik
2022-09-15 9:16 ` Qu Wenruo
2022-09-15 14:21 ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 11/17] btrfs: move flush related definitions to space-info.h Josef Bacik
2022-09-15 9:21 ` Qu Wenruo
2022-10-07 17:28 ` David Sterba
2022-09-15 14:21 ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 12/17] btrfs: move btrfs_print_data_csum_error into inode.c Josef Bacik
2022-09-15 9:22 ` Qu Wenruo
2022-10-07 17:31 ` David Sterba
2022-09-15 14:23 ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 13/17] btrfs: move trans_handle_cachep out of ctree.h Josef Bacik
2022-09-15 9:23 ` Qu Wenruo
2022-09-15 14:24 ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 14/17] btrfs: move btrfs_path_cachep " Josef Bacik
2022-09-15 9:27 ` Qu Wenruo
2022-09-15 14:27 ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 15/17] btrfs: move free space cachep's " Josef Bacik
2022-09-15 9:27 ` Qu Wenruo [this message]
2022-09-15 14:27 ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 16/17] btrfs: move btrfs_next_old_item into ctree.c Josef Bacik
2022-09-15 9:29 ` Qu Wenruo
2022-09-15 14:29 ` Johannes Thumshirn
2022-09-14 15:06 ` [PATCH 17/17] btrfs: move the btrfs_verity_descriptor_item defs up in ctree.h Josef Bacik
2022-09-15 9:30 ` Qu Wenruo
2022-09-15 14:30 ` Johannes Thumshirn
2022-09-15 9:47 ` [PATCH 00/17] btrfs: initial ctree.h cleanups, simple stuff Qu Wenruo
2022-10-07 17:51 ` David Sterba
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bb59552f-85ec-5172-bb6d-f3a76febd491@suse.com \
--to=wqu@suse.com \
--cc=josef@toxicpanda.com \
--cc=kernel-team@fb.com \
--cc=linux-btrfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox