]> www.infradead.org Git - users/willy/xarray.git/commitdiff
bcachefs: kill key cache arg to bch2_assert_pos_locked()
authorKent Overstreet <kent.overstreet@linux.dev>
Sat, 8 Jun 2024 20:46:58 +0000 (16:46 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 14 Jul 2024 23:00:15 +0000 (19:00 -0400)
this is an internal implementation detail - and we're improving key
cache coherency

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

index 849a397bb919048aab6a2fc2fdef285ba74523e3..756a438f46a932a12334441f8b64bea1c2acc07f 100644 (file)
@@ -325,7 +325,7 @@ out:
 }
 
 void bch2_assert_pos_locked(struct btree_trans *trans, enum btree_id id,
-                           struct bpos pos, bool key_cache)
+                           struct bpos pos)
 {
        bch2_trans_verify_not_unlocked(trans);
 
@@ -336,19 +336,12 @@ void bch2_assert_pos_locked(struct btree_trans *trans, enum btree_id id,
        btree_trans_sort_paths(trans);
 
        trans_for_each_path_inorder(trans, path, iter) {
-               int cmp = cmp_int(path->btree_id, id) ?:
-                       cmp_int(path->cached, key_cache);
-
-               if (cmp > 0)
-                       break;
-               if (cmp < 0)
-                       continue;
-
-               if (!btree_node_locked(path, 0) ||
+               if (path->btree_id != id ||
+                   !btree_node_locked(path, 0) ||
                    !path->should_be_locked)
                        continue;
 
-               if (!key_cache) {
+               if (!path->cached) {
                        if (bkey_ge(pos, path->l[0].b->data->min_key) &&
                            bkey_le(pos, path->l[0].b->key.k.p))
                                return;
@@ -361,9 +354,7 @@ void bch2_assert_pos_locked(struct btree_trans *trans, enum btree_id id,
        bch2_dump_trans_paths_updates(trans);
        bch2_bpos_to_text(&buf, pos);
 
-       panic("not locked: %s %s%s\n",
-             bch2_btree_id_str(id), buf.buf,
-             key_cache ? " cached" : "");
+       panic("not locked: %s %s\n", bch2_btree_id_str(id), buf.buf);
 }
 
 #else
@@ -1482,6 +1473,14 @@ static void bch2_btree_path_to_text_short(struct printbuf *out, struct btree_tra
                   path->level);
        bch2_bpos_to_text(out, path->pos);
 
+       if (!path->cached && btree_node_locked(path, path->level)) {
+               prt_char(out, ' ');
+               struct btree *b = path_l(path)->b;
+               bch2_bpos_to_text(out, b->data->min_key);
+               prt_char(out, '-');
+               bch2_bpos_to_text(out, b->key.k.p);
+       }
+
 #ifdef TRACK_PATH_ALLOCATED
        prt_printf(out, " %pS", (void *) path->ip_allocated);
 #endif
index bdb3cd2ef98a231d1b4fd259afb197f4114628a2..c7725865309c093647a1a7ade9dd0dfc6a458e0d 100644 (file)
@@ -268,12 +268,11 @@ static inline int bch2_trans_mutex_lock(struct btree_trans *trans, struct mutex
 
 #ifdef CONFIG_BCACHEFS_DEBUG
 void bch2_trans_verify_paths(struct btree_trans *);
-void bch2_assert_pos_locked(struct btree_trans *, enum btree_id,
-                           struct bpos, bool);
+void bch2_assert_pos_locked(struct btree_trans *, enum btree_id, struct bpos);
 #else
 static inline void bch2_trans_verify_paths(struct btree_trans *trans) {}
 static inline void bch2_assert_pos_locked(struct btree_trans *trans, enum btree_id id,
-                                         struct bpos pos, bool key_cache) {}
+                                         struct bpos pos) {}
 #endif
 
 void bch2_btree_path_fix_key_modified(struct btree_trans *trans,
index 3dd60aa3c3de9a987cc29ee737a15d421becfc40..3483d34c3be1fb881996e3f30fc4ebf84e81d91f 100644 (file)
@@ -58,9 +58,7 @@ void bch2_inode_update_after_write(struct btree_trans *trans,
 
        BUG_ON(bi->bi_inum != inode->v.i_ino);
 
-       bch2_assert_pos_locked(trans, BTREE_ID_inodes,
-                              POS(0, bi->bi_inum),
-                              c->opts.inodes_use_key_cache);
+       bch2_assert_pos_locked(trans, BTREE_ID_inodes, POS(0, bi->bi_inum));
 
        set_nlink(&inode->v, bch2_inode_nlink_get(bi));
        i_uid_write(&inode->v, bi->bi_uid);