• Alexander Aring's avatar
    fs: dlm: initial support for tracepoints · f1d3b8f9
    Alexander Aring authored
    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: default avatarAlexander Aring <aahringo@redhat.com>
    Signed-off-by: default avatarDavid Teigland <teigland@redhat.com>
    f1d3b8f9
lock.c 158 KB