pNFS: Modify pnfs_update_layout tracepoints to use layout stateid
authorTrond Myklebust <trond.myklebust@primarydata.com>
Sat, 26 Dec 2015 23:03:07 +0000 (18:03 -0500)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 28 Dec 2015 14:57:14 +0000 (09:57 -0500)
Instead of displaying a layout segment pointer in these tracepoints,
let's use the layout stateid, now that Olga gave us a set of tools for
displaying them.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/nfs4trace.c
fs/nfs/nfs4trace.h
fs/nfs/pnfs.c

index d774335cc8bcafafa4110ec283b79bef9aee59ed..2850bce19244377440c426aed08028910f28cfd8 100644 (file)
@@ -6,6 +6,7 @@
 #include "internal.h"
 #include "nfs4session.h"
 #include "callback.h"
+#include "pnfs.h"
 
 #define CREATE_TRACE_POINTS
 #include "nfs4trace.h"
index 238925c1aafdc473c6502385a4038fb9ee9c5d64..d08d0c84b77898831b3294b5cf1c54aabee963d0 100644 (file)
@@ -1461,10 +1461,10 @@ TRACE_EVENT(pnfs_update_layout,
                        loff_t pos,
                        u64 count,
                        enum pnfs_iomode iomode,
-                       struct pnfs_layout_segment *lseg,
+                       struct pnfs_layout_hdr *lo,
                        enum pnfs_update_layout_reason reason
                ),
-               TP_ARGS(inode, pos, count, iomode, lseg, reason),
+               TP_ARGS(inode, pos, count, iomode, lo, reason),
                TP_STRUCT__entry(
                        __field(dev_t, dev)
                        __field(u64, fileid)
@@ -1472,7 +1472,8 @@ TRACE_EVENT(pnfs_update_layout,
                        __field(loff_t, pos)
                        __field(u64, count)
                        __field(enum pnfs_iomode, iomode)
-                       __field(struct pnfs_layout_segment *, lseg)
+                       __field(int, layoutstateid_seq)
+                       __field(u32, layoutstateid_hash)
                        __field(enum pnfs_update_layout_reason, reason)
                ),
                TP_fast_assign(
@@ -1482,18 +1483,28 @@ TRACE_EVENT(pnfs_update_layout,
                        __entry->pos = pos;
                        __entry->count = count;
                        __entry->iomode = iomode;
-                       __entry->lseg = lseg;
                        __entry->reason = reason;
+                       if (lo != NULL) {
+                               __entry->layoutstateid_seq =
+                               be32_to_cpu(lo->plh_stateid.seqid);
+                               __entry->layoutstateid_hash =
+                               nfs_stateid_hash(&lo->plh_stateid);
+                       } else {
+                               __entry->layoutstateid_seq = 0;
+                               __entry->layoutstateid_hash = 0;
+                       }
                ),
                TP_printk(
                        "fileid=%02x:%02x:%llu fhandle=0x%08x "
-                       "iomode=%s pos=%llu count=%llu lseg=%p (%s)",
+                       "iomode=%s pos=%llu count=%llu "
+                       "layoutstateid=%d:0x%08x (%s)",
                        MAJOR(__entry->dev), MINOR(__entry->dev),
                        (unsigned long long)__entry->fileid,
                        __entry->fhandle,
                        show_pnfs_iomode(__entry->iomode),
                        (unsigned long long)__entry->pos,
-                       (unsigned long long)__entry->count, __entry->lseg,
+                       (unsigned long long)__entry->count,
+                       __entry->layoutstateid_seq, __entry->layoutstateid_hash,
                        show_pnfs_update_layout_reason(__entry->reason)
                )
 );
index 1489065bb051480134ad31b64435168d2bfaced7..6095a8d42766c14fde2e199351ad1975a9776042 100644 (file)
@@ -1521,19 +1521,19 @@ pnfs_update_layout(struct inode *ino,
        bool first;
 
        if (!pnfs_enabled_sb(NFS_SERVER(ino))) {
-               trace_pnfs_update_layout(ino, pos, count, iomode, lseg,
+               trace_pnfs_update_layout(ino, pos, count, iomode, NULL,
                                 PNFS_UPDATE_LAYOUT_NO_PNFS);
                goto out;
        }
 
        if (iomode == IOMODE_READ && i_size_read(ino) == 0) {
-               trace_pnfs_update_layout(ino, pos, count, iomode, lseg,
+               trace_pnfs_update_layout(ino, pos, count, iomode, NULL,
                                 PNFS_UPDATE_LAYOUT_RD_ZEROLEN);
                goto out;
        }
 
        if (pnfs_within_mdsthreshold(ctx, ino, iomode)) {
-               trace_pnfs_update_layout(ino, pos, count, iomode, lseg,
+               trace_pnfs_update_layout(ino, pos, count, iomode, NULL,
                                 PNFS_UPDATE_LAYOUT_MDSTHRESH);
                goto out;
        }
@@ -1544,14 +1544,14 @@ lookup_again:
        lo = pnfs_find_alloc_layout(ino, ctx, gfp_flags);
        if (lo == NULL) {
                spin_unlock(&ino->i_lock);
-               trace_pnfs_update_layout(ino, pos, count, iomode, lseg,
+               trace_pnfs_update_layout(ino, pos, count, iomode, NULL,
                                 PNFS_UPDATE_LAYOUT_NOMEM);
                goto out;
        }
 
        /* Do we even need to bother with this? */
        if (test_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags)) {
-               trace_pnfs_update_layout(ino, pos, count, iomode, lseg,
+               trace_pnfs_update_layout(ino, pos, count, iomode, lo,
                                 PNFS_UPDATE_LAYOUT_BULK_RECALL);
                dprintk("%s matches recall, use MDS\n", __func__);
                goto out_unlock;
@@ -1560,7 +1560,7 @@ lookup_again:
        /* if LAYOUTGET already failed once we don't try again */
        if (pnfs_layout_io_test_failed(lo, iomode) &&
            !pnfs_should_retry_layoutget(lo)) {
-               trace_pnfs_update_layout(ino, pos, count, iomode, lseg,
+               trace_pnfs_update_layout(ino, pos, count, iomode, lo,
                                 PNFS_UPDATE_LAYOUT_IO_TEST_FAIL);
                goto out_unlock;
        }
@@ -1584,7 +1584,7 @@ lookup_again:
                 */
                lseg = pnfs_find_lseg(lo, &arg);
                if (lseg) {
-                       trace_pnfs_update_layout(ino, pos, count, iomode, lseg,
+                       trace_pnfs_update_layout(ino, pos, count, iomode, lo,
                                        PNFS_UPDATE_LAYOUT_FOUND_CACHED);
                        goto out_unlock;
                }
@@ -1604,13 +1604,13 @@ lookup_again:
                        dprintk("%s retrying\n", __func__);
                        goto lookup_again;
                }
-               trace_pnfs_update_layout(ino, pos, count, iomode, lseg,
+               trace_pnfs_update_layout(ino, pos, count, iomode, lo,
                                PNFS_UPDATE_LAYOUT_RETURN);
                goto out_put_layout_hdr;
        }
 
        if (pnfs_layoutgets_blocked(lo)) {
-               trace_pnfs_update_layout(ino, pos, count, iomode, lseg,
+               trace_pnfs_update_layout(ino, pos, count, iomode, lo,
                                PNFS_UPDATE_LAYOUT_BLOCKED);
                goto out_unlock;
        }
@@ -1638,7 +1638,7 @@ lookup_again:
        lseg = send_layoutget(lo, ctx, &arg, gfp_flags);
        pnfs_clear_retry_layoutget(lo);
        atomic_dec(&lo->plh_outstanding);
-       trace_pnfs_update_layout(ino, pos, count, iomode, lseg,
+       trace_pnfs_update_layout(ino, pos, count, iomode, lo,
                                 PNFS_UPDATE_LAYOUT_SEND_LAYOUTGET);
 out_put_layout_hdr:
        if (first)