Improve the cachefiles_lookup tracepoint: - Don't display the dentry address, since it's going to get hashed. - Do display any error code. - Work out the inode in the tracepoint rather than in the caller so that the logic is conditional on the tracepoint being enabled. Signed-off-by: David Howells <dhowells@xxxxxxxxxx> --- fs/cachefiles/namei.c | 4 +--- include/trace/events/cachefiles.h | 18 +++++++++--------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/fs/cachefiles/namei.c b/fs/cachefiles/namei.c index 10b6d571eda8..b5a0aec529af 100644 --- a/fs/cachefiles/namei.c +++ b/fs/cachefiles/namei.c @@ -340,14 +340,12 @@ static int cachefiles_walk_to_file(struct cachefiles_cache *cache, inode_lock_nested(dinode, I_MUTEX_PARENT); dentry = lookup_one_len(object->d_name, fan, object->d_name_len); + trace_cachefiles_lookup(object, dentry); if (IS_ERR(dentry)) { - trace_cachefiles_lookup(object, dentry, NULL); ret = PTR_ERR(dentry); goto error; } - trace_cachefiles_lookup(object, dentry, d_backing_inode(dentry)); - if (d_is_negative(dentry)) { /* This element of the path doesn't exist, so we can release * any readers in the certain knowledge that there's nothing diff --git a/include/trace/events/cachefiles.h b/include/trace/events/cachefiles.h index bd0b5bbd3889..87681dd957ec 100644 --- a/include/trace/events/cachefiles.h +++ b/include/trace/events/cachefiles.h @@ -98,25 +98,25 @@ TRACE_EVENT(cachefiles_ref, TRACE_EVENT(cachefiles_lookup, TP_PROTO(struct cachefiles_object *obj, - struct dentry *de, - struct inode *inode), + struct dentry *de), - TP_ARGS(obj, de, inode), + TP_ARGS(obj, de), TP_STRUCT__entry( __field(unsigned int, obj ) - __field(struct dentry *, de ) - __field(struct inode *, inode ) + __field(short, error ) + __field(unsigned long, ino ) ), TP_fast_assign( __entry->obj = obj->fscache.debug_id; - __entry->de = de; - __entry->inode = inode; + __entry->ino = (!IS_ERR(de) && d_backing_inode(de) ? + d_backing_inode(de)->i_ino : 0); + __entry->error = IS_ERR(de) ? PTR_ERR(de) : 0; ), - TP_printk("o=%08x d=%p i=%p", - __entry->obj, __entry->de, __entry->inode) + TP_printk("o=%08x i=%lx e=%d", + __entry->obj, __entry->ino, __entry->error) ); TRACE_EVENT(cachefiles_create,