@@ -1727,6 +1727,13 @@ DEFINE_NFS4_IDMAP_EVENT(nfs4_map_group_to_gid);
17271727DEFINE_NFS4_IDMAP_EVENT (nfs4_map_uid_to_name );
17281728DEFINE_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+
17301737DECLARE_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