From: Trond Myklebust <trond.myklebust@primarydata.com>
To: Jeff Layton <jeff.layton@primarydata.com>
Cc: linux-nfs@vger.kernel.org, Anna.Schumaker@netapp.com
Subject: [PATCH] pNFS: Modify pnfs_update_layout tracepoints to use layout stateid
Date: Sat, 26 Dec 2015 18:08:15 -0500 [thread overview]
Message-ID: <1451171295-25705-1-git-send-email-trond.myklebust@primarydata.com> (raw)
In-Reply-To: <1449762118-21016-1-git-send-email-jeff.layton@primarydata.com>
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.h | 23 +++++++++++++++++------
fs/nfs/pnfs.c | 20 ++++++++++----------
2 files changed, 27 insertions(+), 16 deletions(-)
diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h
index 238925c1aafd..de5469a5b4f7 100644
--- a/fs/nfs/nfs4trace.h
+++ b/fs/nfs/nfs4trace.h
@@ -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)
)
);
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 1489065bb051..6095a8d42766 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -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)
--
2.5.0
next prev parent reply other threads:[~2015-12-26 23:08 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-10 15:41 [PATCH] nfs: add new tracepoint for pnfs_update_layout Jeff Layton
2015-12-26 23:08 ` Trond Myklebust [this message]
2015-12-26 23:56 ` [PATCH v2] pNFS: Modify pnfs_update_layout tracepoints to use layout stateid Trond Myklebust
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1451171295-25705-1-git-send-email-trond.myklebust@primarydata.com \
--to=trond.myklebust@primarydata.com \
--cc=Anna.Schumaker@netapp.com \
--cc=jeff.layton@primarydata.com \
--cc=linux-nfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox