Add the cache object debug ID to netfs_read/write tracepoints to make
debugging easier as there's now a direct cross-reference with the
cachefiles tracepoints that only log that debug ID.

Signed-off-by: David Howells <[email protected]>
cc: Paulo Alcantara <[email protected]>
cc: [email protected]
cc: [email protected]
---
 fs/cachefiles/io.c           |  1 +
 fs/netfs/fscache_io.c        |  2 +-
 include/linux/netfs.h        |  3 ++-
 include/trace/events/netfs.h | 27 +++++++++++++++------------
 4 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/fs/cachefiles/io.c b/fs/cachefiles/io.c
index 42265fdcc17e..7e32b1caf6fe 100644
--- a/fs/cachefiles/io.c
+++ b/fs/cachefiles/io.c
@@ -918,6 +918,7 @@ bool cachefiles_begin_operation(struct 
netfs_cache_resources *cres,
                        if (!cres->cache_priv2 && file)
                                cres->cache_priv2 = get_file(file);
                        spin_unlock(&object->lock);
+                       cres->object_id = object->debug_id;
                        cres->cache_i_size = i_size_read(file_inode(file));
                        cres->dio_size = object->volume->cache->bsize;
                }
diff --git a/fs/netfs/fscache_io.c b/fs/netfs/fscache_io.c
index 37f05b4d3469..fafa8c6bec57 100644
--- a/fs/netfs/fscache_io.c
+++ b/fs/netfs/fscache_io.c
@@ -79,7 +79,7 @@ static int fscache_begin_operation(struct 
netfs_cache_resources *cres,
        cres->ops               = NULL;
        cres->cache_priv        = cookie;
        cres->cache_priv2       = NULL;
-       cres->debug_id          = cookie->debug_id;
+       cres->cookie_id         = cookie->debug_id;
        cres->inval_counter     = cookie->inval_counter;
 
        if (!fscache_begin_cookie_access(cookie, why)) {
diff --git a/include/linux/netfs.h b/include/linux/netfs.h
index a83a4ea86e2b..d175c63ff659 100644
--- a/include/linux/netfs.h
+++ b/include/linux/netfs.h
@@ -162,7 +162,8 @@ struct netfs_cache_resources {
        void                            *cache_priv;
        void                            *cache_priv2;
        unsigned long long              cache_i_size;   /* Initial size of 
cache file */
-       unsigned int                    debug_id;       /* Cookie debug ID */
+       unsigned int                    cookie_id;      /* Cache cookie debug 
ID */
+       unsigned int                    object_id;      /* Cache object debug 
ID */
        unsigned int                    inval_counter;  /* 
object->inval_counter at begin_op */
        unsigned int                    dio_size;       /* DIO block size */
 };
diff --git a/include/trace/events/netfs.h b/include/trace/events/netfs.h
index 83d161f8c726..63ed1d771bd8 100644
--- a/include/trace/events/netfs.h
+++ b/include/trace/events/netfs.h
@@ -311,6 +311,7 @@ TRACE_EVENT(netfs_read,
            TP_STRUCT__entry(
                    __field(unsigned int,               rreq)
                    __field(unsigned int,               cookie)
+                   __field(unsigned int,               object)
                    __field(loff_t,                     i_size)
                    __field(loff_t,                     start)
                    __field(size_t,                     len)
@@ -320,7 +321,8 @@ TRACE_EVENT(netfs_read,
 
            TP_fast_assign(
                    __entry->rreq       = rreq->debug_id;
-                   __entry->cookie     = rreq->cache_resources.debug_id;
+                   __entry->cookie     = rreq->cache_resources.cookie_id;
+                   __entry->object     = rreq->cache_resources.object_id;
                    __entry->i_size     = rreq->i_size;
                    __entry->start      = start;
                    __entry->len        = len;
@@ -328,10 +330,10 @@ TRACE_EVENT(netfs_read,
                    __entry->netfs_inode = rreq->inode->i_ino;
                           ),
 
-           TP_printk("R=%08x %s c=%08x ni=%llx s=%llx l=%zx sz=%llx",
+           TP_printk("R=%08x %s c=%08x o=%08x ni=%llx s=%llx l=%zx sz=%llx",
                      __entry->rreq,
                      __print_symbolic(__entry->what, netfs_read_traces),
-                     __entry->cookie,
+                     __entry->cookie, __entry->object,
                      __entry->netfs_inode,
                      __entry->start, __entry->len, __entry->i_size)
            );
@@ -552,6 +554,7 @@ TRACE_EVENT(netfs_write,
            TP_STRUCT__entry(
                    __field(unsigned int,               wreq)
                    __field(unsigned int,               cookie)
+                   __field(unsigned int,               object)
                    __field(unsigned int,               ino)
                    __field(enum netfs_write_trace,     what)
                    __field(unsigned long long,         start)
@@ -559,20 +562,19 @@ TRACE_EVENT(netfs_write,
                             ),
 
            TP_fast_assign(
-                   struct netfs_inode *__ctx = netfs_inode(wreq->inode);
-                   struct fscache_cookie *__cookie = netfs_i_cookie(__ctx);
                    __entry->wreq       = wreq->debug_id;
-                   __entry->cookie     = __cookie ? __cookie->debug_id : 0;
+                   __entry->cookie     = wreq->cache_resources.cookie_id;
+                   __entry->object     = wreq->cache_resources.object_id;
                    __entry->ino        = wreq->inode->i_ino;
                    __entry->what       = what;
                    __entry->start      = wreq->start;
                    __entry->len        = wreq->len;
                           ),
 
-           TP_printk("R=%08x %s c=%08x i=%x by=%llx-%llx",
+           TP_printk("R=%08x %s c=%08x o=%08x i=%x by=%llx-%llx",
                      __entry->wreq,
                      __print_symbolic(__entry->what, netfs_write_traces),
-                     __entry->cookie,
+                     __entry->cookie, __entry->object,
                      __entry->ino,
                      __entry->start, __entry->start + __entry->len - 1)
            );
@@ -587,22 +589,23 @@ TRACE_EVENT(netfs_copy2cache,
                    __field(unsigned int,               rreq)
                    __field(unsigned int,               creq)
                    __field(unsigned int,               cookie)
+                   __field(unsigned int,               object)
                    __field(unsigned int,               ino)
                             ),
 
            TP_fast_assign(
-                   struct netfs_inode *__ctx = netfs_inode(rreq->inode);
-                   struct fscache_cookie *__cookie = netfs_i_cookie(__ctx);
                    __entry->rreq       = rreq->debug_id;
                    __entry->creq       = creq->debug_id;
-                   __entry->cookie     = __cookie ? __cookie->debug_id : 0;
+                   __entry->cookie     = rreq->cache_resources.cookie_id;
+                   __entry->object     = rreq->cache_resources.object_id;
                    __entry->ino        = rreq->inode->i_ino;
                           ),
 
-           TP_printk("R=%08x CR=%08x c=%08x i=%x ",
+           TP_printk("R=%08x CR=%08x c=%08x o=%08x i=%x ",
                      __entry->rreq,
                      __entry->creq,
                      __entry->cookie,
+                     __entry->object,
                      __entry->ino)
            );
 


Reply via email to