This branch can be fetched from github: https://github.com/adam900710/linux/tree/trace_locking Which is based on v5.1-rc4 tag.
This patchset will introduce the following trace events for corresponding functions: btrfs_tree_lock (sleepable) btrfs_tree_unlock btrfs_tree_read_lock (sleepable) btrfs_tree_read_unlock btrfs_tree_read_unlock_blocking btrfs_set_lock_blocking_read btrfs_set_lock_blocking_write btrfs_clear_lock_blocking_read btrfs_clear_lock_blocking_write btrfs_try_tree_read_lock btrfs_try_tree_write_lock btrfs_tree_read_lock_atomic The two sleepable ones will have extra info like start_ns, end_ns, diff_ns. Those two can be specially useful for tree lock wait time. There is tool to utilize those two events already: https://github.com/adam900710/btrfs-profiler/blob/master/tree_lock_wait.py The non-sleepable can be useful for possible user space based lock leakage/dead lock detector. Changelog: v2: - Hide all ktime_get_ns() call out of trace events So there will be no overhead if trace events are not enabled. v3: - More output for human to take a glance - More trace events for later bcc usage Like lock leakage and deadlock detection. Qu Wenruo (2): btrfs: trace: Introduce trace events for sleepable tree lock btrfs: trace: Introduce trace events for all btrfs tree locking events fs/btrfs/locking.c | 22 +++++++++ include/trace/events/btrfs.h | 86 ++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) -- 2.21.0