Message ID | 164251404666.3435901.17331742792401482190.stgit@warthog.procyon.org.uk |
---|---|
State | New |
Headers | show |
Series | [01/11] fscache: Fix the volume collision wait condition | expand |
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 <dhowells@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 <jlayton@kernel.org>
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),
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 <dhowells@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(-)