@@ -1771,6 +1771,7 @@ TRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_BLOCKED);
17711771TRACE_DEFINE_ENUM (PNFS_UPDATE_LAYOUT_INVALID_OPEN );
17721772TRACE_DEFINE_ENUM (PNFS_UPDATE_LAYOUT_RETRY );
17731773TRACE_DEFINE_ENUM (PNFS_UPDATE_LAYOUT_SEND_LAYOUTGET );
1774+ TRACE_DEFINE_ENUM (PNFS_UPDATE_LAYOUT_EXIT );
17741775
17751776#define show_pnfs_update_layout_reason (reason ) \
17761777 __print_symbolic(reason, \
@@ -1786,7 +1787,8 @@ TRACE_DEFINE_ENUM(PNFS_UPDATE_LAYOUT_SEND_LAYOUTGET);
17861787 { PNFS_UPDATE_LAYOUT_BLOCKED, "layouts blocked" }, \
17871788 { PNFS_UPDATE_LAYOUT_INVALID_OPEN, "invalid open" }, \
17881789 { PNFS_UPDATE_LAYOUT_RETRY, "retrying" }, \
1789- { PNFS_UPDATE_LAYOUT_SEND_LAYOUTGET, "sent layoutget" })
1790+ { PNFS_UPDATE_LAYOUT_SEND_LAYOUTGET, "sent layoutget" }, \
1791+ { PNFS_UPDATE_LAYOUT_EXIT, "exit" })
17901792
17911793TRACE_EVENT (pnfs_update_layout ,
17921794 TP_PROTO (struct inode * inode ,
@@ -1845,6 +1847,78 @@ TRACE_EVENT(pnfs_update_layout,
18451847 )
18461848);
18471849
1850+ DECLARE_EVENT_CLASS (pnfs_layout_event ,
1851+ TP_PROTO (struct inode * inode ,
1852+ loff_t pos ,
1853+ u64 count ,
1854+ enum pnfs_iomode iomode ,
1855+ struct pnfs_layout_hdr * lo ,
1856+ struct pnfs_layout_segment * lseg
1857+ ),
1858+ TP_ARGS (inode , pos , count , iomode , lo , lseg ),
1859+ TP_STRUCT__entry (
1860+ __field (dev_t , dev )
1861+ __field (u64 , fileid )
1862+ __field (u32 , fhandle )
1863+ __field (loff_t , pos )
1864+ __field (u64 , count )
1865+ __field (enum pnfs_iomode , iomode )
1866+ __field (int , layoutstateid_seq )
1867+ __field (u32 , layoutstateid_hash )
1868+ __field (long , lseg )
1869+ ),
1870+ TP_fast_assign (
1871+ __entry -> dev = inode -> i_sb -> s_dev ;
1872+ __entry -> fileid = NFS_FILEID (inode );
1873+ __entry -> fhandle = nfs_fhandle_hash (NFS_FH (inode ));
1874+ __entry -> pos = pos ;
1875+ __entry -> count = count ;
1876+ __entry -> iomode = iomode ;
1877+ if (lo != NULL ) {
1878+ __entry -> layoutstateid_seq =
1879+ be32_to_cpu (lo -> plh_stateid .seqid );
1880+ __entry -> layoutstateid_hash =
1881+ nfs_stateid_hash (& lo -> plh_stateid );
1882+ } else {
1883+ __entry -> layoutstateid_seq = 0 ;
1884+ __entry -> layoutstateid_hash = 0 ;
1885+ }
1886+ __entry -> lseg = (long )lseg ;
1887+ ),
1888+ TP_printk (
1889+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
1890+ "iomode=%s pos=%llu count=%llu "
1891+ "layoutstateid=%d:0x%08x lseg=0x%lx" ,
1892+ MAJOR (__entry -> dev ), MINOR (__entry -> dev ),
1893+ (unsigned long long )__entry -> fileid ,
1894+ __entry -> fhandle ,
1895+ show_pnfs_iomode (__entry -> iomode ),
1896+ (unsigned long long )__entry -> pos ,
1897+ (unsigned long long )__entry -> count ,
1898+ __entry -> layoutstateid_seq , __entry -> layoutstateid_hash ,
1899+ __entry -> lseg
1900+ )
1901+ );
1902+
1903+ #define DEFINE_PNFS_LAYOUT_EVENT (name ) \
1904+ DEFINE_EVENT(pnfs_layout_event, name, \
1905+ TP_PROTO(struct inode *inode, \
1906+ loff_t pos, \
1907+ u64 count, \
1908+ enum pnfs_iomode iomode, \
1909+ struct pnfs_layout_hdr *lo, \
1910+ struct pnfs_layout_segment *lseg \
1911+ ), \
1912+ TP_ARGS(inode, pos, count, iomode, lo, lseg))
1913+
1914+ DEFINE_PNFS_LAYOUT_EVENT (pnfs_mds_fallback_pg_init_read );
1915+ DEFINE_PNFS_LAYOUT_EVENT (pnfs_mds_fallback_pg_init_write );
1916+ DEFINE_PNFS_LAYOUT_EVENT (pnfs_mds_fallback_pg_get_mirror_count );
1917+ DEFINE_PNFS_LAYOUT_EVENT (pnfs_mds_fallback_read_done );
1918+ DEFINE_PNFS_LAYOUT_EVENT (pnfs_mds_fallback_write_done );
1919+ DEFINE_PNFS_LAYOUT_EVENT (pnfs_mds_fallback_read_pagelist );
1920+ DEFINE_PNFS_LAYOUT_EVENT (pnfs_mds_fallback_write_pagelist );
1921+
18481922#endif /* CONFIG_NFS_V4_1 */
18491923
18501924#endif /* _TRACE_NFS4_H */
0 commit comments