xfs: fix xfs_fsblock_t tracing
authorChristoph Hellwig <hch@infradead.org>
Mon, 15 Feb 2010 22:02:19 +0000 (22:02 +0000)
committerAlex Elder <aelder@sgi.com>
Mon, 1 Mar 2010 22:35:17 +0000 (16:35 -0600)
Using a static buffer in xfs_fmtfsblock means we can corrupt traces if
multiple CPUs hit this code path at the same.  Just remove xfs_fmtfsblock
for now and print the block number purely numerical.  If we want the
NULLFSBLOCK and NULLSTARTBLOCK formatting back the best way would be
a decoding plugin in the trace-cmd userspace command.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Alex Elder <aelder@sgi.com>
fs/xfs/linux-2.6/xfs_trace.c
fs/xfs/linux-2.6/xfs_trace.h

index 856eb3c..5a10760 100644 (file)
 #include "quota/xfs_dquot.h"
 
 /*
- * Format fsblock number into a static buffer & return it.
- */
-STATIC char *xfs_fmtfsblock(xfs_fsblock_t bno)
-{
-       static char rval[50];
-
-       if (bno == NULLFSBLOCK)
-               sprintf(rval, "NULLFSBLOCK");
-       else if (isnullstartblock(bno))
-               sprintf(rval, "NULLSTARTBLOCK(%lld)", startblockval(bno));
-       else
-               sprintf(rval, "%lld", (xfs_dfsbno_t)bno);
-       return rval;
-}
-
-/*
  * We include this last to have the helpers above available for the trace
  * event implementations.
  */
index 87f9fad..fcaa62f 100644 (file)
@@ -197,13 +197,13 @@ TRACE_EVENT(xfs_iext_insert,
                __entry->caller_ip = caller_ip;
        ),
        TP_printk("dev %d:%d ino 0x%llx state %s idx %ld "
-                 "offset %lld block %s count %lld flag %d caller %pf",
+                 "offset %lld block %lld count %lld flag %d caller %pf",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
                  __entry->ino,
                  __print_flags(__entry->bmap_state, "|", XFS_BMAP_EXT_FLAGS),
                  (long)__entry->idx,
                  __entry->startoff,
-                 xfs_fmtfsblock(__entry->startblock),
+                 (__int64_t)__entry->startblock,
                  __entry->blockcount,
                  __entry->state,
                  (char *)__entry->caller_ip)
@@ -241,13 +241,13 @@ DECLARE_EVENT_CLASS(xfs_bmap_class,
                __entry->caller_ip = caller_ip;
        ),
        TP_printk("dev %d:%d ino 0x%llx state %s idx %ld "
-                 "offset %lld block %s count %lld flag %d caller %pf",
+                 "offset %lld block %lld count %lld flag %d caller %pf",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
                  __entry->ino,
                  __print_flags(__entry->bmap_state, "|", XFS_BMAP_EXT_FLAGS),
                  (long)__entry->idx,
                  __entry->startoff,
-                 xfs_fmtfsblock(__entry->startblock),
+                 (__int64_t)__entry->startblock,
                  __entry->blockcount,
                  __entry->state,
                  (char *)__entry->caller_ip)
@@ -881,7 +881,7 @@ TRACE_EVENT(name, \
        ), \
        TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " \
                  "offset 0x%llx count %zd flags %s " \
-                 "startoff 0x%llx startblock %s blockcount 0x%llx", \
+                 "startoff 0x%llx startblock %lld blockcount 0x%llx", \
                  MAJOR(__entry->dev), MINOR(__entry->dev), \
                  __entry->ino, \
                  __entry->size, \
@@ -890,7 +890,7 @@ TRACE_EVENT(name, \
                  __entry->count, \
                  __print_flags(__entry->flags, "|", BMAPI_FLAGS), \
                  __entry->startoff, \
-                 xfs_fmtfsblock(__entry->startblock), \
+                 (__int64_t)__entry->startblock, \
                  __entry->blockcount) \
 )
 DEFINE_IOMAP_EVENT(xfs_iomap_enter);