pNFS: Modify pnfs_update_layout tracepoints to use layout stateid

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>
This commit is contained in:
Trond Myklebust 2015-12-26 18:03:07 -05:00
parent f2dd436edb
commit f4848303ce
3 changed files with 28 additions and 16 deletions

View File

@ -6,6 +6,7 @@
#include "internal.h" #include "internal.h"
#include "nfs4session.h" #include "nfs4session.h"
#include "callback.h" #include "callback.h"
#include "pnfs.h"
#define CREATE_TRACE_POINTS #define CREATE_TRACE_POINTS
#include "nfs4trace.h" #include "nfs4trace.h"

View File

@ -1461,10 +1461,10 @@ TRACE_EVENT(pnfs_update_layout,
loff_t pos, loff_t pos,
u64 count, u64 count,
enum pnfs_iomode iomode, enum pnfs_iomode iomode,
struct pnfs_layout_segment *lseg, struct pnfs_layout_hdr *lo,
enum pnfs_update_layout_reason reason 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( TP_STRUCT__entry(
__field(dev_t, dev) __field(dev_t, dev)
__field(u64, fileid) __field(u64, fileid)
@ -1472,7 +1472,8 @@ TRACE_EVENT(pnfs_update_layout,
__field(loff_t, pos) __field(loff_t, pos)
__field(u64, count) __field(u64, count)
__field(enum pnfs_iomode, iomode) __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) __field(enum pnfs_update_layout_reason, reason)
), ),
TP_fast_assign( TP_fast_assign(
@ -1482,18 +1483,28 @@ TRACE_EVENT(pnfs_update_layout,
__entry->pos = pos; __entry->pos = pos;
__entry->count = count; __entry->count = count;
__entry->iomode = iomode; __entry->iomode = iomode;
__entry->lseg = lseg;
__entry->reason = reason; __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( TP_printk(
"fileid=%02x:%02x:%llu fhandle=0x%08x " "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), MAJOR(__entry->dev), MINOR(__entry->dev),
(unsigned long long)__entry->fileid, (unsigned long long)__entry->fileid,
__entry->fhandle, __entry->fhandle,
show_pnfs_iomode(__entry->iomode), show_pnfs_iomode(__entry->iomode),
(unsigned long long)__entry->pos, (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) show_pnfs_update_layout_reason(__entry->reason)
) )
); );

View File

@ -1521,19 +1521,19 @@ pnfs_update_layout(struct inode *ino,
bool first; bool first;
if (!pnfs_enabled_sb(NFS_SERVER(ino))) { 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); PNFS_UPDATE_LAYOUT_NO_PNFS);
goto out; goto out;
} }
if (iomode == IOMODE_READ && i_size_read(ino) == 0) { 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); PNFS_UPDATE_LAYOUT_RD_ZEROLEN);
goto out; goto out;
} }
if (pnfs_within_mdsthreshold(ctx, ino, iomode)) { 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); PNFS_UPDATE_LAYOUT_MDSTHRESH);
goto out; goto out;
} }
@ -1544,14 +1544,14 @@ lookup_again:
lo = pnfs_find_alloc_layout(ino, ctx, gfp_flags); lo = pnfs_find_alloc_layout(ino, ctx, gfp_flags);
if (lo == NULL) { if (lo == NULL) {
spin_unlock(&ino->i_lock); 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); PNFS_UPDATE_LAYOUT_NOMEM);
goto out; goto out;
} }
/* Do we even need to bother with this? */ /* Do we even need to bother with this? */
if (test_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags)) { 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); PNFS_UPDATE_LAYOUT_BULK_RECALL);
dprintk("%s matches recall, use MDS\n", __func__); dprintk("%s matches recall, use MDS\n", __func__);
goto out_unlock; goto out_unlock;
@ -1560,7 +1560,7 @@ lookup_again:
/* if LAYOUTGET already failed once we don't try again */ /* if LAYOUTGET already failed once we don't try again */
if (pnfs_layout_io_test_failed(lo, iomode) && if (pnfs_layout_io_test_failed(lo, iomode) &&
!pnfs_should_retry_layoutget(lo)) { !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); PNFS_UPDATE_LAYOUT_IO_TEST_FAIL);
goto out_unlock; goto out_unlock;
} }
@ -1584,7 +1584,7 @@ lookup_again:
*/ */
lseg = pnfs_find_lseg(lo, &arg); lseg = pnfs_find_lseg(lo, &arg);
if (lseg) { 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); PNFS_UPDATE_LAYOUT_FOUND_CACHED);
goto out_unlock; goto out_unlock;
} }
@ -1604,13 +1604,13 @@ lookup_again:
dprintk("%s retrying\n", __func__); dprintk("%s retrying\n", __func__);
goto lookup_again; 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); PNFS_UPDATE_LAYOUT_RETURN);
goto out_put_layout_hdr; goto out_put_layout_hdr;
} }
if (pnfs_layoutgets_blocked(lo)) { 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); PNFS_UPDATE_LAYOUT_BLOCKED);
goto out_unlock; goto out_unlock;
} }
@ -1638,7 +1638,7 @@ lookup_again:
lseg = send_layoutget(lo, ctx, &arg, gfp_flags); lseg = send_layoutget(lo, ctx, &arg, gfp_flags);
pnfs_clear_retry_layoutget(lo); pnfs_clear_retry_layoutget(lo);
atomic_dec(&lo->plh_outstanding); 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); PNFS_UPDATE_LAYOUT_SEND_LAYOUTGET);
out_put_layout_hdr: out_put_layout_hdr:
if (first) if (first)