On Tue, 2022-01-18 at 13:54 +0000, David Howells wrote:
> Add a tracepoint to log failure to apply an active mark to a file in
> addition to tracing successfully setting and unsetting the mark.
> 
> Also include the backing file inode number in the message logged to dmesg.
> 
> Signed-off-by: David Howells <dhowe...@redhat.com>
> cc: linux-cachefs@redhat.com
> ---
> 
>  fs/cachefiles/namei.c             |    4 +++-
>  include/trace/events/cachefiles.h |   21 +++++++++++++++++++++
>  2 files changed, 24 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/cachefiles/namei.c b/fs/cachefiles/namei.c
> index 52c9f0864a87..f256c8aff7bb 100644
> --- a/fs/cachefiles/namei.c
> +++ b/fs/cachefiles/namei.c
> @@ -25,7 +25,9 @@ static bool __cachefiles_mark_inode_in_use(struct 
> cachefiles_object *object,
>               trace_cachefiles_mark_active(object, inode);
>               can_use = true;
>       } else {
> -             pr_notice("cachefiles: Inode already in use: %pd\n", dentry);
> +             trace_cachefiles_mark_failed(object, inode);
> +             pr_notice("cachefiles: Inode already in use: %pd (B=%lx)\n",
> +                       dentry, inode->i_ino);
>       }
>  
>       return can_use;
> diff --git a/include/trace/events/cachefiles.h 
> b/include/trace/events/cachefiles.h
> index 093c4acb7a3a..c6f5aa74db89 100644
> --- a/include/trace/events/cachefiles.h
> +++ b/include/trace/events/cachefiles.h
> @@ -573,6 +573,27 @@ TRACE_EVENT(cachefiles_mark_active,
>                     __entry->obj, __entry->inode)
>           );
>  
> +TRACE_EVENT(cachefiles_mark_failed,
> +         TP_PROTO(struct cachefiles_object *obj,
> +                  struct inode *inode),
> +
> +         TP_ARGS(obj, inode),
> +
> +         /* Note that obj may be NULL */
> +         TP_STRUCT__entry(
> +                 __field(unsigned int,               obj             )
> +                 __field(ino_t,                      inode           )
> +                          ),
> +
> +         TP_fast_assign(
> +                 __entry->obj        = obj ? obj->debug_id : 0;
> +                 __entry->inode      = inode->i_ino;
> +                        ),
> +
> +         TP_printk("o=%08x B=%lx",
> +                   __entry->obj, __entry->inode)
> +         );
> +
>  TRACE_EVENT(cachefiles_mark_inactive,
>           TP_PROTO(struct cachefiles_object *obj,
>                    struct inode *inode),
> 
> 

Reviewed-by: Jeff Layton <jlay...@kernel.org>

--
Linux-cachefs mailing list
Linux-cachefs@redhat.com
https://listman.redhat.com/mailman/listinfo/linux-cachefs

Reply via email to