]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cachefiles: Add auxiliary data trace
authorDavid Howells <dhowells@redhat.com>
Mon, 16 Dec 2024 20:41:06 +0000 (20:41 +0000)
committerChristian Brauner <brauner@kernel.org>
Fri, 20 Dec 2024 21:34:05 +0000 (22:34 +0100)
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: David 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: Christian Brauner <brauner@kernel.org>
fs/cachefiles/xattr.c
include/trace/events/cachefiles.h

index 7c6f260a3be56712a0a6a3381c8712b8718c9086..52383b1d0ba63d4a09413177d8c0d841b5b5b43c 100644 (file)
@@ -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;
index 74114c261bcdcab1a6881e0e967b1369d7462e4a..a743b2a35ea7001447b3e05d41539cb88013bc7f 100644 (file)
@@ -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,