From: Kent Overstreet Date: Wed, 16 Feb 2022 05:42:34 +0000 (-0500) Subject: bcachefs: Fix slow tracepoints X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=4b59a319ad29815aa8f629513df2c291c2108bf9;p=linux.git bcachefs: Fix slow tracepoints Some of our tracepoints were calling snprintf("pS") - which does symbol table lookups - in TP_fast_assign(), which turns out to be a really bad idea. This was done because perf trace wasn't correctly printing tracepoints that use %pS anymore - but it turns out trace-cmd does handle it correctly. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/trace.h b/fs/bcachefs/trace.h index 5e78c396e24cc..64b7d9364fd91 100644 --- a/fs/bcachefs/trace.h +++ b/fs/bcachefs/trace.h @@ -358,7 +358,7 @@ TRACE_EVENT(btree_node_relock_fail, TP_STRUCT__entry( __array(char, trans_fn, 24 ) - __array(char, caller, 32 ) + __field(unsigned long, caller_ip ) __field(u8, btree_id ) __field(u64, pos_inode ) __field(u64, pos_offset ) @@ -370,7 +370,7 @@ TRACE_EVENT(btree_node_relock_fail, TP_fast_assign( strncpy(__entry->trans_fn, trans_fn, sizeof(__entry->trans_fn)); - snprintf(__entry->caller, sizeof(__entry->caller), "%pS", (void *) caller_ip); + __entry->caller_ip = caller_ip; __entry->btree_id = btree_id; __entry->pos_inode = pos->inode; __entry->pos_offset = pos->offset; @@ -380,9 +380,9 @@ TRACE_EVENT(btree_node_relock_fail, __entry->node_lock_seq = node_lock_seq; ), - TP_printk("%s %s btree %u pos %llu:%llu:%u, node %lu iter seq %u lock seq %u", + TP_printk("%s %pS btree %u pos %llu:%llu:%u, node %lu iter seq %u lock seq %u", __entry->trans_fn, - __entry->caller, + (void *) __entry->caller_ip, __entry->btree_id, __entry->pos_inode, __entry->pos_offset, @@ -673,7 +673,7 @@ DECLARE_EVENT_CLASS(transaction_restart_iter, TP_STRUCT__entry( __array(char, trans_fn, 24 ) - __array(char, caller, 32 ) + __field(unsigned long, caller_ip ) __field(u8, btree_id ) __field(u64, pos_inode ) __field(u64, pos_offset ) @@ -682,16 +682,16 @@ DECLARE_EVENT_CLASS(transaction_restart_iter, TP_fast_assign( strncpy(__entry->trans_fn, trans_fn, sizeof(__entry->trans_fn)); - snprintf(__entry->caller, sizeof(__entry->caller), "%pS", (void *) caller_ip); + __entry->caller_ip = caller_ip; __entry->btree_id = btree_id; __entry->pos_inode = pos->inode; __entry->pos_offset = pos->offset; __entry->pos_snapshot = pos->snapshot; ), - TP_printk("%s %s btree %u pos %llu:%llu:%u", + TP_printk("%s %pS btree %u pos %llu:%llu:%u", __entry->trans_fn, - __entry->caller, + (void *) __entry->caller_ip, __entry->btree_id, __entry->pos_inode, __entry->pos_offset,