diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2022-08-27 12:11:18 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2022-09-18 13:47:42 -0400 |
commit | a112689eedfa2dd4395eef0ea87a42bdc12b78f5 (patch) | |
tree | bceec6ace7a438515ea0351581314722f98c4837 | |
parent | 05de638377269b50dfd31d4009543025772e1508 (diff) |
bcachefs: Improve btree_node_relock_fail tracepoint
It now prints the error name when the btree node is an error pointer;
also, don't trace failures when the the btree node is
BCH_ERR_no_btree_node_up.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r-- | fs/bcachefs/btree_locking.c | 3 | ||||
-rw-r--r-- | include/trace/events/bcachefs.h | 29 |
2 files changed, 19 insertions, 13 deletions
diff --git a/fs/bcachefs/btree_locking.c b/fs/bcachefs/btree_locking.c index ff51f4f85e69..21bdc4924089 100644 --- a/fs/bcachefs/btree_locking.c +++ b/fs/bcachefs/btree_locking.c @@ -222,7 +222,8 @@ bool __bch2_btree_node_relock(struct btree_trans *trans, } fail: if (b != ERR_PTR(-BCH_ERR_no_btree_node_cached) && - b != ERR_PTR(-BCH_ERR_no_btree_node_init)) + b != ERR_PTR(-BCH_ERR_no_btree_node_init) && + b != ERR_PTR(-BCH_ERR_no_btree_node_up)) trace_btree_node_relock_fail(trans, _RET_IP_, path, level); return false; } diff --git a/include/trace/events/bcachefs.h b/include/trace/events/bcachefs.h index 0652b1d6506b..74e9cb4ba284 100644 --- a/include/trace/events/bcachefs.h +++ b/include/trace/events/bcachefs.h @@ -323,7 +323,7 @@ TRACE_EVENT(btree_reserve_get_fail, TP_ARGS(trans_fn, caller_ip, required), TP_STRUCT__entry( - __array(char, trans_fn, 24 ) + __array(char, trans_fn, 32 ) __field(unsigned long, caller_ip ) __field(size_t, required ) ), @@ -393,26 +393,31 @@ TRACE_EVENT(btree_node_relock_fail, TP_ARGS(trans, caller_ip, path, level), TP_STRUCT__entry( - __array(char, trans_fn, 24 ) + __array(char, trans_fn, 32 ) __field(unsigned long, caller_ip ) __field(u8, btree_id ) TRACE_BPOS_entries(pos) - __field(unsigned long, node ) + __array(char, node, 24 ) __field(u32, iter_lock_seq ) __field(u32, node_lock_seq ) ), TP_fast_assign( + struct btree *b = btree_path_node(path, level); + strlcpy(__entry->trans_fn, trans->fn, sizeof(__entry->trans_fn)); __entry->caller_ip = caller_ip; __entry->btree_id = path->btree_id; TRACE_BPOS_assign(pos, path->pos); - __entry->node = (unsigned long) btree_path_node(path, level); + if (IS_ERR(b)) + strscpy(__entry->node, bch2_err_str(PTR_ERR(b)), sizeof(__entry->node)); + else + scnprintf(__entry->node, sizeof(__entry->node), "%px", b); __entry->iter_lock_seq = path->l[level].lock_seq; __entry->node_lock_seq = is_btree_node(path, level) ? path->l[level].b->c.lock.state.seq : 0; ), - TP_printk("%s %pS btree %s pos %llu:%llu:%u, node %lu iter seq %u lock seq %u", + TP_printk("%s %pS btree %s pos %llu:%llu:%u, node %s iter seq %u lock seq %u", __entry->trans_fn, (void *) __entry->caller_ip, bch2_btree_ids[__entry->btree_id], @@ -432,7 +437,7 @@ TRACE_EVENT(btree_node_upgrade_fail, TP_ARGS(trans, caller_ip, path, level), TP_STRUCT__entry( - __array(char, trans_fn, 24 ) + __array(char, trans_fn, 32 ) __field(unsigned long, caller_ip ) __field(u8, btree_id ) TRACE_BPOS_entries(pos) @@ -727,7 +732,7 @@ DECLARE_EVENT_CLASS(transaction_event, TP_ARGS(trans, caller_ip), TP_STRUCT__entry( - __array(char, trans_fn, 24 ) + __array(char, trans_fn, 32 ) __field(unsigned long, caller_ip ) ), @@ -812,7 +817,7 @@ DECLARE_EVENT_CLASS(transaction_restart_iter, TP_ARGS(trans, caller_ip, path), TP_STRUCT__entry( - __array(char, trans_fn, 24 ) + __array(char, trans_fn, 32 ) __field(unsigned long, caller_ip ) __field(u8, btree_id ) TRACE_BPOS_entries(pos) @@ -942,7 +947,7 @@ TRACE_EVENT(trans_restart_would_deadlock, have, want, want_pos), TP_STRUCT__entry( - __array(char, trans_fn, 24 ) + __array(char, trans_fn, 32 ) __field(unsigned long, caller_ip ) __field(u8, in_traverse_all ) __field(u8, reason ) @@ -989,7 +994,7 @@ TRACE_EVENT(trans_restart_would_deadlock_write, TP_ARGS(trans), TP_STRUCT__entry( - __array(char, trans_fn, 24 ) + __array(char, trans_fn, 32 ) ), TP_fast_assign( @@ -1006,7 +1011,7 @@ TRACE_EVENT(trans_restart_mem_realloced, TP_ARGS(trans, caller_ip, bytes), TP_STRUCT__entry( - __array(char, trans_fn, 24 ) + __array(char, trans_fn, 32 ) __field(unsigned long, caller_ip ) __field(unsigned long, bytes ) ), @@ -1032,7 +1037,7 @@ TRACE_EVENT(trans_restart_key_cache_key_realloced, TP_ARGS(trans, caller_ip, path, old_u64s, new_u64s), TP_STRUCT__entry( - __array(char, trans_fn, 24 ) + __array(char, trans_fn, 32 ) __field(unsigned long, caller_ip ) __field(enum btree_id, btree_id ) TRACE_BPOS_entries(pos) |