bcachefs: bch2_btree_insert_node() no longer uses lock_write_nofail
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 9 Oct 2022 09:04:38 +0000 (05:04 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:43 +0000 (17:09 -0400)
Now that we have an error path plumbed through, there's no need to be
using bch2_btree_node_lock_write_nofail().

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_update.h
fs/bcachefs/btree_update_interior.c
fs/bcachefs/btree_update_leaf.c

index 89941fb8caa06f35f00339e597f5a0bccfe2721c..1c2e7b2b4ed5b01b00b9e61d6bdaf0802bc69c48 100644 (file)
@@ -8,8 +8,8 @@
 struct bch_fs;
 struct btree;
 
-void bch2_btree_node_lock_for_insert(struct btree_trans *, struct btree_path *,
-                                    struct btree *);
+void bch2_btree_node_prep_for_write(struct btree_trans *,
+                                   struct btree_path *, struct btree *);
 bool bch2_btree_bset_insert_key(struct btree_trans *, struct btree_path *,
                                struct btree *, struct btree_node_iter *,
                                struct bkey_i *);
index b0a15757aaea34fb42be71cc3f0495b7d3439392..7619890d9df13accee1b944af139966057721964 100644 (file)
@@ -1695,6 +1695,7 @@ static int bch2_btree_insert_node(struct btree_update *as, struct btree_trans *t
        int old_u64s = le16_to_cpu(btree_bset_last(b)->u64s);
        int old_live_u64s = b->nr.live_u64s;
        int live_u64s_added, u64s_added;
+       int ret;
 
        lockdep_assert_held(&c->gc_lock);
        BUG_ON(!btree_node_intent_locked(path, btree_node_root(c, b)->c.level));
@@ -1705,7 +1706,11 @@ static int bch2_btree_insert_node(struct btree_update *as, struct btree_trans *t
        if (!(local_clock() & 63))
                return btree_trans_restart(trans, BCH_ERR_transaction_restart_split_race);
 
-       bch2_btree_node_lock_for_insert(trans, path, b);
+       ret = bch2_btree_node_lock_write(trans, path, &b->c);
+       if (ret)
+               return ret;
+
+       bch2_btree_node_prep_for_write(trans, path, b);
 
        if (!bch2_btree_node_insert_fits(c, b, bch2_keylist_u64s(keys))) {
                bch2_btree_node_unlock_write(trans, path, b);
index 98030f22ee05c9d3738b76c522e6f87bf8b69bd2..cf4a7093f1e9ce6e86111848f2a771f75d2dd4ef 100644 (file)
@@ -56,9 +56,9 @@ static inline bool same_leaf_as_next(struct btree_trans *trans,
                insert_l(&i[0])->b == insert_l(&i[1])->b;
 }
 
-static inline void bch2_btree_node_prep_for_write(struct btree_trans *trans,
-                                                 struct btree_path *path,
-                                                 struct btree *b)
+inline void bch2_btree_node_prep_for_write(struct btree_trans *trans,
+                                          struct btree_path *path,
+                                          struct btree *b)
 {
        struct bch_fs *c = trans->c;
 
@@ -77,14 +77,6 @@ static inline void bch2_btree_node_prep_for_write(struct btree_trans *trans,
                bch2_btree_init_next(trans, b);
 }
 
-void bch2_btree_node_lock_for_insert(struct btree_trans *trans,
-                                    struct btree_path *path,
-                                    struct btree *b)
-{
-       bch2_btree_node_lock_write_nofail(trans, path, &b->c);
-       bch2_btree_node_prep_for_write(trans, path, b);
-}
-
 /* Inserting into a given leaf node (last stage of insert): */
 
 /* Handle overwrites and do insert, for non extents: */