fs: dlm: initial support for tracepoints
authorAlexander Aring <aahringo@redhat.com>
Tue, 2 Nov 2021 19:17:15 +0000 (15:17 -0400)
committerDavid Teigland <teigland@redhat.com>
Tue, 2 Nov 2021 19:39:20 +0000 (14:39 -0500)
commitf1d3b8f91d965c4fd900ac5dd06240cc9df0c7a7
tree5457b9004b866a1e7ffeb57ff011db5a5f353d81
parent2f05ec4327ffaa34877de67fc5bb5eb3ab3767f0
fs: dlm: initial support for tracepoints

This patch adds initial support for dlm tracepoints. It will introduce
tracepoints to dlm main functionality dlm_lock()/dlm_unlock() and their
complete ast() callback or blocking bast() callback.

The lock/unlock functionality has a start and end tracepoint, this is
because there exists a race in case if would have a tracepoint at the
end position only the complete/blocking callbacks could occur before. To
work with eBPF tracing and using their lookup hash functionality there
could be problems that an entry was not inserted yet. However use the
start functionality for hash insert and check again in end functionality
if there was an dlm internal error so there is no ast callback. In further
it might also that locks with local masters will occur those callbacks
immediately so we must have such functionality.

I did not make everything accessible yet, although it seems eBPF can be
used to access a lot of internal datastructures if it's aware of the
struct definitions of the running kernel instance. We still can change
it, if you do eBPF experiments e.g. time measurements between lock and
callback functionality you can simple use the local lkb_id field as hash
value in combination with the lockspace id if you have multiple
lockspaces. Otherwise you can simple use trace-cmd for some functionality,
e.g. `trace-cmd record -e dlm` and `trace-cmd report` afterwards.

Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
fs/dlm/ast.c
fs/dlm/lock.c
fs/dlm/main.c
include/trace/events/dlm.h [new file with mode: 0644]