diff options
author | Christoph Hellwig <hch@infradead.org> | 2010-02-15 17:02:19 -0500 |
---|---|---|
committer | Alex Elder <aelder@sgi.com> | 2010-03-01 17:35:17 -0500 |
commit | f7008d0aeba21396b3422df135b692ae701bd0c8 (patch) | |
tree | 6c51cbd3f7377f0394551988ce3b646fe2b31133 /fs | |
parent | 024910cbac323ab2e5ad6d7fa7958799b04b9728 (diff) |
xfs: fix xfs_fsblock_t tracing
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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_trace.c | 16 | ||||
-rw-r--r-- | fs/xfs/linux-2.6/xfs_trace.h | 12 |
2 files changed, 6 insertions, 22 deletions
diff --git a/fs/xfs/linux-2.6/xfs_trace.c b/fs/xfs/linux-2.6/xfs_trace.c index 856eb3c8d605..5a107601e969 100644 --- a/fs/xfs/linux-2.6/xfs_trace.c +++ b/fs/xfs/linux-2.6/xfs_trace.c | |||
@@ -52,22 +52,6 @@ | |||
52 | #include "quota/xfs_dquot.h" | 52 | #include "quota/xfs_dquot.h" |
53 | 53 | ||
54 | /* | 54 | /* |
55 | * Format fsblock number into a static buffer & return it. | ||
56 | */ | ||
57 | STATIC char *xfs_fmtfsblock(xfs_fsblock_t bno) | ||
58 | { | ||
59 | static char rval[50]; | ||
60 | |||
61 | if (bno == NULLFSBLOCK) | ||
62 | sprintf(rval, "NULLFSBLOCK"); | ||
63 | else if (isnullstartblock(bno)) | ||
64 | sprintf(rval, "NULLSTARTBLOCK(%lld)", startblockval(bno)); | ||
65 | else | ||
66 | sprintf(rval, "%lld", (xfs_dfsbno_t)bno); | ||
67 | return rval; | ||
68 | } | ||
69 | |||
70 | /* | ||
71 | * We include this last to have the helpers above available for the trace | 55 | * We include this last to have the helpers above available for the trace |
72 | * event implementations. | 56 | * event implementations. |
73 | */ | 57 | */ |
diff --git a/fs/xfs/linux-2.6/xfs_trace.h b/fs/xfs/linux-2.6/xfs_trace.h index 87f9fad80aac..fcaa62f0799e 100644 --- a/fs/xfs/linux-2.6/xfs_trace.h +++ b/fs/xfs/linux-2.6/xfs_trace.h | |||
@@ -197,13 +197,13 @@ TRACE_EVENT(xfs_iext_insert, | |||
197 | __entry->caller_ip = caller_ip; | 197 | __entry->caller_ip = caller_ip; |
198 | ), | 198 | ), |
199 | TP_printk("dev %d:%d ino 0x%llx state %s idx %ld " | 199 | TP_printk("dev %d:%d ino 0x%llx state %s idx %ld " |
200 | "offset %lld block %s count %lld flag %d caller %pf", | 200 | "offset %lld block %lld count %lld flag %d caller %pf", |
201 | MAJOR(__entry->dev), MINOR(__entry->dev), | 201 | MAJOR(__entry->dev), MINOR(__entry->dev), |
202 | __entry->ino, | 202 | __entry->ino, |
203 | __print_flags(__entry->bmap_state, "|", XFS_BMAP_EXT_FLAGS), | 203 | __print_flags(__entry->bmap_state, "|", XFS_BMAP_EXT_FLAGS), |
204 | (long)__entry->idx, | 204 | (long)__entry->idx, |
205 | __entry->startoff, | 205 | __entry->startoff, |
206 | xfs_fmtfsblock(__entry->startblock), | 206 | (__int64_t)__entry->startblock, |
207 | __entry->blockcount, | 207 | __entry->blockcount, |
208 | __entry->state, | 208 | __entry->state, |
209 | (char *)__entry->caller_ip) | 209 | (char *)__entry->caller_ip) |
@@ -241,13 +241,13 @@ DECLARE_EVENT_CLASS(xfs_bmap_class, | |||
241 | __entry->caller_ip = caller_ip; | 241 | __entry->caller_ip = caller_ip; |
242 | ), | 242 | ), |
243 | TP_printk("dev %d:%d ino 0x%llx state %s idx %ld " | 243 | TP_printk("dev %d:%d ino 0x%llx state %s idx %ld " |
244 | "offset %lld block %s count %lld flag %d caller %pf", | 244 | "offset %lld block %lld count %lld flag %d caller %pf", |
245 | MAJOR(__entry->dev), MINOR(__entry->dev), | 245 | MAJOR(__entry->dev), MINOR(__entry->dev), |
246 | __entry->ino, | 246 | __entry->ino, |
247 | __print_flags(__entry->bmap_state, "|", XFS_BMAP_EXT_FLAGS), | 247 | __print_flags(__entry->bmap_state, "|", XFS_BMAP_EXT_FLAGS), |
248 | (long)__entry->idx, | 248 | (long)__entry->idx, |
249 | __entry->startoff, | 249 | __entry->startoff, |
250 | xfs_fmtfsblock(__entry->startblock), | 250 | (__int64_t)__entry->startblock, |
251 | __entry->blockcount, | 251 | __entry->blockcount, |
252 | __entry->state, | 252 | __entry->state, |
253 | (char *)__entry->caller_ip) | 253 | (char *)__entry->caller_ip) |
@@ -881,7 +881,7 @@ TRACE_EVENT(name, \ | |||
881 | ), \ | 881 | ), \ |
882 | TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " \ | 882 | TP_printk("dev %d:%d ino 0x%llx size 0x%llx new_size 0x%llx " \ |
883 | "offset 0x%llx count %zd flags %s " \ | 883 | "offset 0x%llx count %zd flags %s " \ |
884 | "startoff 0x%llx startblock %s blockcount 0x%llx", \ | 884 | "startoff 0x%llx startblock %lld blockcount 0x%llx", \ |
885 | MAJOR(__entry->dev), MINOR(__entry->dev), \ | 885 | MAJOR(__entry->dev), MINOR(__entry->dev), \ |
886 | __entry->ino, \ | 886 | __entry->ino, \ |
887 | __entry->size, \ | 887 | __entry->size, \ |
@@ -890,7 +890,7 @@ TRACE_EVENT(name, \ | |||
890 | __entry->count, \ | 890 | __entry->count, \ |
891 | __print_flags(__entry->flags, "|", BMAPI_FLAGS), \ | 891 | __print_flags(__entry->flags, "|", BMAPI_FLAGS), \ |
892 | __entry->startoff, \ | 892 | __entry->startoff, \ |
893 | xfs_fmtfsblock(__entry->startblock), \ | 893 | (__int64_t)__entry->startblock, \ |
894 | __entry->blockcount) \ | 894 | __entry->blockcount) \ |
895 | ) | 895 | ) |
896 | DEFINE_IOMAP_EVENT(xfs_iomap_enter); | 896 | DEFINE_IOMAP_EVENT(xfs_iomap_enter); |