forked from Minki/linux
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:
parent
f2dd436edb
commit
f4848303ce
@ -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"
|
||||||
|
@ -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)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user