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

Reply via email to