162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci#undef TRACE_SYSTEM 462306a36Sopenharmony_ci#define TRACE_SYSTEM ext2 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#if !defined(_EXT2_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 762306a36Sopenharmony_ci#define _EXT2_TRACE_H 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/tracepoint.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext2_dio_class, 1262306a36Sopenharmony_ci TP_PROTO(struct kiocb *iocb, struct iov_iter *iter, ssize_t ret), 1362306a36Sopenharmony_ci TP_ARGS(iocb, iter, ret), 1462306a36Sopenharmony_ci TP_STRUCT__entry( 1562306a36Sopenharmony_ci __field(dev_t, dev) 1662306a36Sopenharmony_ci __field(ino_t, ino) 1762306a36Sopenharmony_ci __field(loff_t, isize) 1862306a36Sopenharmony_ci __field(loff_t, pos) 1962306a36Sopenharmony_ci __field(size_t, count) 2062306a36Sopenharmony_ci __field(int, ki_flags) 2162306a36Sopenharmony_ci __field(bool, aio) 2262306a36Sopenharmony_ci __field(ssize_t, ret) 2362306a36Sopenharmony_ci ), 2462306a36Sopenharmony_ci TP_fast_assign( 2562306a36Sopenharmony_ci __entry->dev = file_inode(iocb->ki_filp)->i_sb->s_dev; 2662306a36Sopenharmony_ci __entry->ino = file_inode(iocb->ki_filp)->i_ino; 2762306a36Sopenharmony_ci __entry->isize = file_inode(iocb->ki_filp)->i_size; 2862306a36Sopenharmony_ci __entry->pos = iocb->ki_pos; 2962306a36Sopenharmony_ci __entry->count = iov_iter_count(iter); 3062306a36Sopenharmony_ci __entry->ki_flags = iocb->ki_flags; 3162306a36Sopenharmony_ci __entry->aio = !is_sync_kiocb(iocb); 3262306a36Sopenharmony_ci __entry->ret = ret; 3362306a36Sopenharmony_ci ), 3462306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%lx isize 0x%llx pos 0x%llx len %zu flags %s aio %d ret %zd", 3562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 3662306a36Sopenharmony_ci __entry->ino, 3762306a36Sopenharmony_ci __entry->isize, 3862306a36Sopenharmony_ci __entry->pos, 3962306a36Sopenharmony_ci __entry->count, 4062306a36Sopenharmony_ci __print_flags(__entry->ki_flags, "|", TRACE_IOCB_STRINGS), 4162306a36Sopenharmony_ci __entry->aio, 4262306a36Sopenharmony_ci __entry->ret) 4362306a36Sopenharmony_ci); 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci#define DEFINE_DIO_RW_EVENT(name) \ 4662306a36Sopenharmony_ciDEFINE_EVENT(ext2_dio_class, name, \ 4762306a36Sopenharmony_ci TP_PROTO(struct kiocb *iocb, struct iov_iter *iter, ssize_t ret), \ 4862306a36Sopenharmony_ci TP_ARGS(iocb, iter, ret)) 4962306a36Sopenharmony_ciDEFINE_DIO_RW_EVENT(ext2_dio_write_begin); 5062306a36Sopenharmony_ciDEFINE_DIO_RW_EVENT(ext2_dio_write_end); 5162306a36Sopenharmony_ciDEFINE_DIO_RW_EVENT(ext2_dio_write_buff_end); 5262306a36Sopenharmony_ciDEFINE_DIO_RW_EVENT(ext2_dio_read_begin); 5362306a36Sopenharmony_ciDEFINE_DIO_RW_EVENT(ext2_dio_read_end); 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ciTRACE_EVENT(ext2_dio_write_endio, 5662306a36Sopenharmony_ci TP_PROTO(struct kiocb *iocb, ssize_t size, int ret), 5762306a36Sopenharmony_ci TP_ARGS(iocb, size, ret), 5862306a36Sopenharmony_ci TP_STRUCT__entry( 5962306a36Sopenharmony_ci __field(dev_t, dev) 6062306a36Sopenharmony_ci __field(ino_t, ino) 6162306a36Sopenharmony_ci __field(loff_t, isize) 6262306a36Sopenharmony_ci __field(loff_t, pos) 6362306a36Sopenharmony_ci __field(ssize_t, size) 6462306a36Sopenharmony_ci __field(int, ki_flags) 6562306a36Sopenharmony_ci __field(bool, aio) 6662306a36Sopenharmony_ci __field(int, ret) 6762306a36Sopenharmony_ci ), 6862306a36Sopenharmony_ci TP_fast_assign( 6962306a36Sopenharmony_ci __entry->dev = file_inode(iocb->ki_filp)->i_sb->s_dev; 7062306a36Sopenharmony_ci __entry->ino = file_inode(iocb->ki_filp)->i_ino; 7162306a36Sopenharmony_ci __entry->isize = file_inode(iocb->ki_filp)->i_size; 7262306a36Sopenharmony_ci __entry->pos = iocb->ki_pos; 7362306a36Sopenharmony_ci __entry->size = size; 7462306a36Sopenharmony_ci __entry->ki_flags = iocb->ki_flags; 7562306a36Sopenharmony_ci __entry->aio = !is_sync_kiocb(iocb); 7662306a36Sopenharmony_ci __entry->ret = ret; 7762306a36Sopenharmony_ci ), 7862306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%lx isize 0x%llx pos 0x%llx len %zd flags %s aio %d ret %d", 7962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 8062306a36Sopenharmony_ci __entry->ino, 8162306a36Sopenharmony_ci __entry->isize, 8262306a36Sopenharmony_ci __entry->pos, 8362306a36Sopenharmony_ci __entry->size, 8462306a36Sopenharmony_ci __print_flags(__entry->ki_flags, "|", TRACE_IOCB_STRINGS), 8562306a36Sopenharmony_ci __entry->aio, 8662306a36Sopenharmony_ci __entry->ret) 8762306a36Sopenharmony_ci); 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci#endif /* _EXT2_TRACE_H */ 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH 9262306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH . 9362306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace 9462306a36Sopenharmony_ci#include <trace/define_trace.h> 95