Re: [PATCH 02/24] filelock: add a tracepoint to start of break_lease()

From: Jan Kara

Date: Wed Apr 08 2026 - 09:47:37 EST


On Tue 07-04-26 09:21:15, Jeff Layton wrote:
> ...mostly to show the LEASE_BREAK_* flags.
>
> Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>

OK. Feel free to add:

Reviewed-by: Jan Kara <jack@xxxxxxx>

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 <jack@xxxxxxxx>
SUSE Labs, CR