xfs: xfs_iomap_prealloc_size() tracepoint
authorBrian Foster <bfoster@redhat.com>
Mon, 18 Mar 2013 14:51:48 +0000 (10:51 -0400)
committerBen Myers <bpm@sgi.com>
Fri, 22 Mar 2013 21:07:56 +0000 (16:07 -0500)
Add a tracepoint to provide some feedback on preallocation size
calculation.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
fs/xfs/xfs_iomap.c
fs/xfs/xfs_trace.h

index 0a530853b53db59c24a6efba19f165e7a728b369..8f8aaee7f3791457c9ec43ea46927bc05f624f04 100644 (file)
@@ -518,6 +518,9 @@ check_writeio:
        if (alloc_blocks < mp->m_writeio_blocks)
                alloc_blocks = mp->m_writeio_blocks;
 
+       trace_xfs_iomap_prealloc_size(ip, alloc_blocks, shift,
+                                     mp->m_writeio_blocks);
+
        return alloc_blocks;
 }
 
index 16a812977eab3d8fcf001e0175e6cfd773dcfe67..aa4db3307d369f0687cceb93e978d48397aeefcf 100644 (file)
@@ -619,6 +619,30 @@ DECLARE_EVENT_CLASS(xfs_iref_class,
                  (char *)__entry->caller_ip)
 )
 
+TRACE_EVENT(xfs_iomap_prealloc_size,
+       TP_PROTO(struct xfs_inode *ip, xfs_fsblock_t blocks, int shift,
+                unsigned int writeio_blocks),
+       TP_ARGS(ip, blocks, shift, writeio_blocks),
+       TP_STRUCT__entry(
+               __field(dev_t, dev)
+               __field(xfs_ino_t, ino)
+               __field(xfs_fsblock_t, blocks)
+               __field(int, shift)
+               __field(unsigned int, writeio_blocks)
+       ),
+       TP_fast_assign(
+               __entry->dev = VFS_I(ip)->i_sb->s_dev;
+               __entry->ino = ip->i_ino;
+               __entry->blocks = blocks;
+               __entry->shift = shift;
+               __entry->writeio_blocks = writeio_blocks;
+       ),
+       TP_printk("dev %d:%d ino 0x%llx prealloc blocks %llu shift %d "
+                 "m_writeio_blocks %u",
+                 MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino,
+                 __entry->blocks, __entry->shift, __entry->writeio_blocks)
+)
+
 #define DEFINE_IREF_EVENT(name) \
 DEFINE_EVENT(xfs_iref_class, name, \
        TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip), \