Unverified Commit 229105e5 authored by David Howells's avatar David Howells Committed by Christian Brauner
Browse files

cachefiles: Add auxiliary data trace



Add a display of the first 8 bytes of the downloaded auxiliary data and of
the on-disk stored auxiliary data as these are used in coherency
management.  In the case of afs, this holds the data version number.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Link: https://lore.kernel.org/r/20241216204124.3752367-17-dhowells@redhat.com


cc: Jeff Layton <jlayton@kernel.org>
cc: netfs@lists.linux.dev
cc: linux-fsdevel@vger.kernel.org
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent bcb33f79
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ int cachefiles_set_object_xattr(struct cachefiles_object *object)
		trace_cachefiles_vfs_error(object, file_inode(file), ret,
					   cachefiles_trace_setxattr_error);
		trace_cachefiles_coherency(object, file_inode(file)->i_ino,
					   be64_to_cpup((__be64 *)buf->data),
					   buf->content,
					   cachefiles_coherency_set_fail);
		if (ret != -ENOMEM)
@@ -85,6 +86,7 @@ int cachefiles_set_object_xattr(struct cachefiles_object *object)
				"Failed to set xattr with error %d", ret);
	} else {
		trace_cachefiles_coherency(object, file_inode(file)->i_ino,
					   be64_to_cpup((__be64 *)buf->data),
					   buf->content,
					   cachefiles_coherency_set_ok);
	}
@@ -126,7 +128,10 @@ int cachefiles_check_auxdata(struct cachefiles_object *object, struct file *file
				object,
				"Failed to read aux with error %zd", xlen);
		why = cachefiles_coherency_check_xattr;
	} else if (buf->type != CACHEFILES_COOKIE_TYPE_DATA) {
		goto out;
	}

	if (buf->type != CACHEFILES_COOKIE_TYPE_DATA) {
		why = cachefiles_coherency_check_type;
	} else if (memcmp(buf->data, p, len) != 0) {
		why = cachefiles_coherency_check_aux;
@@ -141,7 +146,9 @@ int cachefiles_check_auxdata(struct cachefiles_object *object, struct file *file
		ret = 0;
	}

out:
	trace_cachefiles_coherency(object, file_inode(file)->i_ino,
				   be64_to_cpup((__be64 *)buf->data),
				   buf->content, why);
	kfree(buf);
	return ret;
+10 −3
Original line number Diff line number Diff line
@@ -380,10 +380,11 @@ TRACE_EVENT(cachefiles_rename,
TRACE_EVENT(cachefiles_coherency,
	    TP_PROTO(struct cachefiles_object *obj,
		     ino_t ino,
		     u64 disk_aux,
		     enum cachefiles_content content,
		     enum cachefiles_coherency_trace why),

	    TP_ARGS(obj, ino, content, why),
	    TP_ARGS(obj, ino, disk_aux, content, why),

	    /* Note that obj may be NULL */
	    TP_STRUCT__entry(
@@ -391,6 +392,8 @@ TRACE_EVENT(cachefiles_coherency,
		    __field(enum cachefiles_coherency_trace,	why)
		    __field(enum cachefiles_content,		content)
		    __field(u64,				ino)
		    __field(u64,				aux)
		    __field(u64,				disk_aux)
			     ),

	    TP_fast_assign(
@@ -398,13 +401,17 @@ TRACE_EVENT(cachefiles_coherency,
		    __entry->why	= why;
		    __entry->content	= content;
		    __entry->ino	= ino;
		    __entry->aux	= be64_to_cpup((__be64 *)obj->cookie->inline_aux);
		    __entry->disk_aux	= disk_aux;
			   ),

	    TP_printk("o=%08x %s B=%llx c=%u",
	    TP_printk("o=%08x %s B=%llx c=%u aux=%llx dsk=%llx",
		      __entry->obj,
		      __print_symbolic(__entry->why, cachefiles_coherency_traces),
		      __entry->ino,
		      __entry->content)
		      __entry->content,
		      __entry->aux,
		      __entry->disk_aux)
	    );

TRACE_EVENT(cachefiles_vol_coherency,