Skip to content

Commit 54898f7

Browse files
author
Trond Myklebust
committed
NFS: Add layout segment info to pnfs read/write/commit tracepoints
Allow the pnfs I/O tracepoints to trace which layout segment is being used. Signed-off-by: Trond Myklebust <[email protected]>
1 parent 638037b commit 54898f7

File tree

1 file changed

+36
-6
lines changed

1 file changed

+36
-6
lines changed

fs/nfs/nfs4trace.h

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1727,6 +1727,13 @@ DEFINE_NFS4_IDMAP_EVENT(nfs4_map_group_to_gid);
17271727
DEFINE_NFS4_IDMAP_EVENT(nfs4_map_uid_to_name);
17281728
DEFINE_NFS4_IDMAP_EVENT(nfs4_map_gid_to_group);
17291729

1730+
#ifdef CONFIG_NFS_V4_1
1731+
#define NFS4_LSEG_LAYOUT_STATEID_HASH(lseg) \
1732+
(lseg ? nfs_stateid_hash(&lseg->pls_layout->plh_stateid) : 0)
1733+
#else
1734+
#define NFS4_LSEG_LAYOUT_STATEID_HASH(lseg) (0)
1735+
#endif
1736+
17301737
DECLARE_EVENT_CLASS(nfs4_read_event,
17311738
TP_PROTO(
17321739
const struct nfs_pgio_header *hdr,
@@ -1745,6 +1752,8 @@ DECLARE_EVENT_CLASS(nfs4_read_event,
17451752
__field(unsigned long, error)
17461753
__field(int, stateid_seq)
17471754
__field(u32, stateid_hash)
1755+
__field(int, layoutstateid_seq)
1756+
__field(u32, layoutstateid_hash)
17481757
),
17491758

17501759
TP_fast_assign(
@@ -1754,6 +1763,7 @@ DECLARE_EVENT_CLASS(nfs4_read_event,
17541763
hdr->args.fh : &nfsi->fh;
17551764
const struct nfs4_state *state =
17561765
hdr->args.context->state;
1766+
const struct pnfs_layout_segment *lseg = hdr->lseg;
17571767

17581768
__entry->dev = inode->i_sb->s_dev;
17591769
__entry->fileid = nfsi->fileid;
@@ -1766,19 +1776,24 @@ DECLARE_EVENT_CLASS(nfs4_read_event,
17661776
be32_to_cpu(state->stateid.seqid);
17671777
__entry->stateid_hash =
17681778
nfs_stateid_hash(&state->stateid);
1779+
__entry->layoutstateid_seq = lseg ? lseg->pls_seq : 0;
1780+
__entry->layoutstateid_hash =
1781+
NFS4_LSEG_LAYOUT_STATEID_HASH(lseg);
17691782
),
17701783

17711784
TP_printk(
17721785
"error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
1773-
"offset=%lld count=%u res=%u stateid=%d:0x%08x",
1786+
"offset=%lld count=%u res=%u stateid=%d:0x%08x "
1787+
"layoutstateid=%d:0x%08x",
17741788
-__entry->error,
17751789
show_nfsv4_errors(__entry->error),
17761790
MAJOR(__entry->dev), MINOR(__entry->dev),
17771791
(unsigned long long)__entry->fileid,
17781792
__entry->fhandle,
17791793
(long long)__entry->offset,
17801794
__entry->arg_count, __entry->res_count,
1781-
__entry->stateid_seq, __entry->stateid_hash
1795+
__entry->stateid_seq, __entry->stateid_hash,
1796+
__entry->layoutstateid_seq, __entry->layoutstateid_hash
17821797
)
17831798
);
17841799
#define DEFINE_NFS4_READ_EVENT(name) \
@@ -1811,6 +1826,8 @@ DECLARE_EVENT_CLASS(nfs4_write_event,
18111826
__field(unsigned long, error)
18121827
__field(int, stateid_seq)
18131828
__field(u32, stateid_hash)
1829+
__field(int, layoutstateid_seq)
1830+
__field(u32, layoutstateid_hash)
18141831
),
18151832

18161833
TP_fast_assign(
@@ -1820,6 +1837,7 @@ DECLARE_EVENT_CLASS(nfs4_write_event,
18201837
hdr->args.fh : &nfsi->fh;
18211838
const struct nfs4_state *state =
18221839
hdr->args.context->state;
1840+
const struct pnfs_layout_segment *lseg = hdr->lseg;
18231841

18241842
__entry->dev = inode->i_sb->s_dev;
18251843
__entry->fileid = nfsi->fileid;
@@ -1832,19 +1850,24 @@ DECLARE_EVENT_CLASS(nfs4_write_event,
18321850
be32_to_cpu(state->stateid.seqid);
18331851
__entry->stateid_hash =
18341852
nfs_stateid_hash(&state->stateid);
1853+
__entry->layoutstateid_seq = lseg ? lseg->pls_seq : 0;
1854+
__entry->layoutstateid_hash =
1855+
NFS4_LSEG_LAYOUT_STATEID_HASH(lseg);
18351856
),
18361857

18371858
TP_printk(
18381859
"error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
1839-
"offset=%lld count=%u res=%u stateid=%d:0x%08x",
1860+
"offset=%lld count=%u res=%u stateid=%d:0x%08x "
1861+
"layoutstateid=%d:0x%08x",
18401862
-__entry->error,
18411863
show_nfsv4_errors(__entry->error),
18421864
MAJOR(__entry->dev), MINOR(__entry->dev),
18431865
(unsigned long long)__entry->fileid,
18441866
__entry->fhandle,
18451867
(long long)__entry->offset,
18461868
__entry->arg_count, __entry->res_count,
1847-
__entry->stateid_seq, __entry->stateid_hash
1869+
__entry->stateid_seq, __entry->stateid_hash,
1870+
__entry->layoutstateid_seq, __entry->layoutstateid_hash
18481871
)
18491872
);
18501873

@@ -1875,32 +1898,39 @@ DECLARE_EVENT_CLASS(nfs4_commit_event,
18751898
__field(unsigned long, error)
18761899
__field(loff_t, offset)
18771900
__field(u32, count)
1901+
__field(int, layoutstateid_seq)
1902+
__field(u32, layoutstateid_hash)
18781903
),
18791904

18801905
TP_fast_assign(
18811906
const struct inode *inode = data->inode;
18821907
const struct nfs_inode *nfsi = NFS_I(inode);
18831908
const struct nfs_fh *fh = data->args.fh ?
18841909
data->args.fh : &nfsi->fh;
1910+
const struct pnfs_layout_segment *lseg = data->lseg;
18851911

18861912
__entry->dev = inode->i_sb->s_dev;
18871913
__entry->fileid = nfsi->fileid;
18881914
__entry->fhandle = nfs_fhandle_hash(fh);
18891915
__entry->offset = data->args.offset;
18901916
__entry->count = data->args.count;
18911917
__entry->error = error < 0 ? -error : 0;
1918+
__entry->layoutstateid_seq = lseg ? lseg->pls_seq : 0;
1919+
__entry->layoutstateid_hash =
1920+
NFS4_LSEG_LAYOUT_STATEID_HASH(lseg);
18921921
),
18931922

18941923
TP_printk(
18951924
"error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
1896-
"offset=%lld count=%u",
1925+
"offset=%lld count=%u layoutstateid=%d:0x%08x",
18971926
-__entry->error,
18981927
show_nfsv4_errors(__entry->error),
18991928
MAJOR(__entry->dev), MINOR(__entry->dev),
19001929
(unsigned long long)__entry->fileid,
19011930
__entry->fhandle,
19021931
(long long)__entry->offset,
1903-
__entry->count
1932+
__entry->count,
1933+
__entry->layoutstateid_seq, __entry->layoutstateid_hash
19041934
)
19051935
);
19061936
#define DEFINE_NFS4_COMMIT_EVENT(name) \

0 commit comments

Comments
 (0)