2019-07-31 18:57:31 +03:00
/* SPDX-License-Identifier: GPL-2.0-only */
2018-07-26 15:21:55 +03:00
# undef TRACE_SYSTEM
# define TRACE_SYSTEM erofs
# if !defined(_TRACE_EROFS_H) || defined(TRACE_HEADER_MULTI_READ)
# define _TRACE_EROFS_H
# include <linux/tracepoint.h>
erofs: fix compile warnings when moving out include/trace/events/erofs.h
As Stephon reported [1], many compile warnings are raised when
moving out include/trace/events/erofs.h:
In file included from include/trace/events/erofs.h:8,
from <command-line>:
include/trace/events/erofs.h:28:37: warning: 'struct dentry' declared inside parameter list will not be visible outside of this definition or declaration
TP_PROTO(struct inode *dir, struct dentry *dentry, unsigned int flags),
^~~~~~
include/linux/tracepoint.h:233:34: note: in definition of macro '__DECLARE_TRACE'
static inline void trace_##name(proto) \
^~~~~
include/linux/tracepoint.h:396:24: note: in expansion of macro 'PARAMS'
__DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \
^~~~~~
include/linux/tracepoint.h:532:2: note: in expansion of macro 'DECLARE_TRACE'
DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
^~~~~~~~~~~~~
include/linux/tracepoint.h:532:22: note: in expansion of macro 'PARAMS'
DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
^~~~~~
include/trace/events/erofs.h:26:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(erofs_lookup,
^~~~~~~~~~~
include/trace/events/erofs.h:28:2: note: in expansion of macro 'TP_PROTO'
TP_PROTO(struct inode *dir, struct dentry *dentry, unsigned int flags),
^~~~~~~~
That makes me very confused since most original EROFS tracepoint code
was taken from f2fs, and finally I found
commit 43c78d88036e ("kbuild: compile-test kernel headers to ensure they are self-contained")
It seems these warnings are generated from KERNEL_HEADER_TEST feature and
ext4/f2fs tracepoint files were in blacklist.
Anyway, let's fix these issues for KERNEL_HEADER_TEST feature instead
of adding to blacklist...
[1] https://lore.kernel.org/lkml/20190826162432.11100665@canb.auug.org.au/
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Link: https://lore.kernel.org/r/20190826132653.100731-1-gaoxiang25@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-08-26 16:26:53 +03:00
# include <linux/fs.h>
struct erofs_map_blocks ;
2018-07-26 15:21:55 +03:00
# define show_dev(dev) MAJOR(dev), MINOR(dev)
# define show_dev_nid(entry) show_dev(entry->dev), entry->nid
# define show_file_type(type) \
__print_symbolic ( type , \
{ 0 , " FILE " } , \
{ 1 , " DIR " } )
# define show_map_flags(flags) __print_flags(flags, "|", \
2023-02-09 05:48:24 +03:00
{ EROFS_GET_BLOCKS_FIEMAP , " FIEMAP " } , \
{ EROFS_GET_BLOCKS_READMORE , " READMORE " } , \
{ EROFS_GET_BLOCKS_FINDTAIL , " FINDTAIL " } )
2018-07-26 15:21:55 +03:00
# define show_mflags(flags) __print_flags(flags, "", \
2023-02-09 05:48:24 +03:00
{ EROFS_MAP_MAPPED , " M " } , \
{ EROFS_MAP_META , " I " } , \
{ EROFS_MAP_ENCODED , " E " } , \
{ EROFS_MAP_FULL_MAPPED , " F " } , \
{ EROFS_MAP_FRAGMENT , " R " } , \
{ EROFS_MAP_PARTIAL_REF , " P " } )
2018-07-26 15:21:55 +03:00
TRACE_EVENT ( erofs_lookup ,
TP_PROTO ( struct inode * dir , struct dentry * dentry , unsigned int flags ) ,
TP_ARGS ( dir , dentry , flags ) ,
TP_STRUCT__entry (
__field ( dev_t , dev )
__field ( erofs_nid_t , nid )
2021-09-21 17:35:30 +03:00
__string ( name , dentry - > d_name . name )
2018-07-26 15:21:55 +03:00
__field ( unsigned int , flags )
) ,
TP_fast_assign (
__entry - > dev = dir - > i_sb - > s_dev ;
2019-09-04 05:08:56 +03:00
__entry - > nid = EROFS_I ( dir ) - > nid ;
2021-09-21 17:35:30 +03:00
__assign_str ( name , dentry - > d_name . name ) ;
2018-07-26 15:21:55 +03:00
__entry - > flags = flags ;
) ,
TP_printk ( " dev = (%d,%d), pnid = %llu, name:%s, flags:%x " ,
show_dev_nid ( __entry ) ,
2021-09-21 17:35:30 +03:00
__get_str ( name ) ,
2018-07-26 15:21:55 +03:00
__entry - > flags )
) ;
TRACE_EVENT ( erofs_fill_inode ,
2022-09-27 09:36:07 +03:00
TP_PROTO ( struct inode * inode ) ,
TP_ARGS ( inode ) ,
2018-07-26 15:21:55 +03:00
TP_STRUCT__entry (
__field ( dev_t , dev )
__field ( erofs_nid_t , nid )
__field ( erofs_blk_t , blkaddr )
__field ( unsigned int , ofs )
) ,
TP_fast_assign (
__entry - > dev = inode - > i_sb - > s_dev ;
2019-09-04 05:08:56 +03:00
__entry - > nid = EROFS_I ( inode ) - > nid ;
2023-03-13 16:53:08 +03:00
__entry - > blkaddr = erofs_blknr ( inode - > i_sb , erofs_iloc ( inode ) ) ;
__entry - > ofs = erofs_blkoff ( inode - > i_sb , erofs_iloc ( inode ) ) ;
2018-07-26 15:21:55 +03:00
) ,
2022-09-27 09:36:07 +03:00
TP_printk ( " dev = (%d,%d), nid = %llu, blkaddr %u ofs %u " ,
2018-07-26 15:21:55 +03:00
show_dev_nid ( __entry ) ,
2022-09-27 09:36:07 +03:00
__entry - > blkaddr , __entry - > ofs )
2018-07-26 15:21:55 +03:00
) ;
TRACE_EVENT ( erofs_readpage ,
TP_PROTO ( struct page * page , bool raw ) ,
TP_ARGS ( page , raw ) ,
TP_STRUCT__entry (
__field ( dev_t , dev )
__field ( erofs_nid_t , nid )
__field ( int , dir )
__field ( pgoff_t , index )
__field ( int , uptodate )
__field ( bool , raw )
) ,
TP_fast_assign (
__entry - > dev = page - > mapping - > host - > i_sb - > s_dev ;
2019-09-04 05:08:56 +03:00
__entry - > nid = EROFS_I ( page - > mapping - > host ) - > nid ;
2018-07-26 15:21:55 +03:00
__entry - > dir = S_ISDIR ( page - > mapping - > host - > i_mode ) ;
__entry - > index = page - > index ;
__entry - > uptodate = PageUptodate ( page ) ;
__entry - > raw = raw ;
) ,
TP_printk ( " dev = (%d,%d), nid = %llu, %s, index = %lu, uptodate = %d "
" raw = %d " ,
show_dev_nid ( __entry ) ,
show_file_type ( __entry - > dir ) ,
( unsigned long ) __entry - > index ,
__entry - > uptodate ,
__entry - > raw )
) ;
TRACE_EVENT ( erofs_readpages ,
2020-06-02 07:47:09 +03:00
TP_PROTO ( struct inode * inode , pgoff_t start , unsigned int nrpage ,
2018-07-26 15:21:55 +03:00
bool raw ) ,
2020-06-02 07:47:09 +03:00
TP_ARGS ( inode , start , nrpage , raw ) ,
2018-07-26 15:21:55 +03:00
TP_STRUCT__entry (
__field ( dev_t , dev )
__field ( erofs_nid_t , nid )
__field ( pgoff_t , start )
__field ( unsigned int , nrpage )
__field ( bool , raw )
) ,
TP_fast_assign (
__entry - > dev = inode - > i_sb - > s_dev ;
2019-09-04 05:08:56 +03:00
__entry - > nid = EROFS_I ( inode ) - > nid ;
2020-06-02 07:47:09 +03:00
__entry - > start = start ;
2018-07-26 15:21:55 +03:00
__entry - > nrpage = nrpage ;
__entry - > raw = raw ;
) ,
TP_printk ( " dev = (%d,%d), nid = %llu, start = %lu nrpage = %u raw = %d " ,
show_dev_nid ( __entry ) ,
( unsigned long ) __entry - > start ,
__entry - > nrpage ,
__entry - > raw )
) ;
DECLARE_EVENT_CLASS ( erofs__map_blocks_enter ,
TP_PROTO ( struct inode * inode , struct erofs_map_blocks * map ,
unsigned int flags ) ,
TP_ARGS ( inode , map , flags ) ,
TP_STRUCT__entry (
__field ( dev_t , dev )
__field ( erofs_nid_t , nid )
__field ( erofs_off_t , la )
__field ( u64 , llen )
__field ( unsigned int , flags )
) ,
TP_fast_assign (
__entry - > dev = inode - > i_sb - > s_dev ;
2019-09-04 05:08:56 +03:00
__entry - > nid = EROFS_I ( inode ) - > nid ;
2018-07-26 15:21:55 +03:00
__entry - > la = map - > m_la ;
__entry - > llen = map - > m_llen ;
__entry - > flags = flags ;
) ,
TP_printk ( " dev = (%d,%d), nid = %llu, la %llu llen %llu flags %s " ,
show_dev_nid ( __entry ) ,
2018-09-18 17:27:27 +03:00
__entry - > la , __entry - > llen ,
__entry - > flags ? show_map_flags ( __entry - > flags ) : " NULL " )
2018-07-26 15:21:55 +03:00
) ;
2021-12-09 04:29:18 +03:00
DEFINE_EVENT ( erofs__map_blocks_enter , erofs_map_blocks_enter ,
2018-07-26 15:21:55 +03:00
TP_PROTO ( struct inode * inode , struct erofs_map_blocks * map ,
unsigned flags ) ,
TP_ARGS ( inode , map , flags )
) ;
2018-09-18 17:27:27 +03:00
DEFINE_EVENT ( erofs__map_blocks_enter , z_erofs_map_blocks_iter_enter ,
TP_PROTO ( struct inode * inode , struct erofs_map_blocks * map ,
unsigned int flags ) ,
TP_ARGS ( inode , map , flags )
) ;
2018-07-26 15:21:55 +03:00
DECLARE_EVENT_CLASS ( erofs__map_blocks_exit ,
TP_PROTO ( struct inode * inode , struct erofs_map_blocks * map ,
unsigned int flags , int ret ) ,
TP_ARGS ( inode , map , flags , ret ) ,
TP_STRUCT__entry (
__field ( dev_t , dev )
__field ( erofs_nid_t , nid )
__field ( unsigned int , flags )
__field ( erofs_off_t , la )
__field ( erofs_off_t , pa )
__field ( u64 , llen )
__field ( u64 , plen )
__field ( unsigned int , mflags )
__field ( int , ret )
) ,
TP_fast_assign (
__entry - > dev = inode - > i_sb - > s_dev ;
2019-09-04 05:08:56 +03:00
__entry - > nid = EROFS_I ( inode ) - > nid ;
2018-07-26 15:21:55 +03:00
__entry - > flags = flags ;
__entry - > la = map - > m_la ;
__entry - > pa = map - > m_pa ;
__entry - > llen = map - > m_llen ;
__entry - > plen = map - > m_plen ;
__entry - > mflags = map - > m_flags ;
__entry - > ret = ret ;
) ,
TP_printk ( " dev = (%d,%d), nid = %llu, flags %s "
" la %llu pa %llu llen %llu plen %llu mflags %s ret %d " ,
2018-09-18 17:27:27 +03:00
show_dev_nid ( __entry ) ,
__entry - > flags ? show_map_flags ( __entry - > flags ) : " NULL " ,
2018-07-26 15:21:55 +03:00
__entry - > la , __entry - > pa , __entry - > llen , __entry - > plen ,
show_mflags ( __entry - > mflags ) , __entry - > ret )
) ;
2021-12-09 04:29:18 +03:00
DEFINE_EVENT ( erofs__map_blocks_exit , erofs_map_blocks_exit ,
2018-07-26 15:21:55 +03:00
TP_PROTO ( struct inode * inode , struct erofs_map_blocks * map ,
unsigned flags , int ret ) ,
TP_ARGS ( inode , map , flags , ret )
) ;
2018-09-18 17:27:27 +03:00
DEFINE_EVENT ( erofs__map_blocks_exit , z_erofs_map_blocks_iter_exit ,
TP_PROTO ( struct inode * inode , struct erofs_map_blocks * map ,
unsigned int flags , int ret ) ,
TP_ARGS ( inode , map , flags , ret )
) ;
2018-07-26 15:21:55 +03:00
TRACE_EVENT ( erofs_destroy_inode ,
TP_PROTO ( struct inode * inode ) ,
TP_ARGS ( inode ) ,
TP_STRUCT__entry (
__field ( dev_t , dev )
__field ( erofs_nid_t , nid )
) ,
TP_fast_assign (
__entry - > dev = inode - > i_sb - > s_dev ;
2019-09-04 05:08:56 +03:00
__entry - > nid = EROFS_I ( inode ) - > nid ;
2018-07-26 15:21:55 +03:00
) ,
TP_printk ( " dev = (%d,%d), nid = %llu " , show_dev_nid ( __entry ) )
) ;
# endif /* _TRACE_EROFS_H */
/* This part must be outside protection */
# include <trace/define_trace.h>