]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/btree_key_cache.c
Update bcachefs sources to 7c0fe6f104 bcachefs: Fix bch2_fsck_ask_yn()
[bcachefs-tools-debian] / libbcachefs / btree_key_cache.c
index 645fa994bdc6f54c8c74cce5f1a760a9a80574af..aafb54de937ef26371ab5c6ee396acc891814800 100644 (file)
@@ -265,15 +265,8 @@ bkey_cached_alloc(struct btree_trans *trans, struct btree_path *path,
                return ck;
        }
 
-       ck = kmem_cache_zalloc(bch2_key_cache, GFP_NOWAIT|__GFP_NOWARN);
-       if (likely(ck))
-               goto init;
-
-       bch2_trans_unlock(trans);
-
-       ck = kmem_cache_zalloc(bch2_key_cache, GFP_KERNEL);
-
-       ret = bch2_trans_relock(trans);
+       ck = allocate_dropping_locks(trans, ret,
+                       kmem_cache_zalloc(bch2_key_cache, _gfp));
        if (ret) {
                kmem_cache_free(bch2_key_cache, ck);
                return ERR_PTR(ret);
@@ -281,7 +274,7 @@ bkey_cached_alloc(struct btree_trans *trans, struct btree_path *path,
 
        if (!ck)
                return NULL;
-init:
+
        INIT_LIST_HEAD(&ck->list);
        bch2_btree_lock_init(&ck->c, pcpu_readers ? SIX_LOCK_INIT_PCPU : 0);