@@ -1727,6 +1727,13 @@ DEFINE_NFS4_IDMAP_EVENT(nfs4_map_group_to_gid);
1727
1727
DEFINE_NFS4_IDMAP_EVENT (nfs4_map_uid_to_name );
1728
1728
DEFINE_NFS4_IDMAP_EVENT (nfs4_map_gid_to_group );
1729
1729
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
+
1730
1737
DECLARE_EVENT_CLASS (nfs4_read_event ,
1731
1738
TP_PROTO (
1732
1739
const struct nfs_pgio_header * hdr ,
@@ -1745,6 +1752,8 @@ DECLARE_EVENT_CLASS(nfs4_read_event,
1745
1752
__field (unsigned long , error )
1746
1753
__field (int , stateid_seq )
1747
1754
__field (u32 , stateid_hash )
1755
+ __field (int , layoutstateid_seq )
1756
+ __field (u32 , layoutstateid_hash )
1748
1757
),
1749
1758
1750
1759
TP_fast_assign (
@@ -1754,6 +1763,7 @@ DECLARE_EVENT_CLASS(nfs4_read_event,
1754
1763
hdr -> args .fh : & nfsi -> fh ;
1755
1764
const struct nfs4_state * state =
1756
1765
hdr -> args .context -> state ;
1766
+ const struct pnfs_layout_segment * lseg = hdr -> lseg ;
1757
1767
1758
1768
__entry -> dev = inode -> i_sb -> s_dev ;
1759
1769
__entry -> fileid = nfsi -> fileid ;
@@ -1766,19 +1776,24 @@ DECLARE_EVENT_CLASS(nfs4_read_event,
1766
1776
be32_to_cpu (state -> stateid .seqid );
1767
1777
__entry -> stateid_hash =
1768
1778
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 );
1769
1782
),
1770
1783
1771
1784
TP_printk (
1772
1785
"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" ,
1774
1788
- __entry -> error ,
1775
1789
show_nfsv4_errors (__entry -> error ),
1776
1790
MAJOR (__entry -> dev ), MINOR (__entry -> dev ),
1777
1791
(unsigned long long )__entry -> fileid ,
1778
1792
__entry -> fhandle ,
1779
1793
(long long )__entry -> offset ,
1780
1794
__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
1782
1797
)
1783
1798
);
1784
1799
#define DEFINE_NFS4_READ_EVENT (name ) \
@@ -1811,6 +1826,8 @@ DECLARE_EVENT_CLASS(nfs4_write_event,
1811
1826
__field (unsigned long , error )
1812
1827
__field (int , stateid_seq )
1813
1828
__field (u32 , stateid_hash )
1829
+ __field (int , layoutstateid_seq )
1830
+ __field (u32 , layoutstateid_hash )
1814
1831
),
1815
1832
1816
1833
TP_fast_assign (
@@ -1820,6 +1837,7 @@ DECLARE_EVENT_CLASS(nfs4_write_event,
1820
1837
hdr -> args .fh : & nfsi -> fh ;
1821
1838
const struct nfs4_state * state =
1822
1839
hdr -> args .context -> state ;
1840
+ const struct pnfs_layout_segment * lseg = hdr -> lseg ;
1823
1841
1824
1842
__entry -> dev = inode -> i_sb -> s_dev ;
1825
1843
__entry -> fileid = nfsi -> fileid ;
@@ -1832,19 +1850,24 @@ DECLARE_EVENT_CLASS(nfs4_write_event,
1832
1850
be32_to_cpu (state -> stateid .seqid );
1833
1851
__entry -> stateid_hash =
1834
1852
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 );
1835
1856
),
1836
1857
1837
1858
TP_printk (
1838
1859
"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" ,
1840
1862
- __entry -> error ,
1841
1863
show_nfsv4_errors (__entry -> error ),
1842
1864
MAJOR (__entry -> dev ), MINOR (__entry -> dev ),
1843
1865
(unsigned long long )__entry -> fileid ,
1844
1866
__entry -> fhandle ,
1845
1867
(long long )__entry -> offset ,
1846
1868
__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
1848
1871
)
1849
1872
);
1850
1873
@@ -1875,32 +1898,39 @@ DECLARE_EVENT_CLASS(nfs4_commit_event,
1875
1898
__field (unsigned long , error )
1876
1899
__field (loff_t , offset )
1877
1900
__field (u32 , count )
1901
+ __field (int , layoutstateid_seq )
1902
+ __field (u32 , layoutstateid_hash )
1878
1903
),
1879
1904
1880
1905
TP_fast_assign (
1881
1906
const struct inode * inode = data -> inode ;
1882
1907
const struct nfs_inode * nfsi = NFS_I (inode );
1883
1908
const struct nfs_fh * fh = data -> args .fh ?
1884
1909
data -> args .fh : & nfsi -> fh ;
1910
+ const struct pnfs_layout_segment * lseg = data -> lseg ;
1885
1911
1886
1912
__entry -> dev = inode -> i_sb -> s_dev ;
1887
1913
__entry -> fileid = nfsi -> fileid ;
1888
1914
__entry -> fhandle = nfs_fhandle_hash (fh );
1889
1915
__entry -> offset = data -> args .offset ;
1890
1916
__entry -> count = data -> args .count ;
1891
1917
__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 );
1892
1921
),
1893
1922
1894
1923
TP_printk (
1895
1924
"error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
1896
- "offset=%lld count=%u" ,
1925
+ "offset=%lld count=%u layoutstateid=%d:0x%08x " ,
1897
1926
- __entry -> error ,
1898
1927
show_nfsv4_errors (__entry -> error ),
1899
1928
MAJOR (__entry -> dev ), MINOR (__entry -> dev ),
1900
1929
(unsigned long long )__entry -> fileid ,
1901
1930
__entry -> fhandle ,
1902
1931
(long long )__entry -> offset ,
1903
- __entry -> count
1932
+ __entry -> count ,
1933
+ __entry -> layoutstateid_seq , __entry -> layoutstateid_hash
1904
1934
)
1905
1935
);
1906
1936
#define DEFINE_NFS4_COMMIT_EVENT (name ) \
0 commit comments