Commit f8adb4d5 authored by Li Zefan's avatar Li Zefan Committed by Alex Elder

xfs: convert more trace events to DEFINE_EVENT

Use DECLARE_EVENT_CLASS, and save ~15K:

   text    data     bss     dec     hex filename
 171949   43028      48  215025   347f1 fs/xfs/linux-2.6/xfs_trace.o.orig
 156521   43028      36  199585   30ba1 fs/xfs/linux-2.6/xfs_trace.o

No change in functionality.
Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
Acked-by: default avatarSteven Rostedt <rostedt@goodmis.org>
Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
parent 292ec4cf
...@@ -82,33 +82,6 @@ DECLARE_EVENT_CLASS(xfs_attr_list_class, ...@@ -82,33 +82,6 @@ DECLARE_EVENT_CLASS(xfs_attr_list_class,
) )
) )
#define DEFINE_PERAG_REF_EVENT(name) \
TRACE_EVENT(name, \
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, int refcount, \
unsigned long caller_ip), \
TP_ARGS(mp, agno, refcount, caller_ip), \
TP_STRUCT__entry( \
__field(dev_t, dev) \
__field(xfs_agnumber_t, agno) \
__field(int, refcount) \
__field(unsigned long, caller_ip) \
), \
TP_fast_assign( \
__entry->dev = mp->m_super->s_dev; \
__entry->agno = agno; \
__entry->refcount = refcount; \
__entry->caller_ip = caller_ip; \
), \
TP_printk("dev %d:%d agno %u refcount %d caller %pf", \
MAJOR(__entry->dev), MINOR(__entry->dev), \
__entry->agno, \
__entry->refcount, \
(char *)__entry->caller_ip) \
);
DEFINE_PERAG_REF_EVENT(xfs_perag_get)
DEFINE_PERAG_REF_EVENT(xfs_perag_put)
#define DEFINE_ATTR_LIST_EVENT(name) \ #define DEFINE_ATTR_LIST_EVENT(name) \
DEFINE_EVENT(xfs_attr_list_class, name, \ DEFINE_EVENT(xfs_attr_list_class, name, \
TP_PROTO(struct xfs_attr_list_context *ctx), \ TP_PROTO(struct xfs_attr_list_context *ctx), \
...@@ -122,6 +95,37 @@ DEFINE_ATTR_LIST_EVENT(xfs_attr_list_add); ...@@ -122,6 +95,37 @@ DEFINE_ATTR_LIST_EVENT(xfs_attr_list_add);
DEFINE_ATTR_LIST_EVENT(xfs_attr_list_wrong_blk); DEFINE_ATTR_LIST_EVENT(xfs_attr_list_wrong_blk);
DEFINE_ATTR_LIST_EVENT(xfs_attr_list_notfound); DEFINE_ATTR_LIST_EVENT(xfs_attr_list_notfound);
DECLARE_EVENT_CLASS(xfs_perag_class,
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, int refcount,
unsigned long caller_ip),
TP_ARGS(mp, agno, refcount, caller_ip),
TP_STRUCT__entry(
__field(dev_t, dev)
__field(xfs_agnumber_t, agno)
__field(int, refcount)
__field(unsigned long, caller_ip)
),
TP_fast_assign(
__entry->dev = mp->m_super->s_dev;
__entry->agno = agno;
__entry->refcount = refcount;
__entry->caller_ip = caller_ip;
),
TP_printk("dev %d:%d agno %u refcount %d caller %pf",
MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->agno,
__entry->refcount,
(char *)__entry->caller_ip)
);
#define DEFINE_PERAG_REF_EVENT(name) \
DEFINE_EVENT(xfs_perag_class, name, \
TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, int refcount, \
unsigned long caller_ip), \
TP_ARGS(mp, agno, refcount, caller_ip))
DEFINE_PERAG_REF_EVENT(xfs_perag_get);
DEFINE_PERAG_REF_EVENT(xfs_perag_put);
TRACE_EVENT(xfs_attr_list_node_descend, TRACE_EVENT(xfs_attr_list_node_descend,
TP_PROTO(struct xfs_attr_list_context *ctx, TP_PROTO(struct xfs_attr_list_context *ctx,
struct xfs_da_node_entry *btree), struct xfs_da_node_entry *btree),
...@@ -775,165 +779,181 @@ DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_enter); ...@@ -775,165 +779,181 @@ DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_enter);
DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_exit); DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_exit);
DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_sub); DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_sub);
#define DEFINE_RW_EVENT(name) \ DECLARE_EVENT_CLASS(xfs_file_class,
TRACE_EVENT(name, \ TP_PROTO(struct xfs_inode *ip, size_t count, loff_t offset, int flags),
TP_PROTO(struct xfs_inode *ip, size_t count, loff_t offset, int flags), \ TP_ARGS(ip, count, offset, flags),
TP_ARGS(ip, count, offset, flags), \ TP_STRUCT__entry(
TP_STRUCT__entry( \ __field(dev_t, dev)
__field(dev_t, dev) \ __field(xfs_ino_t, ino)
__field(xfs_ino_t, ino) \ __field(xfs_fsize_t, size)
__field(xfs_fsize_t, size) \ __field(xfs_fsize_t, new_size)
__field(xfs_fsize_t, new_size) \ __field(loff_t, offset)
__field(loff_t, offset) \ __field(size_t, count)
__field(size_t, count) \ __field(int, flags)
__field(int, flags) \ ),
), \ TP_fast_assign(
TP_fast_assign( \ __entry->dev = VFS_I(ip)->i_sb->s_dev;
__entry->dev = VFS_I(ip)->i_sb->s_dev; \ __entry->ino = ip->i_ino;
__entry->ino = ip->i_ino; \ __entry->size = ip->i_d.di_size;
__entry->size = ip->i_d.di_size; \ __entry->new_size = ip->i_new_size;
__entry->new_size = ip->i_new_size; \ __entry->offset = offset;
__entry->offset = offset; \ __entry->count = count;
__entry->count = count; \ __entry->flags = flags;
__entry->flags = flags; \ ),
), \ TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx "
TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " \ "offset 0x%llx count 0x%zx ioflags %s",
"offset 0x%llx count 0x%zx ioflags %s", \ MAJOR(__entry->dev), MINOR(__entry->dev),
MAJOR(__entry->dev), MINOR(__entry->dev), \ __entry->ino,
__entry->ino, \ __entry->size,
__entry->size, \ __entry->new_size,
__entry->new_size, \ __entry->offset,
__entry->offset, \ __entry->count,
__entry->count, \ __print_flags(__entry->flags, "|", XFS_IO_FLAGS))
__print_flags(__entry->flags, "|", XFS_IO_FLAGS)) \
) )
#define DEFINE_RW_EVENT(name) \
DEFINE_EVENT(xfs_file_class, name, \
TP_PROTO(struct xfs_inode *ip, size_t count, loff_t offset, int flags), \
TP_ARGS(ip, count, offset, flags))
DEFINE_RW_EVENT(xfs_file_read); DEFINE_RW_EVENT(xfs_file_read);
DEFINE_RW_EVENT(xfs_file_buffered_write); DEFINE_RW_EVENT(xfs_file_buffered_write);
DEFINE_RW_EVENT(xfs_file_direct_write); DEFINE_RW_EVENT(xfs_file_direct_write);
DEFINE_RW_EVENT(xfs_file_splice_read); DEFINE_RW_EVENT(xfs_file_splice_read);
DEFINE_RW_EVENT(xfs_file_splice_write); DEFINE_RW_EVENT(xfs_file_splice_write);
DECLARE_EVENT_CLASS(xfs_page_class,
#define DEFINE_PAGE_EVENT(name) \ TP_PROTO(struct inode *inode, struct page *page, unsigned long off),
TRACE_EVENT(name, \ TP_ARGS(inode, page, off),
TP_PROTO(struct inode *inode, struct page *page, unsigned long off), \ TP_STRUCT__entry(
TP_ARGS(inode, page, off), \ __field(dev_t, dev)
TP_STRUCT__entry( \ __field(xfs_ino_t, ino)
__field(dev_t, dev) \ __field(pgoff_t, pgoff)
__field(xfs_ino_t, ino) \ __field(loff_t, size)
__field(pgoff_t, pgoff) \ __field(unsigned long, offset)
__field(loff_t, size) \ __field(int, delalloc)
__field(unsigned long, offset) \ __field(int, unmapped)
__field(int, delalloc) \ __field(int, unwritten)
__field(int, unmapped) \ ),
__field(int, unwritten) \ TP_fast_assign(
), \ int delalloc = -1, unmapped = -1, unwritten = -1;
TP_fast_assign( \
int delalloc = -1, unmapped = -1, unwritten = -1; \ if (page_has_buffers(page))
\ xfs_count_page_state(page, &delalloc,
if (page_has_buffers(page)) \ &unmapped, &unwritten);
xfs_count_page_state(page, &delalloc, \ __entry->dev = inode->i_sb->s_dev;
&unmapped, &unwritten); \ __entry->ino = XFS_I(inode)->i_ino;
__entry->dev = inode->i_sb->s_dev; \ __entry->pgoff = page_offset(page);
__entry->ino = XFS_I(inode)->i_ino; \ __entry->size = i_size_read(inode);
__entry->pgoff = page_offset(page); \ __entry->offset = off;
__entry->size = i_size_read(inode); \ __entry->delalloc = delalloc;
__entry->offset = off; \ __entry->unmapped = unmapped;
__entry->delalloc = delalloc; \ __entry->unwritten = unwritten;
__entry->unmapped = unmapped; \ ),
__entry->unwritten = unwritten; \ TP_printk("dev %d:%d ino 0x%llx pgoff 0x%lx size 0x%llx offset %lx "
), \ "delalloc %d unmapped %d unwritten %d",
TP_printk("dev %d:%d ino 0x%llx pgoff 0x%lx size 0x%llx offset %lx " \ MAJOR(__entry->dev), MINOR(__entry->dev),
"delalloc %d unmapped %d unwritten %d", \ __entry->ino,
MAJOR(__entry->dev), MINOR(__entry->dev), \ __entry->pgoff,
__entry->ino, \ __entry->size,
__entry->pgoff, \ __entry->offset,
__entry->size, \ __entry->delalloc,
__entry->offset, \ __entry->unmapped,
__entry->delalloc, \ __entry->unwritten)
__entry->unmapped, \
__entry->unwritten) \
) )
#define DEFINE_PAGE_EVENT(name) \
DEFINE_EVENT(xfs_page_class, name, \
TP_PROTO(struct inode *inode, struct page *page, unsigned long off), \
TP_ARGS(inode, page, off))
DEFINE_PAGE_EVENT(xfs_writepage); DEFINE_PAGE_EVENT(xfs_writepage);
DEFINE_PAGE_EVENT(xfs_releasepage); DEFINE_PAGE_EVENT(xfs_releasepage);
DEFINE_PAGE_EVENT(xfs_invalidatepage); DEFINE_PAGE_EVENT(xfs_invalidatepage);
#define DEFINE_IOMAP_EVENT(name) \ DECLARE_EVENT_CLASS(xfs_iomap_class,
TRACE_EVENT(name, \ TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count,
TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count, \ int flags, struct xfs_bmbt_irec *irec),
int flags, struct xfs_bmbt_irec *irec), \ TP_ARGS(ip, offset, count, flags, irec),
TP_ARGS(ip, offset, count, flags, irec), \ TP_STRUCT__entry(
TP_STRUCT__entry( \ __field(dev_t, dev)
__field(dev_t, dev) \ __field(xfs_ino_t, ino)
__field(xfs_ino_t, ino) \ __field(loff_t, size)
__field(loff_t, size) \ __field(loff_t, new_size)
__field(loff_t, new_size) \ __field(loff_t, offset)
__field(loff_t, offset) \ __field(size_t, count)
__field(size_t, count) \ __field(int, flags)
__field(int, flags) \ __field(xfs_fileoff_t, startoff)
__field(xfs_fileoff_t, startoff) \ __field(xfs_fsblock_t, startblock)
__field(xfs_fsblock_t, startblock) \ __field(xfs_filblks_t, blockcount)
__field(xfs_filblks_t, blockcount) \ ),
), \ TP_fast_assign(
TP_fast_assign( \ __entry->dev = VFS_I(ip)->i_sb->s_dev;
__entry->dev = VFS_I(ip)->i_sb->s_dev; \ __entry->ino = ip->i_ino;
__entry->ino = ip->i_ino; \ __entry->size = ip->i_d.di_size;
__entry->size = ip->i_d.di_size; \ __entry->new_size = ip->i_new_size;
__entry->new_size = ip->i_new_size; \ __entry->offset = offset;
__entry->offset = offset; \ __entry->count = count;
__entry->count = count; \ __entry->flags = flags;
__entry->flags = flags; \ __entry->startoff = irec ? irec->br_startoff : 0;
__entry->startoff = irec ? irec->br_startoff : 0; \ __entry->startblock = irec ? irec->br_startblock : 0;
__entry->startblock = irec ? irec->br_startblock : 0; \ __entry->blockcount = irec ? irec->br_blockcount : 0;
__entry->blockcount = irec ? irec->br_blockcount : 0; \ ),
), \ TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx "
TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " \ "offset 0x%llx count %zd flags %s "
"offset 0x%llx count %zd flags %s " \ "startoff 0x%llx startblock %lld blockcount 0x%llx",
"startoff 0x%llx startblock %lld blockcount 0x%llx", \ MAJOR(__entry->dev), MINOR(__entry->dev),
MAJOR(__entry->dev), MINOR(__entry->dev), \ __entry->ino,
__entry->ino, \ __entry->size,
__entry->size, \ __entry->new_size,
__entry->new_size, \ __entry->offset,
__entry->offset, \ __entry->count,
__entry->count, \ __print_flags(__entry->flags, "|", BMAPI_FLAGS),
__print_flags(__entry->flags, "|", BMAPI_FLAGS), \ __entry->startoff,
__entry->startoff, \ (__int64_t)__entry->startblock,
(__int64_t)__entry->startblock, \ __entry->blockcount)
__entry->blockcount) \
) )
#define DEFINE_IOMAP_EVENT(name) \
DEFINE_EVENT(xfs_iomap_class, name, \
TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count, \
int flags, struct xfs_bmbt_irec *irec), \
TP_ARGS(ip, offset, count, flags, irec))
DEFINE_IOMAP_EVENT(xfs_iomap_enter); DEFINE_IOMAP_EVENT(xfs_iomap_enter);
DEFINE_IOMAP_EVENT(xfs_iomap_found); DEFINE_IOMAP_EVENT(xfs_iomap_found);
DEFINE_IOMAP_EVENT(xfs_iomap_alloc); DEFINE_IOMAP_EVENT(xfs_iomap_alloc);
#define DEFINE_SIMPLE_IO_EVENT(name) \ DECLARE_EVENT_CLASS(xfs_simple_io_class,
TRACE_EVENT(name, \ TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count),
TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count), \ TP_ARGS(ip, offset, count),
TP_ARGS(ip, offset, count), \ TP_STRUCT__entry(
TP_STRUCT__entry( \ __field(dev_t, dev)
__field(dev_t, dev) \ __field(xfs_ino_t, ino)
__field(xfs_ino_t, ino) \ __field(loff_t, size)
__field(loff_t, size) \ __field(loff_t, new_size)
__field(loff_t, new_size) \ __field(loff_t, offset)
__field(loff_t, offset) \ __field(size_t, count)
__field(size_t, count) \ ),
), \ TP_fast_assign(
TP_fast_assign( \ __entry->dev = VFS_I(ip)->i_sb->s_dev;
__entry->dev = VFS_I(ip)->i_sb->s_dev; \ __entry->ino = ip->i_ino;
__entry->ino = ip->i_ino; \ __entry->size = ip->i_d.di_size;
__entry->size = ip->i_d.di_size; \ __entry->new_size = ip->i_new_size;
__entry->new_size = ip->i_new_size; \ __entry->offset = offset;
__entry->offset = offset; \ __entry->count = count;
__entry->count = count; \ ),
), \ TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx "
TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " \ "offset 0x%llx count %zd",
"offset 0x%llx count %zd", \ MAJOR(__entry->dev), MINOR(__entry->dev),
MAJOR(__entry->dev), MINOR(__entry->dev), \ __entry->ino,
__entry->ino, \ __entry->size,
__entry->size, \ __entry->new_size,
__entry->new_size, \ __entry->offset,
__entry->offset, \ __entry->count)
__entry->count) \
); );
#define DEFINE_SIMPLE_IO_EVENT(name) \
DEFINE_EVENT(xfs_simple_io_class, name, \
TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count), \
TP_ARGS(ip, offset, count))
DEFINE_SIMPLE_IO_EVENT(xfs_delalloc_enospc); DEFINE_SIMPLE_IO_EVENT(xfs_delalloc_enospc);
DEFINE_SIMPLE_IO_EVENT(xfs_unwritten_convert); DEFINE_SIMPLE_IO_EVENT(xfs_unwritten_convert);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment