]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
xfs: adder caller IP to xfs_defer* tracepoints
authorDave Chinner <dchinner@redhat.com>
Wed, 9 May 2018 14:48:52 +0000 (07:48 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Thu, 10 May 2018 15:56:46 +0000 (08:56 -0700)
So it's clear in the trace where they are being called from.

Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/libxfs/xfs_defer.c
fs/xfs/xfs_trace.h

index 4d87d96619078e5c2d76ee791b8809bcb0671e32..3daf175e25359d4f3bde26b9fb3903c41489bf4a 100644 (file)
@@ -220,7 +220,7 @@ xfs_defer_trans_abort(
 {
        struct xfs_defer_pending        *dfp;
 
-       trace_xfs_defer_trans_abort(tp->t_mountp, dop);
+       trace_xfs_defer_trans_abort(tp->t_mountp, dop, _RET_IP_);
 
        /* Abort intent items that don't have a done item. */
        list_for_each_entry(dfp, &dop->dop_pending, dfp_list) {
@@ -253,7 +253,7 @@ xfs_defer_trans_roll(
        for (i = 0; i < XFS_DEFER_OPS_NR_BUFS && dop->dop_bufs[i]; i++)
                xfs_trans_dirty_buf(*tp, dop->dop_bufs[i]);
 
-       trace_xfs_defer_trans_roll((*tp)->t_mountp, dop);
+       trace_xfs_defer_trans_roll((*tp)->t_mountp, dop, _RET_IP_);
 
        /* Roll the transaction. */
        error = xfs_trans_roll(tp);
@@ -356,7 +356,7 @@ xfs_defer_finish(
 
        ASSERT((*tp)->t_flags & XFS_TRANS_PERM_LOG_RES);
 
-       trace_xfs_defer_finish((*tp)->t_mountp, dop);
+       trace_xfs_defer_finish((*tp)->t_mountp, dop, _RET_IP_);
 
        /*
         * Attach dfops to the transaction during deferred ops processing. This
@@ -443,7 +443,7 @@ xfs_defer_finish(
        if (error)
                trace_xfs_defer_finish_error((*tp)->t_mountp, dop, error);
        else
-               trace_xfs_defer_finish_done((*tp)->t_mountp, dop);
+               trace_xfs_defer_finish_done((*tp)->t_mountp, dop, _RET_IP_);
        return error;
 }
 
@@ -459,7 +459,7 @@ xfs_defer_cancel(
        struct list_head                *pwi;
        struct list_head                *n;
 
-       trace_xfs_defer_cancel(NULL, dop);
+       trace_xfs_defer_cancel(NULL, dop, _RET_IP_);
 
        /*
         * Free the pending items.  Caller should already have arranged
@@ -544,5 +544,5 @@ xfs_defer_init(
        *fbp = NULLFSBLOCK;
        INIT_LIST_HEAD(&dop->dop_intake);
        INIT_LIST_HEAD(&dop->dop_pending);
-       trace_xfs_defer_init(NULL, dop);
+       trace_xfs_defer_init(NULL, dop, _RET_IP_);
 }
index 1f95c20e34424890b4d4352ea255bc62471d3454..e2ffc1e01bd8440c4fb88f969e7028819d5390e9 100644 (file)
@@ -2246,30 +2246,35 @@ struct xfs_defer_pending;
 struct xfs_defer_ops;
 
 DECLARE_EVENT_CLASS(xfs_defer_class,
-       TP_PROTO(struct xfs_mount *mp, struct xfs_defer_ops *dop),
-       TP_ARGS(mp, dop),
+       TP_PROTO(struct xfs_mount *mp, struct xfs_defer_ops *dop,
+                unsigned long caller_ip),
+       TP_ARGS(mp, dop, caller_ip),
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(void *, dop)
                __field(char, committed)
                __field(char, low)
+               __field(unsigned long, caller_ip)
        ),
        TP_fast_assign(
                __entry->dev = mp ? mp->m_super->s_dev : 0;
                __entry->dop = dop;
                __entry->committed = dop->dop_committed;
                __entry->low = dop->dop_low;
+               __entry->caller_ip = caller_ip;
        ),
-       TP_printk("dev %d:%d ops %p committed %d low %d",
+       TP_printk("dev %d:%d ops %p committed %d low %d, caller %pS",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
                  __entry->dop,
                  __entry->committed,
-                 __entry->low)
+                 __entry->low,
+                 (char *)__entry->caller_ip)
 )
 #define DEFINE_DEFER_EVENT(name) \
 DEFINE_EVENT(xfs_defer_class, name, \
-       TP_PROTO(struct xfs_mount *mp, struct xfs_defer_ops *dop), \
-       TP_ARGS(mp, dop))
+       TP_PROTO(struct xfs_mount *mp, struct xfs_defer_ops *dop, \
+                unsigned long caller_ip), \
+       TP_ARGS(mp, dop, caller_ip))
 
 DECLARE_EVENT_CLASS(xfs_defer_error_class,
        TP_PROTO(struct xfs_mount *mp, struct xfs_defer_ops *dop, int error),