136fd6e86SDarrick J. Wong /* 236fd6e86SDarrick J. Wong * Copyright (C) 2017 Oracle. All Rights Reserved. 336fd6e86SDarrick J. Wong * 436fd6e86SDarrick J. Wong * Author: Darrick J. Wong <darrick.wong@oracle.com> 536fd6e86SDarrick J. Wong * 636fd6e86SDarrick J. Wong * This program is free software; you can redistribute it and/or 736fd6e86SDarrick J. Wong * modify it under the terms of the GNU General Public License 836fd6e86SDarrick J. Wong * as published by the Free Software Foundation; either version 2 936fd6e86SDarrick J. Wong * of the License, or (at your option) any later version. 1036fd6e86SDarrick J. Wong * 1136fd6e86SDarrick J. Wong * This program is distributed in the hope that it would be useful, 1236fd6e86SDarrick J. Wong * but WITHOUT ANY WARRANTY; without even the implied warranty of 1336fd6e86SDarrick J. Wong * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1436fd6e86SDarrick J. Wong * GNU General Public License for more details. 1536fd6e86SDarrick J. Wong * 1636fd6e86SDarrick J. Wong * You should have received a copy of the GNU General Public License 1736fd6e86SDarrick J. Wong * along with this program; if not, write the Free Software Foundation, 1836fd6e86SDarrick J. Wong * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 1936fd6e86SDarrick J. Wong */ 2036fd6e86SDarrick J. Wong #undef TRACE_SYSTEM 2136fd6e86SDarrick J. Wong #define TRACE_SYSTEM xfs_scrub 2236fd6e86SDarrick J. Wong 2336fd6e86SDarrick J. Wong #if !defined(_TRACE_XFS_SCRUB_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 2436fd6e86SDarrick J. Wong #define _TRACE_XFS_SCRUB_TRACE_H 2536fd6e86SDarrick J. Wong 2636fd6e86SDarrick J. Wong #include <linux/tracepoint.h> 2736fd6e86SDarrick J. Wong 28*a5637186SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_scrub_class, 29*a5637186SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm, 30*a5637186SDarrick J. Wong int error), 31*a5637186SDarrick J. Wong TP_ARGS(ip, sm, error), 32*a5637186SDarrick J. Wong TP_STRUCT__entry( 33*a5637186SDarrick J. Wong __field(dev_t, dev) 34*a5637186SDarrick J. Wong __field(xfs_ino_t, ino) 35*a5637186SDarrick J. Wong __field(unsigned int, type) 36*a5637186SDarrick J. Wong __field(xfs_agnumber_t, agno) 37*a5637186SDarrick J. Wong __field(xfs_ino_t, inum) 38*a5637186SDarrick J. Wong __field(unsigned int, gen) 39*a5637186SDarrick J. Wong __field(unsigned int, flags) 40*a5637186SDarrick J. Wong __field(int, error) 41*a5637186SDarrick J. Wong ), 42*a5637186SDarrick J. Wong TP_fast_assign( 43*a5637186SDarrick J. Wong __entry->dev = ip->i_mount->m_super->s_dev; 44*a5637186SDarrick J. Wong __entry->ino = ip->i_ino; 45*a5637186SDarrick J. Wong __entry->type = sm->sm_type; 46*a5637186SDarrick J. Wong __entry->agno = sm->sm_agno; 47*a5637186SDarrick J. Wong __entry->inum = sm->sm_ino; 48*a5637186SDarrick J. Wong __entry->gen = sm->sm_gen; 49*a5637186SDarrick J. Wong __entry->flags = sm->sm_flags; 50*a5637186SDarrick J. Wong __entry->error = error; 51*a5637186SDarrick J. Wong ), 52*a5637186SDarrick J. Wong TP_printk("dev %d:%d ino %llu type %u agno %u inum %llu gen %u flags 0x%x error %d", 53*a5637186SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 54*a5637186SDarrick J. Wong __entry->ino, 55*a5637186SDarrick J. Wong __entry->type, 56*a5637186SDarrick J. Wong __entry->agno, 57*a5637186SDarrick J. Wong __entry->inum, 58*a5637186SDarrick J. Wong __entry->gen, 59*a5637186SDarrick J. Wong __entry->flags, 60*a5637186SDarrick J. Wong __entry->error) 61*a5637186SDarrick J. Wong ) 62*a5637186SDarrick J. Wong #define DEFINE_SCRUB_EVENT(name) \ 63*a5637186SDarrick J. Wong DEFINE_EVENT(xfs_scrub_class, name, \ 64*a5637186SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm, \ 65*a5637186SDarrick J. Wong int error), \ 66*a5637186SDarrick J. Wong TP_ARGS(ip, sm, error)) 67*a5637186SDarrick J. Wong 68*a5637186SDarrick J. Wong DEFINE_SCRUB_EVENT(xfs_scrub_start); 69*a5637186SDarrick J. Wong DEFINE_SCRUB_EVENT(xfs_scrub_done); 70*a5637186SDarrick J. Wong 7136fd6e86SDarrick J. Wong #endif /* _TRACE_XFS_SCRUB_TRACE_H */ 7236fd6e86SDarrick J. Wong 7336fd6e86SDarrick J. Wong #undef TRACE_INCLUDE_PATH 7436fd6e86SDarrick J. Wong #define TRACE_INCLUDE_PATH . 7536fd6e86SDarrick J. Wong #define TRACE_INCLUDE_FILE scrub/trace 7636fd6e86SDarrick J. Wong #include <trace/define_trace.h> 77