On Tue 07-04-26 09:21:15, Jeff Layton wrote:
> ...mostly to show the LEASE_BREAK_* flags.
> 
> Signed-off-by: Jeff Layton <[email protected]>

OK. Feel free to add:

Reviewed-by: Jan Kara <[email protected]>

                                                                Honza

> ---
>  fs/locks.c                      |  2 ++
>  include/trace/events/filelock.h | 33 +++++++++++++++++++++++++++++++++
>  2 files changed, 35 insertions(+)
> 
> diff --git a/fs/locks.c b/fs/locks.c
> index dafa0752fdce..5af6dca2d46c 100644
> --- a/fs/locks.c
> +++ b/fs/locks.c
> @@ -1654,6 +1654,8 @@ int __break_lease(struct inode *inode, unsigned int 
> flags)
>       bool want_write = !(flags & LEASE_BREAK_OPEN_RDONLY);
>       int error = 0;
>  
> +     trace_break_lease(inode, flags);
> +
>       if (flags & LEASE_BREAK_LEASE)
>               type = FL_LEASE;
>       else if (flags & LEASE_BREAK_DELEG)
> diff --git a/include/trace/events/filelock.h b/include/trace/events/filelock.h
> index ef4bb0afb86a..fff0ee2d452d 100644
> --- a/include/trace/events/filelock.h
> +++ b/include/trace/events/filelock.h
> @@ -120,6 +120,39 @@ DEFINE_EVENT(filelock_lock, flock_lock_inode,
>               TP_PROTO(struct inode *inode, struct file_lock *fl, int ret),
>               TP_ARGS(inode, fl, ret));
>  
> +#define show_lease_break_flags(val)                                  \
> +     __print_flags(val, "|",                                         \
> +             { LEASE_BREAK_LEASE,            "LEASE" },              \
> +             { LEASE_BREAK_DELEG,            "DELEG" },              \
> +             { LEASE_BREAK_LAYOUT,           "LAYOUT" },             \
> +             { LEASE_BREAK_NONBLOCK,         "NONBLOCK" },           \
> +             { LEASE_BREAK_OPEN_RDONLY,      "OPEN_RDONLY" },        \
> +             { LEASE_BREAK_DIR_CREATE,       "DIR_CREATE" },         \
> +             { LEASE_BREAK_DIR_DELETE,       "DIR_DELETE" },         \
> +             { LEASE_BREAK_DIR_RENAME,       "DIR_RENAME" })
> +
> +TRACE_EVENT(break_lease,
> +     TP_PROTO(struct inode *inode, unsigned int flags),
> +
> +     TP_ARGS(inode, flags),
> +
> +     TP_STRUCT__entry(
> +             __field(unsigned long, i_ino)
> +             __field(dev_t, s_dev)
> +             __field(unsigned int, flags)
> +     ),
> +
> +     TP_fast_assign(
> +             __entry->s_dev = inode->i_sb->s_dev;
> +             __entry->i_ino = inode->i_ino;
> +             __entry->flags = flags;
> +     ),
> +
> +     TP_printk("dev=0x%x:0x%x ino=0x%lx flags=%s",
> +               MAJOR(__entry->s_dev), MINOR(__entry->s_dev),
> +               __entry->i_ino, show_lease_break_flags(__entry->flags))
> +);
> +
>  DECLARE_EVENT_CLASS(filelock_lease,
>       TP_PROTO(struct inode *inode, struct file_lease *fl),
>  
> 
> -- 
> 2.53.0
> 
-- 
Jan Kara <[email protected]>
SUSE Labs, CR

Reply via email to