]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
bcachefs: btree_trans always has stats
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 24 Dec 2023 04:08:45 +0000 (23:08 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sat, 6 Jan 2024 04:24:19 +0000 (23:24 -0500)
reserve slot 0 for unknown (when we overflow), to avoid some branches

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

index d9a9e84a2a2887778e84c0385250ef1165a53fbc..fa29f00e93507b00c8ae72fc18f7e0839290dbe7 100644 (file)
@@ -1476,9 +1476,6 @@ static void bch2_trans_update_max_paths(struct btree_trans *trans)
        struct printbuf buf = PRINTBUF;
        size_t nr = bitmap_weight(trans->paths_allocated, trans->nr_paths);
 
-       if (!s)
-               return;
-
        bch2_trans_paths_to_text(&buf, trans);
 
        if (!buf.allocation_failure) {
@@ -2781,8 +2778,7 @@ void *__bch2_trans_kmalloc(struct btree_trans *trans, size_t size)
        WARN_ON_ONCE(new_bytes > BTREE_TRANS_MEM_MAX);
 
        struct btree_transaction_stats *s = btree_trans_stats(trans);
-       if (s)
-               s->max_mem = max(s->max_mem, new_bytes);
+       s->max_mem = max(s->max_mem, new_bytes);
 
        new_mem = krealloc(trans->mem, new_bytes, GFP_NOWAIT|__GFP_NOWARN);
        if (unlikely(!new_mem)) {
@@ -2919,13 +2915,11 @@ u32 bch2_trans_begin(struct btree_trans *trans)
        return trans->restart_count;
 }
 
-const char *bch2_btree_transaction_fns[BCH_TRANSACTIONS_NR];
+const char *bch2_btree_transaction_fns[BCH_TRANSACTIONS_NR] = { "(unknown)" };
 
 unsigned bch2_trans_get_fn_idx(const char *fn)
 {
-       unsigned i;
-
-       for (i = 0; i < ARRAY_SIZE(bch2_btree_transaction_fns); i++)
+       for (unsigned i = 0; i < ARRAY_SIZE(bch2_btree_transaction_fns); i++)
                if (!bch2_btree_transaction_fns[i] ||
                    bch2_btree_transaction_fns[i] == fn) {
                        bch2_btree_transaction_fns[i] = fn;
@@ -2933,7 +2927,7 @@ unsigned bch2_trans_get_fn_idx(const char *fn)
                }
 
        pr_warn_once("BCH_TRANSACTIONS_NR not big enough!");
-       return i;
+       return 0;
 }
 
 struct btree_trans *__bch2_trans_get(struct bch_fs *c, unsigned fn_idx)
index 64810ea544c9af6e7818429d0ebed14921cde8b8..cc5500a957a1b3084d005abe8b0893146e354bca 100644 (file)
@@ -122,12 +122,9 @@ static void btree_trans_lock_hold_time_update(struct btree_trans *trans,
                                              struct btree_path *path, unsigned level)
 {
 #ifdef CONFIG_BCACHEFS_LOCK_TIME_STATS
-       struct btree_transaction_stats *s = btree_trans_stats(trans);
-
-       if (s)
-               __bch2_time_stats_update(&s->lock_hold_times,
-                                        path->l[level].lock_taken_time,
-                                        local_clock());
+       __bch2_time_stats_update(&btree_trans_stats(trans)->lock_hold_times,
+                                path->l[level].lock_taken_time,
+                                local_clock());
 #endif
 }
 
index 83aa0fb8ba939412bc7c645eeeb15cb3cdae2962..c3ff365acce9afeae894c69003d247bef9c8e955 100644 (file)
@@ -557,9 +557,7 @@ struct jset_entry *__bch2_trans_jset_entry_alloc(struct btree_trans *trans, unsi
        if (new_top > trans->journal_entries_size) {
                trans->journal_entries_size = roundup_pow_of_two(new_top);
 
-               struct btree_transaction_stats *s = btree_trans_stats(trans);
-               if (s)
-                       s->journal_entries_size = trans->journal_entries_size;
+               btree_trans_stats(trans)->journal_entries_size = trans->journal_entries_size;
        }
 
        struct jset_entry *n =