bcachefs: Fix a startup race
authorKent Overstreet <kent.overstreet@gmail.com>
Mon, 5 Apr 2021 05:23:55 +0000 (01:23 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:59 +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_key_cache.c

index 74d982c3402a093fa4c162879de7959b33abc525..0af46335bd005efc2916ae8327174262ebf0c3f6 100644 (file)
@@ -692,17 +692,16 @@ int bch2_fs_btree_key_cache_init(struct btree_key_cache *bc)
        struct bch_fs *c = container_of(bc, struct bch_fs, btree_key_cache);
        int ret;
 
-       bc->shrink.seeks                = 1;
-       bc->shrink.count_objects        = bch2_btree_key_cache_count;
-       bc->shrink.scan_objects         = bch2_btree_key_cache_scan;
-
-       ret =   register_shrinker(&bc->shrink, "%s/btree_key_cache", c->name) ?:
-               rhashtable_init(&bc->table, &bch2_btree_key_cache_params);
+       ret = rhashtable_init(&bc->table, &bch2_btree_key_cache_params);
        if (ret)
                return ret;
 
        bc->table_init_done = true;
-       return 0;
+
+       bc->shrink.seeks                = 1;
+       bc->shrink.count_objects        = bch2_btree_key_cache_count;
+       bc->shrink.scan_objects         = bch2_btree_key_cache_scan;
+       return register_shrinker(&bc->shrink, "%s/btree_key_cache", c->name);
 }
 
 void bch2_btree_key_cache_to_text(struct printbuf *out, struct btree_key_cache *c)