bcachefs: Factor out bch2_fs_btree_interior_update_init()
authorKent Overstreet <kent.overstreet@gmail.com>
Tue, 26 May 2020 00:35:53 +0000 (20:35 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:40 +0000 (17:08 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_update_interior.c
fs/bcachefs/btree_update_interior.h
fs/bcachefs/super.c

index 28568db5834ab1fc04dc50b5321c5de55ed9e8f8..1867d732afd4fc3b38948445be108861f7a2a620 100644 (file)
@@ -2247,3 +2247,22 @@ size_t bch2_btree_interior_updates_nr_pending(struct bch_fs *c)
 
        return ret;
 }
+
+void bch2_fs_btree_interior_update_exit(struct bch_fs *c)
+{
+       mempool_exit(&c->btree_interior_update_pool);
+       mempool_exit(&c->btree_reserve_pool);
+}
+
+int bch2_fs_btree_interior_update_init(struct bch_fs *c)
+{
+       mutex_init(&c->btree_reserve_cache_lock);
+       INIT_LIST_HEAD(&c->btree_interior_update_list);
+       INIT_LIST_HEAD(&c->btree_interior_updates_unwritten);
+       mutex_init(&c->btree_interior_update_lock);
+
+       return  mempool_init_kmalloc_pool(&c->btree_reserve_pool, 1,
+                                         sizeof(struct btree_reserve)) ?:
+               mempool_init_kmalloc_pool(&c->btree_interior_update_pool, 1,
+                                         sizeof(struct btree_update));
+}
index fb35be00f1bb53eac91b510a2b162e18dd31ee38..5cec87951dc708b9f12485283afea8609fe399f6 100644 (file)
@@ -333,4 +333,7 @@ ssize_t bch2_btree_updates_print(struct bch_fs *, char *);
 
 size_t bch2_btree_interior_updates_nr_pending(struct bch_fs *);
 
+void bch2_fs_btree_interior_update_exit(struct bch_fs *);
+int bch2_fs_btree_interior_update_init(struct bch_fs *);
+
 #endif /* _BCACHEFS_BTREE_UPDATE_INTERIOR_H */
index 165163f3896e5cd9a35ead05681f69a026f0fb3f..4335e0a11c2e37457476d4783508d19f032f7d75 100644 (file)
@@ -476,6 +476,7 @@ static void bch2_fs_free(struct bch_fs *c)
        bch2_fs_ec_exit(c);
        bch2_fs_encryption_exit(c);
        bch2_fs_io_exit(c);
+       bch2_fs_btree_interior_update_exit(c);
        bch2_fs_btree_iter_exit(c);
        bch2_fs_btree_cache_exit(c);
        bch2_fs_journal_exit(&c->journal);
@@ -494,8 +495,6 @@ static void bch2_fs_free(struct bch_fs *c)
        mempool_exit(&c->large_bkey_pool);
        mempool_exit(&c->btree_bounce_pool);
        bioset_exit(&c->btree_bio);
-       mempool_exit(&c->btree_interior_update_pool);
-       mempool_exit(&c->btree_reserve_pool);
        mempool_exit(&c->fill_iter);
        percpu_ref_exit(&c->writes);
        kfree(c->replicas.entries);
@@ -657,11 +656,6 @@ static struct bch_fs *bch2_fs_alloc(struct bch_sb *sb, struct bch_opts opts)
 
        INIT_LIST_HEAD(&c->list);
 
-       INIT_LIST_HEAD(&c->btree_interior_update_list);
-       INIT_LIST_HEAD(&c->btree_interior_updates_unwritten);
-       mutex_init(&c->btree_reserve_cache_lock);
-       mutex_init(&c->btree_interior_update_lock);
-
        mutex_init(&c->usage_scratch_lock);
 
        mutex_init(&c->bio_bounce_pages_lock);
@@ -736,10 +730,6 @@ static struct bch_fs *bch2_fs_alloc(struct bch_sb *sb, struct bch_opts opts)
                                WQ_FREEZABLE|WQ_MEM_RECLAIM|WQ_HIGHPRI, 1)) ||
            percpu_ref_init(&c->writes, bch2_writes_disabled,
                            PERCPU_REF_INIT_DEAD, GFP_KERNEL) ||
-           mempool_init_kmalloc_pool(&c->btree_reserve_pool, 1,
-                                     sizeof(struct btree_reserve)) ||
-           mempool_init_kmalloc_pool(&c->btree_interior_update_pool, 1,
-                                     sizeof(struct btree_update)) ||
            mempool_init_kmalloc_pool(&c->fill_iter, 1, iter_size) ||
            bioset_init(&c->btree_bio, 1,
                        max(offsetof(struct btree_read_bio, bio),
@@ -756,6 +746,7 @@ static struct bch_fs *bch2_fs_alloc(struct bch_sb *sb, struct bch_opts opts)
            bch2_fs_replicas_init(c) ||
            bch2_fs_btree_cache_init(c) ||
            bch2_fs_btree_iter_init(c) ||
+           bch2_fs_btree_interior_update_init(c) ||
            bch2_fs_io_init(c) ||
            bch2_fs_encryption_init(c) ||
            bch2_fs_compress_init(c) ||