xfs
[Top] [All Lists]

[PATCH 08/15] xfs: Add tracing support for inode swap

To: xfs@xxxxxxxxxxx
Subject: [PATCH 08/15] xfs: Add tracing support for inode swap
From: Jeff Liu <jeff.liu@xxxxxxxxxx>
Date: Fri, 16 Nov 2012 14:46:00 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121028 Thunderbird/16.0.2
Add tracing support for swapping inodes.

Signed-off-by: Jie Liu <jeff.liu@xxxxxxxxxx>
---
 fs/xfs/xfs_dfrag.c |    6 ++++++
 fs/xfs/xfs_trace.h |   37 +++++++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c
index f91b79c..0e3e53c 100644
--- a/fs/xfs/xfs_dfrag.c
+++ b/fs/xfs/xfs_dfrag.c
@@ -510,6 +510,9 @@ xfs_swap_inodes(
                goto out_unlock;
        }
 
+       trace_xfs_swap_inode_before(ip, 0);
+       trace_xfs_swap_inode_before(tip, 1);
+
        /*
         * We need to fail if the file is memory mapped.  Once we have tossed
         * all existing pages, the page fault will have no option but to go to
@@ -614,6 +617,9 @@ xfs_swap_inodes(
 
        error = xfs_trans_commit(tp, 0);
 
+       trace_xfs_swap_inode_after(ip, 0);
+       trace_xfs_swap_inode_after(tip, 1);
+
 out:
        if (dic)
                kmem_free(dic);
diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h
index 7d36ccf..b4dcb70 100644
--- a/fs/xfs/xfs_trace.h
+++ b/fs/xfs/xfs_trace.h
@@ -1664,6 +1664,43 @@ DEFINE_EVENT(xfs_swap_extent_class, name, \
 DEFINE_SWAPEXT_EVENT(xfs_swap_extent_before);
 DEFINE_SWAPEXT_EVENT(xfs_swap_extent_after);
 
+#define XFS_SWAPINO_INODES \
+       { 0,    "target" }, \
+       { 1,    "temp" }
+
+DECLARE_EVENT_CLASS(xfs_swap_inode_class,
+       TP_PROTO(struct xfs_inode *ip, int which),
+       TP_ARGS(ip, which),
+       TP_STRUCT__entry(
+               __field(dev_t, dev)
+               __field(int, which)
+               __field(xfs_ino_t, ino)
+               __field(int, format)
+               __field(int, fork_off)
+       ),
+       TP_fast_assign(
+               __entry->dev = VFS_I(ip)->i_sb->s_dev;
+               __entry->which = which;
+               __entry->ino = ip->i_ino;
+               __entry->format = ip->i_d.di_format;
+               __entry->fork_off = XFS_IFORK_BOFF(ip);
+       ),
+       TP_printk("dev %d:%d ino 0x%llx (%s), %s format, fork offset %d",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 __entry->ino,
+                 __print_symbolic(__entry->which, XFS_SWAPINO_INODES),
+                 __print_symbolic(__entry->format, XFS_INODE_FORMAT_STR),
+                 __entry->fork_off)
+)
+
+#define DEFINE_SWAPINO_EVENT(name) \
+DEFINE_EVENT(xfs_swap_inode_class, name, \
+       TP_PROTO(struct xfs_inode *ip, int which), \
+       TP_ARGS(ip, which))
+
+DEFINE_SWAPINO_EVENT(xfs_swap_inode_before);
+DEFINE_SWAPINO_EVENT(xfs_swap_inode_after);
+
 DECLARE_EVENT_CLASS(xfs_log_recover_item_class,
        TP_PROTO(struct xlog *log, struct xlog_recover *trans,
                struct xlog_recover_item *item, int pass),
-- 
1.7.4.1

<Prev in Thread] Current Thread [Next in Thread>
  • [PATCH 08/15] xfs: Add tracing support for inode swap, Jeff Liu <=