bcachefs: btree_bkey_cached_common->cached
authorKent Overstreet <kent.overstreet@linux.dev>
Wed, 31 Aug 2022 22:53:42 +0000 (18:53 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:40 +0000 (17:09 -0400)
Add a type descriptor to btree_bkey_cached_common - there's no reason
not to since we've got padding that was otherwise unused, and this is a
nice cleanup (and helpful in later patches).

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

index e76907af09f19da0fdbf337ad30cf690859b20f0..9c39027513b080ed80a6546ee4de203cd7acc6dd 100644 (file)
@@ -3021,8 +3021,7 @@ void bch2_trans_exit(struct btree_trans *trans)
 
 static void __maybe_unused
 bch2_btree_path_node_to_text(struct printbuf *out,
-                            struct btree_bkey_cached_common *b,
-                            bool cached)
+                            struct btree_bkey_cached_common *b)
 {
        struct six_lock_count c = six_lock_counts(&b->lock);
        struct task_struct *owner;
@@ -3035,7 +3034,7 @@ bch2_btree_path_node_to_text(struct printbuf *out,
 
        prt_printf(out, "    l=%u %s:",
               b->level, bch2_btree_ids[b->btree_id]);
-       bch2_bpos_to_text(out, btree_node_pos(b, cached));
+       bch2_bpos_to_text(out, btree_node_pos(b));
 
        prt_printf(out, "    locks %u:%u:%u held by pid %u",
                   c.n[0], c.n[1], c.n[2], pid);
@@ -3068,7 +3067,7 @@ void bch2_btree_trans_to_text(struct printbuf *out, struct btree_trans *trans)
                            !IS_ERR_OR_NULL(b = (void *) READ_ONCE(path->l[l].b))) {
                                prt_printf(out, "    %c l=%u ",
                                           lock_types[btree_node_locked_type(path, l)], l);
-                               bch2_btree_path_node_to_text(out, b, path->cached);
+                               bch2_btree_path_node_to_text(out, b);
                                prt_printf(out, "\n");
                        }
                }
@@ -3086,7 +3085,7 @@ void bch2_btree_trans_to_text(struct printbuf *out, struct btree_trans *trans)
                bch2_bpos_to_text(out, trans->locking_pos);
 
                prt_printf(out, " node ");
-               bch2_btree_path_node_to_text(out, b, path->cached);
+               bch2_btree_path_node_to_text(out, b);
                prt_printf(out, "\n");
        }
 }
index 94979b1a4912ce67c82ee73ec4e9dabba3e3fd24..517b9861c01c4a9f7f2cf0aa153a8f2b80b40f58 100644 (file)
@@ -204,6 +204,7 @@ bkey_cached_alloc(struct btree_trans *trans,
                INIT_LIST_HEAD(&ck->list);
                __six_lock_init(&ck->c.lock, "b->c.lock", &bch2_btree_node_lock_key);
                lockdep_set_novalidate_class(&ck->c.lock);
+               ck->c.cached = true;
                BUG_ON(!six_trylock_intent(&ck->c.lock));
                BUG_ON(!six_trylock_write(&ck->c.lock));
                return ck;
index 158cb7ac64f2849cba72a9a74f89aa1f510d2b65..c73902c170d44ca94e6fa319384110fcd525d8c6 100644 (file)
@@ -144,8 +144,7 @@ int __bch2_btree_node_lock(struct btree_trans *trans,
 
                /* Must lock btree nodes in key order: */
                if (btree_node_locked(linked, level) &&
-                   bpos_cmp(pos, btree_node_pos(&linked->l[level].b->c,
-                                                linked->cached)) <= 0) {
+                   bpos_cmp(pos, btree_node_pos(&linked->l[level].b->c)) <= 0) {
                        reason = 7;
                        goto deadlock;
                }
index 42459a5bf035d5158b0daace975f94ccda01a8db..6d9888e3a96a1be73b78b7058ec9aab71fe8de3a 100644 (file)
@@ -63,6 +63,7 @@ struct btree_bkey_cached_common {
        struct six_lock         lock;
        u8                      level;
        u8                      btree_id;
+       bool                    cached;
 };
 
 struct btree {
@@ -335,10 +336,9 @@ struct bkey_cached {
        struct bkey_i           *k;
 };
 
-static inline struct bpos btree_node_pos(struct btree_bkey_cached_common *b,
-                                        bool cached)
+static inline struct bpos btree_node_pos(struct btree_bkey_cached_common *b)
 {
-       return !cached
+       return !b->cached
                ? container_of(b, struct btree, c)->key.k.p
                : container_of(b, struct bkey_cached, c)->key.pos;
 }