diff options
-rw-r--r-- | fs/ocfs2/cluster/masklog.c | 1 | ||||
-rw-r--r-- | fs/ocfs2/cluster/masklog.h | 1 | ||||
-rw-r--r-- | fs/ocfs2/dcache.c | 44 | ||||
-rw-r--r-- | fs/ocfs2/ocfs2_trace.h | 99 |
4 files changed, 121 insertions, 24 deletions
diff --git a/fs/ocfs2/cluster/masklog.c b/fs/ocfs2/cluster/masklog.c index 0668eb6e05d6..91df3e2571a0 100644 --- a/fs/ocfs2/cluster/masklog.c +++ b/fs/ocfs2/cluster/masklog.c | |||
@@ -97,7 +97,6 @@ static struct mlog_attribute mlog_attrs[MLOG_MAX_BITS] = { | |||
97 | define_mask(BH_IO), | 97 | define_mask(BH_IO), |
98 | define_mask(UPTODATE), | 98 | define_mask(UPTODATE), |
99 | define_mask(VOTE), | 99 | define_mask(VOTE), |
100 | define_mask(DCACHE), | ||
101 | define_mask(CONN), | 100 | define_mask(CONN), |
102 | define_mask(QUORUM), | 101 | define_mask(QUORUM), |
103 | define_mask(EXPORT), | 102 | define_mask(EXPORT), |
diff --git a/fs/ocfs2/cluster/masklog.h b/fs/ocfs2/cluster/masklog.h index a815b55d87a7..c64b0aa59e9d 100644 --- a/fs/ocfs2/cluster/masklog.h +++ b/fs/ocfs2/cluster/masklog.h | |||
@@ -99,7 +99,6 @@ | |||
99 | #define ML_BH_IO 0x0000000000100000ULL /* ocfs2 buffer I/O */ | 99 | #define ML_BH_IO 0x0000000000100000ULL /* ocfs2 buffer I/O */ |
100 | #define ML_UPTODATE 0x0000000000200000ULL /* ocfs2 caching sequence #'s */ | 100 | #define ML_UPTODATE 0x0000000000200000ULL /* ocfs2 caching sequence #'s */ |
101 | #define ML_VOTE 0x0000000001000000ULL /* ocfs2 node messaging */ | 101 | #define ML_VOTE 0x0000000001000000ULL /* ocfs2 node messaging */ |
102 | #define ML_DCACHE 0x0000000002000000ULL /* ocfs2 dcache operations */ | ||
103 | #define ML_CONN 0x0000000004000000ULL /* net connection management */ | 102 | #define ML_CONN 0x0000000004000000ULL /* net connection management */ |
104 | #define ML_QUORUM 0x0000000008000000ULL /* net connection quorum */ | 103 | #define ML_QUORUM 0x0000000008000000ULL /* net connection quorum */ |
105 | #define ML_EXPORT 0x0000000010000000ULL /* ocfs2 export operations */ | 104 | #define ML_EXPORT 0x0000000010000000ULL /* ocfs2 export operations */ |
diff --git a/fs/ocfs2/dcache.c b/fs/ocfs2/dcache.c index c26551c25e8e..e5ba34818332 100644 --- a/fs/ocfs2/dcache.c +++ b/fs/ocfs2/dcache.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/slab.h> | 28 | #include <linux/slab.h> |
29 | #include <linux/namei.h> | 29 | #include <linux/namei.h> |
30 | 30 | ||
31 | #define MLOG_MASK_PREFIX ML_DCACHE | ||
32 | #include <cluster/masklog.h> | 31 | #include <cluster/masklog.h> |
33 | 32 | ||
34 | #include "ocfs2.h" | 33 | #include "ocfs2.h" |
@@ -39,6 +38,7 @@ | |||
39 | #include "file.h" | 38 | #include "file.h" |
40 | #include "inode.h" | 39 | #include "inode.h" |
41 | #include "super.h" | 40 | #include "super.h" |
41 | #include "ocfs2_trace.h" | ||
42 | 42 | ||
43 | void ocfs2_dentry_attach_gen(struct dentry *dentry) | 43 | void ocfs2_dentry_attach_gen(struct dentry *dentry) |
44 | { | 44 | { |
@@ -62,8 +62,8 @@ static int ocfs2_dentry_revalidate(struct dentry *dentry, | |||
62 | inode = dentry->d_inode; | 62 | inode = dentry->d_inode; |
63 | osb = OCFS2_SB(dentry->d_sb); | 63 | osb = OCFS2_SB(dentry->d_sb); |
64 | 64 | ||
65 | mlog(0, "(0x%p, '%.*s')\n", dentry, | 65 | trace_ocfs2_dentry_revalidate(dentry, dentry->d_name.len, |
66 | dentry->d_name.len, dentry->d_name.name); | 66 | dentry->d_name.name); |
67 | 67 | ||
68 | /* For a negative dentry - | 68 | /* For a negative dentry - |
69 | * check the generation number of the parent and compare with the | 69 | * check the generation number of the parent and compare with the |
@@ -73,9 +73,10 @@ static int ocfs2_dentry_revalidate(struct dentry *dentry, | |||
73 | unsigned long gen = (unsigned long) dentry->d_fsdata; | 73 | unsigned long gen = (unsigned long) dentry->d_fsdata; |
74 | unsigned long pgen = | 74 | unsigned long pgen = |
75 | OCFS2_I(dentry->d_parent->d_inode)->ip_dir_lock_gen; | 75 | OCFS2_I(dentry->d_parent->d_inode)->ip_dir_lock_gen; |
76 | mlog(0, "negative dentry: %.*s parent gen: %lu " | 76 | |
77 | "dentry gen: %lu\n", | 77 | trace_ocfs2_dentry_revalidate_negative(dentry->d_name.len, |
78 | dentry->d_name.len, dentry->d_name.name, pgen, gen); | 78 | dentry->d_name.name, |
79 | pgen, gen); | ||
79 | if (gen != pgen) | 80 | if (gen != pgen) |
80 | goto bail; | 81 | goto bail; |
81 | goto valid; | 82 | goto valid; |
@@ -90,8 +91,8 @@ static int ocfs2_dentry_revalidate(struct dentry *dentry, | |||
90 | /* did we or someone else delete this inode? */ | 91 | /* did we or someone else delete this inode? */ |
91 | if (OCFS2_I(inode)->ip_flags & OCFS2_INODE_DELETED) { | 92 | if (OCFS2_I(inode)->ip_flags & OCFS2_INODE_DELETED) { |
92 | spin_unlock(&OCFS2_I(inode)->ip_lock); | 93 | spin_unlock(&OCFS2_I(inode)->ip_lock); |
93 | mlog(0, "inode (%llu) deleted, returning false\n", | 94 | trace_ocfs2_dentry_revalidate_delete( |
94 | (unsigned long long)OCFS2_I(inode)->ip_blkno); | 95 | (unsigned long long)OCFS2_I(inode)->ip_blkno); |
95 | goto bail; | 96 | goto bail; |
96 | } | 97 | } |
97 | spin_unlock(&OCFS2_I(inode)->ip_lock); | 98 | spin_unlock(&OCFS2_I(inode)->ip_lock); |
@@ -101,10 +102,9 @@ static int ocfs2_dentry_revalidate(struct dentry *dentry, | |||
101 | * inode nlink hits zero, it never goes back. | 102 | * inode nlink hits zero, it never goes back. |
102 | */ | 103 | */ |
103 | if (inode->i_nlink == 0) { | 104 | if (inode->i_nlink == 0) { |
104 | mlog(0, "Inode %llu orphaned, returning false " | 105 | trace_ocfs2_dentry_revalidate_orphaned( |
105 | "dir = %d\n", | 106 | (unsigned long long)OCFS2_I(inode)->ip_blkno, |
106 | (unsigned long long)OCFS2_I(inode)->ip_blkno, | 107 | S_ISDIR(inode->i_mode)); |
107 | S_ISDIR(inode->i_mode)); | ||
108 | goto bail; | 108 | goto bail; |
109 | } | 109 | } |
110 | 110 | ||
@@ -113,9 +113,8 @@ static int ocfs2_dentry_revalidate(struct dentry *dentry, | |||
113 | * redo it. | 113 | * redo it. |
114 | */ | 114 | */ |
115 | if (!dentry->d_fsdata) { | 115 | if (!dentry->d_fsdata) { |
116 | mlog(0, "Inode %llu doesn't have dentry lock, " | 116 | trace_ocfs2_dentry_revalidate_nofsdata( |
117 | "returning false\n", | 117 | (unsigned long long)OCFS2_I(inode)->ip_blkno); |
118 | (unsigned long long)OCFS2_I(inode)->ip_blkno); | ||
119 | goto bail; | 118 | goto bail; |
120 | } | 119 | } |
121 | 120 | ||
@@ -123,7 +122,7 @@ valid: | |||
123 | ret = 1; | 122 | ret = 1; |
124 | 123 | ||
125 | bail: | 124 | bail: |
126 | mlog(0, "ret = %d\n", ret); | 125 | trace_ocfs2_dentry_revalidate_ret(ret); |
127 | return ret; | 126 | return ret; |
128 | } | 127 | } |
129 | 128 | ||
@@ -180,8 +179,8 @@ struct dentry *ocfs2_find_local_alias(struct inode *inode, | |||
180 | 179 | ||
181 | spin_lock(&dentry->d_lock); | 180 | spin_lock(&dentry->d_lock); |
182 | if (ocfs2_match_dentry(dentry, parent_blkno, skip_unhashed)) { | 181 | if (ocfs2_match_dentry(dentry, parent_blkno, skip_unhashed)) { |
183 | mlog(0, "dentry found: %.*s\n", | 182 | trace_ocfs2_find_local_alias(dentry->d_name.len, |
184 | dentry->d_name.len, dentry->d_name.name); | 183 | dentry->d_name.name); |
185 | 184 | ||
186 | dget_dlock(dentry); | 185 | dget_dlock(dentry); |
187 | spin_unlock(&dentry->d_lock); | 186 | spin_unlock(&dentry->d_lock); |
@@ -239,9 +238,8 @@ int ocfs2_dentry_attach_lock(struct dentry *dentry, | |||
239 | struct dentry *alias; | 238 | struct dentry *alias; |
240 | struct ocfs2_dentry_lock *dl = dentry->d_fsdata; | 239 | struct ocfs2_dentry_lock *dl = dentry->d_fsdata; |
241 | 240 | ||
242 | mlog(0, "Attach \"%.*s\", parent %llu, fsdata: %p\n", | 241 | trace_ocfs2_dentry_attach_lock(dentry->d_name.len, dentry->d_name.name, |
243 | dentry->d_name.len, dentry->d_name.name, | 242 | (unsigned long long)parent_blkno, dl); |
244 | (unsigned long long)parent_blkno, dl); | ||
245 | 243 | ||
246 | /* | 244 | /* |
247 | * Negative dentry. We ignore these for now. | 245 | * Negative dentry. We ignore these for now. |
@@ -291,7 +289,9 @@ int ocfs2_dentry_attach_lock(struct dentry *dentry, | |||
291 | (unsigned long long)parent_blkno, | 289 | (unsigned long long)parent_blkno, |
292 | (unsigned long long)dl->dl_parent_blkno); | 290 | (unsigned long long)dl->dl_parent_blkno); |
293 | 291 | ||
294 | mlog(0, "Found: %s\n", dl->dl_lockres.l_name); | 292 | trace_ocfs2_dentry_attach_lock_found(dl->dl_lockres.l_name, |
293 | (unsigned long long)parent_blkno, | ||
294 | (unsigned long long)OCFS2_I(inode)->ip_blkno); | ||
295 | 295 | ||
296 | goto out_attach; | 296 | goto out_attach; |
297 | } | 297 | } |
diff --git a/fs/ocfs2/ocfs2_trace.h b/fs/ocfs2/ocfs2_trace.h index a98e52ae06ee..6ef3a928023b 100644 --- a/fs/ocfs2/ocfs2_trace.h +++ b/fs/ocfs2/ocfs2_trace.h | |||
@@ -2364,6 +2364,105 @@ TRACE_EVENT(ocfs2_orphan_del, | |||
2364 | ); | 2364 | ); |
2365 | 2365 | ||
2366 | /* End of trace events for fs/ocfs2/namei.c. */ | 2366 | /* End of trace events for fs/ocfs2/namei.c. */ |
2367 | |||
2368 | /* Trace events for fs/ocfs2/dcache.c. */ | ||
2369 | |||
2370 | TRACE_EVENT(ocfs2_dentry_revalidate, | ||
2371 | TP_PROTO(void *dentry, int len, const char *name), | ||
2372 | TP_ARGS(dentry, len, name), | ||
2373 | TP_STRUCT__entry( | ||
2374 | __field(void *, dentry) | ||
2375 | __field(int, len) | ||
2376 | __string(name, name) | ||
2377 | ), | ||
2378 | TP_fast_assign( | ||
2379 | __entry->dentry = dentry; | ||
2380 | __entry->len = len; | ||
2381 | __assign_str(name, name); | ||
2382 | ), | ||
2383 | TP_printk("%p %.*s", __entry->dentry, __entry->len, __get_str(name)) | ||
2384 | ); | ||
2385 | |||
2386 | TRACE_EVENT(ocfs2_dentry_revalidate_negative, | ||
2387 | TP_PROTO(int len, const char *name, unsigned long pgen, | ||
2388 | unsigned long gen), | ||
2389 | TP_ARGS(len, name, pgen, gen), | ||
2390 | TP_STRUCT__entry( | ||
2391 | __field(int, len) | ||
2392 | __string(name, name) | ||
2393 | __field(unsigned long, pgen) | ||
2394 | __field(unsigned long, gen) | ||
2395 | ), | ||
2396 | TP_fast_assign( | ||
2397 | __entry->len = len; | ||
2398 | __assign_str(name, name); | ||
2399 | __entry->pgen = pgen; | ||
2400 | __entry->gen = gen; | ||
2401 | ), | ||
2402 | TP_printk("%.*s %lu %lu", __entry->len, __get_str(name), | ||
2403 | __entry->pgen, __entry->gen) | ||
2404 | ); | ||
2405 | |||
2406 | DEFINE_OCFS2_ULL_EVENT(ocfs2_dentry_revalidate_delete); | ||
2407 | |||
2408 | DEFINE_OCFS2_ULL_INT_EVENT(ocfs2_dentry_revalidate_orphaned); | ||
2409 | |||
2410 | DEFINE_OCFS2_ULL_EVENT(ocfs2_dentry_revalidate_nofsdata); | ||
2411 | |||
2412 | DEFINE_OCFS2_INT_EVENT(ocfs2_dentry_revalidate_ret); | ||
2413 | |||
2414 | TRACE_EVENT(ocfs2_find_local_alias, | ||
2415 | TP_PROTO(int len, const char *name), | ||
2416 | TP_ARGS(len, name), | ||
2417 | TP_STRUCT__entry( | ||
2418 | __field(int, len) | ||
2419 | __string(name, name) | ||
2420 | ), | ||
2421 | TP_fast_assign( | ||
2422 | __entry->len = len; | ||
2423 | __assign_str(name, name); | ||
2424 | ), | ||
2425 | TP_printk("%.*s", __entry->len, __get_str(name)) | ||
2426 | ); | ||
2427 | |||
2428 | TRACE_EVENT(ocfs2_dentry_attach_lock, | ||
2429 | TP_PROTO(int len, const char *name, | ||
2430 | unsigned long long parent, void *fsdata), | ||
2431 | TP_ARGS(len, name, parent, fsdata), | ||
2432 | TP_STRUCT__entry( | ||
2433 | __field(int, len) | ||
2434 | __string(name, name) | ||
2435 | __field(unsigned long long, parent) | ||
2436 | __field(void *, fsdata) | ||
2437 | ), | ||
2438 | TP_fast_assign( | ||
2439 | __entry->len = len; | ||
2440 | __assign_str(name, name); | ||
2441 | __entry->parent = parent; | ||
2442 | __entry->fsdata = fsdata; | ||
2443 | ), | ||
2444 | TP_printk("%.*s %llu %p", __entry->len, __get_str(name), | ||
2445 | __entry->parent, __entry->fsdata) | ||
2446 | ); | ||
2447 | |||
2448 | TRACE_EVENT(ocfs2_dentry_attach_lock_found, | ||
2449 | TP_PROTO(const char *name, unsigned long long parent, | ||
2450 | unsigned long long ino), | ||
2451 | TP_ARGS(name, parent, ino), | ||
2452 | TP_STRUCT__entry( | ||
2453 | __string(name, name) | ||
2454 | __field(unsigned long long, parent) | ||
2455 | __field(unsigned long long, ino) | ||
2456 | ), | ||
2457 | TP_fast_assign( | ||
2458 | __assign_str(name, name); | ||
2459 | __entry->parent = parent; | ||
2460 | __entry->ino = ino; | ||
2461 | ), | ||
2462 | TP_printk("%s %llu %llu", __get_str(name), __entry->parent, __entry->ino) | ||
2463 | ); | ||
2464 | |||
2465 | /* End of trace events for fs/ocfs2/dcache.c. */ | ||
2367 | #endif /* _TRACE_OCFS2_H */ | 2466 | #endif /* _TRACE_OCFS2_H */ |
2368 | 2467 | ||
2369 | /* This part must be outside protection */ | 2468 | /* This part must be outside protection */ |