diff options
author | Kent Overstreet <koverstreet@google.com> | 2013-05-14 23:33:16 -0400 |
---|---|---|
committer | Kent Overstreet <koverstreet@google.com> | 2013-06-26 20:09:15 -0400 |
commit | 85b1492ee113486d871de7676a61f506a43ca475 (patch) | |
tree | aac166ad206a99d2e3c573f7f1792bc765a2cdd4 | |
parent | c37511b863f36c1cc6e18440717fd4cc0e881b8a (diff) |
bcache: Rip out pkey()/pbtree()
Old gcc doesnt like the struct hack, and it is kind of ugly. So finish
off the work to convert pr_debug() statements to tracepoints, and delete
pkey()/pbtree().
Signed-off-by: Kent Overstreet <koverstreet@google.com>
-rw-r--r-- | drivers/md/bcache/bset.c | 16 | ||||
-rw-r--r-- | drivers/md/bcache/btree.c | 21 | ||||
-rw-r--r-- | drivers/md/bcache/btree.h | 7 | ||||
-rw-r--r-- | drivers/md/bcache/debug.c | 40 | ||||
-rw-r--r-- | drivers/md/bcache/debug.h | 11 | ||||
-rw-r--r-- | drivers/md/bcache/super.c | 5 | ||||
-rw-r--r-- | drivers/md/bcache/trace.c | 2 | ||||
-rw-r--r-- | include/trace/events/bcache.h | 33 |
8 files changed, 90 insertions, 45 deletions
diff --git a/drivers/md/bcache/bset.c b/drivers/md/bcache/bset.c index cb4578a327b9..e9399ed7f688 100644 --- a/drivers/md/bcache/bset.c +++ b/drivers/md/bcache/bset.c | |||
@@ -78,6 +78,7 @@ struct bkey *bch_keylist_pop(struct keylist *l) | |||
78 | bool __bch_ptr_invalid(struct cache_set *c, int level, const struct bkey *k) | 78 | bool __bch_ptr_invalid(struct cache_set *c, int level, const struct bkey *k) |
79 | { | 79 | { |
80 | unsigned i; | 80 | unsigned i; |
81 | char buf[80]; | ||
81 | 82 | ||
82 | if (level && (!KEY_PTRS(k) || !KEY_SIZE(k) || KEY_DIRTY(k))) | 83 | if (level && (!KEY_PTRS(k) || !KEY_SIZE(k) || KEY_DIRTY(k))) |
83 | goto bad; | 84 | goto bad; |
@@ -102,7 +103,8 @@ bool __bch_ptr_invalid(struct cache_set *c, int level, const struct bkey *k) | |||
102 | 103 | ||
103 | return false; | 104 | return false; |
104 | bad: | 105 | bad: |
105 | cache_bug(c, "spotted bad key %s: %s", pkey(k), bch_ptr_status(c, k)); | 106 | bch_bkey_to_text(buf, sizeof(buf), k); |
107 | cache_bug(c, "spotted bad key %s: %s", buf, bch_ptr_status(c, k)); | ||
106 | return true; | 108 | return true; |
107 | } | 109 | } |
108 | 110 | ||
@@ -162,10 +164,16 @@ bool bch_ptr_bad(struct btree *b, const struct bkey *k) | |||
162 | #ifdef CONFIG_BCACHE_EDEBUG | 164 | #ifdef CONFIG_BCACHE_EDEBUG |
163 | bug: | 165 | bug: |
164 | mutex_unlock(&b->c->bucket_lock); | 166 | mutex_unlock(&b->c->bucket_lock); |
165 | btree_bug(b, | 167 | |
168 | { | ||
169 | char buf[80]; | ||
170 | |||
171 | bch_bkey_to_text(buf, sizeof(buf), k); | ||
172 | btree_bug(b, | ||
166 | "inconsistent pointer %s: bucket %zu pin %i prio %i gen %i last_gc %i mark %llu gc_gen %i", | 173 | "inconsistent pointer %s: bucket %zu pin %i prio %i gen %i last_gc %i mark %llu gc_gen %i", |
167 | pkey(k), PTR_BUCKET_NR(b->c, k, i), atomic_read(&g->pin), | 174 | buf, PTR_BUCKET_NR(b->c, k, i), atomic_read(&g->pin), |
168 | g->prio, g->gen, g->last_gc, GC_MARK(g), g->gc_gen); | 175 | g->prio, g->gen, g->last_gc, GC_MARK(g), g->gc_gen); |
176 | } | ||
169 | return true; | 177 | return true; |
170 | #endif | 178 | #endif |
171 | } | 179 | } |
diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c index 218d486259a3..53a0f4ef4e32 100644 --- a/drivers/md/bcache/btree.c +++ b/drivers/md/bcache/btree.c | |||
@@ -1770,7 +1770,7 @@ static bool btree_insert_key(struct btree *b, struct btree_op *op, | |||
1770 | { | 1770 | { |
1771 | struct bset *i = b->sets[b->nsets].data; | 1771 | struct bset *i = b->sets[b->nsets].data; |
1772 | struct bkey *m, *prev; | 1772 | struct bkey *m, *prev; |
1773 | const char *status = "insert"; | 1773 | unsigned status = BTREE_INSERT_STATUS_INSERT; |
1774 | 1774 | ||
1775 | BUG_ON(bkey_cmp(k, &b->key) > 0); | 1775 | BUG_ON(bkey_cmp(k, &b->key) > 0); |
1776 | BUG_ON(b->level && !KEY_PTRS(k)); | 1776 | BUG_ON(b->level && !KEY_PTRS(k)); |
@@ -1803,17 +1803,17 @@ static bool btree_insert_key(struct btree *b, struct btree_op *op, | |||
1803 | goto insert; | 1803 | goto insert; |
1804 | 1804 | ||
1805 | /* prev is in the tree, if we merge we're done */ | 1805 | /* prev is in the tree, if we merge we're done */ |
1806 | status = "back merging"; | 1806 | status = BTREE_INSERT_STATUS_BACK_MERGE; |
1807 | if (prev && | 1807 | if (prev && |
1808 | bch_bkey_try_merge(b, prev, k)) | 1808 | bch_bkey_try_merge(b, prev, k)) |
1809 | goto merged; | 1809 | goto merged; |
1810 | 1810 | ||
1811 | status = "overwrote front"; | 1811 | status = BTREE_INSERT_STATUS_OVERWROTE; |
1812 | if (m != end(i) && | 1812 | if (m != end(i) && |
1813 | KEY_PTRS(m) == KEY_PTRS(k) && !KEY_SIZE(m)) | 1813 | KEY_PTRS(m) == KEY_PTRS(k) && !KEY_SIZE(m)) |
1814 | goto copy; | 1814 | goto copy; |
1815 | 1815 | ||
1816 | status = "front merge"; | 1816 | status = BTREE_INSERT_STATUS_FRONT_MERGE; |
1817 | if (m != end(i) && | 1817 | if (m != end(i) && |
1818 | bch_bkey_try_merge(b, k, m)) | 1818 | bch_bkey_try_merge(b, k, m)) |
1819 | goto copy; | 1819 | goto copy; |
@@ -1823,16 +1823,12 @@ static bool btree_insert_key(struct btree *b, struct btree_op *op, | |||
1823 | insert: shift_keys(b, m, k); | 1823 | insert: shift_keys(b, m, k); |
1824 | copy: bkey_copy(m, k); | 1824 | copy: bkey_copy(m, k); |
1825 | merged: | 1825 | merged: |
1826 | bch_check_keys(b, "%s for %s at %s: %s", status, | 1826 | bch_check_keys(b, "%u for %s", status, op_type(op)); |
1827 | op_type(op), pbtree(b), pkey(k)); | ||
1828 | bch_check_key_order_msg(b, i, "%s for %s at %s: %s", status, | ||
1829 | op_type(op), pbtree(b), pkey(k)); | ||
1830 | 1827 | ||
1831 | if (b->level && !KEY_OFFSET(k)) | 1828 | if (b->level && !KEY_OFFSET(k)) |
1832 | btree_current_write(b)->prio_blocked++; | 1829 | btree_current_write(b)->prio_blocked++; |
1833 | 1830 | ||
1834 | pr_debug("%s for %s at %s: %s", status, | 1831 | trace_bcache_btree_insert_key(b, k, op->type, status); |
1835 | op_type(op), pbtree(b), pkey(k)); | ||
1836 | 1832 | ||
1837 | return true; | 1833 | return true; |
1838 | } | 1834 | } |
@@ -2234,9 +2230,6 @@ int bch_btree_search_recurse(struct btree *b, struct btree_op *op) | |||
2234 | struct btree_iter iter; | 2230 | struct btree_iter iter; |
2235 | bch_btree_iter_init(b, &iter, &KEY(op->inode, bio->bi_sector, 0)); | 2231 | bch_btree_iter_init(b, &iter, &KEY(op->inode, bio->bi_sector, 0)); |
2236 | 2232 | ||
2237 | pr_debug("at %s searching for %u:%llu", pbtree(b), op->inode, | ||
2238 | (uint64_t) bio->bi_sector); | ||
2239 | |||
2240 | do { | 2233 | do { |
2241 | k = bch_btree_iter_next_filter(&iter, b, bch_ptr_bad); | 2234 | k = bch_btree_iter_next_filter(&iter, b, bch_ptr_bad); |
2242 | if (!k) { | 2235 | if (!k) { |
@@ -2302,8 +2295,6 @@ static int bch_btree_refill_keybuf(struct btree *b, struct btree_op *op, | |||
2302 | if (buf->key_predicate(buf, k)) { | 2295 | if (buf->key_predicate(buf, k)) { |
2303 | struct keybuf_key *w; | 2296 | struct keybuf_key *w; |
2304 | 2297 | ||
2305 | pr_debug("%s", pkey(k)); | ||
2306 | |||
2307 | spin_lock(&buf->lock); | 2298 | spin_lock(&buf->lock); |
2308 | 2299 | ||
2309 | w = array_alloc(&buf->freelist); | 2300 | w = array_alloc(&buf->freelist); |
diff --git a/drivers/md/bcache/btree.h b/drivers/md/bcache/btree.h index 809bd77847a2..2b016b93cad4 100644 --- a/drivers/md/bcache/btree.h +++ b/drivers/md/bcache/btree.h | |||
@@ -271,6 +271,13 @@ struct btree_op { | |||
271 | BKEY_PADDED(replace); | 271 | BKEY_PADDED(replace); |
272 | }; | 272 | }; |
273 | 273 | ||
274 | enum { | ||
275 | BTREE_INSERT_STATUS_INSERT, | ||
276 | BTREE_INSERT_STATUS_BACK_MERGE, | ||
277 | BTREE_INSERT_STATUS_OVERWROTE, | ||
278 | BTREE_INSERT_STATUS_FRONT_MERGE, | ||
279 | }; | ||
280 | |||
274 | void bch_btree_op_init_stack(struct btree_op *); | 281 | void bch_btree_op_init_stack(struct btree_op *); |
275 | 282 | ||
276 | static inline void rw_lock(bool w, struct btree *b, int level) | 283 | static inline void rw_lock(bool w, struct btree *b, int level) |
diff --git a/drivers/md/bcache/debug.c b/drivers/md/bcache/debug.c index ae6096c6845d..82e3a07771ec 100644 --- a/drivers/md/bcache/debug.c +++ b/drivers/md/bcache/debug.c | |||
@@ -47,11 +47,10 @@ const char *bch_ptr_status(struct cache_set *c, const struct bkey *k) | |||
47 | return ""; | 47 | return ""; |
48 | } | 48 | } |
49 | 49 | ||
50 | struct keyprint_hack bch_pkey(const struct bkey *k) | 50 | int bch_bkey_to_text(char *buf, size_t size, const struct bkey *k) |
51 | { | 51 | { |
52 | unsigned i = 0; | 52 | unsigned i = 0; |
53 | struct keyprint_hack r; | 53 | char *out = buf, *end = buf + size; |
54 | char *out = r.s, *end = r.s + KEYHACK_SIZE; | ||
55 | 54 | ||
56 | #define p(...) (out += scnprintf(out, end - out, __VA_ARGS__)) | 55 | #define p(...) (out += scnprintf(out, end - out, __VA_ARGS__)) |
57 | 56 | ||
@@ -75,16 +74,14 @@ struct keyprint_hack bch_pkey(const struct bkey *k) | |||
75 | if (KEY_CSUM(k)) | 74 | if (KEY_CSUM(k)) |
76 | p(" cs%llu %llx", KEY_CSUM(k), k->ptr[1]); | 75 | p(" cs%llu %llx", KEY_CSUM(k), k->ptr[1]); |
77 | #undef p | 76 | #undef p |
78 | return r; | 77 | return out - buf; |
79 | } | 78 | } |
80 | 79 | ||
81 | struct keyprint_hack bch_pbtree(const struct btree *b) | 80 | int bch_btree_to_text(char *buf, size_t size, const struct btree *b) |
82 | { | 81 | { |
83 | struct keyprint_hack r; | 82 | return scnprintf(buf, size, "%zu level %i/%i", |
84 | 83 | PTR_BUCKET_NR(b->c, &b->key, 0), | |
85 | snprintf(r.s, 40, "%zu level %i/%i", PTR_BUCKET_NR(b->c, &b->key, 0), | 84 | b->level, b->c->root ? b->c->root->level : -1); |
86 | b->level, b->c->root ? b->c->root->level : -1); | ||
87 | return r; | ||
88 | } | 85 | } |
89 | 86 | ||
90 | #if defined(CONFIG_BCACHE_DEBUG) || defined(CONFIG_BCACHE_EDEBUG) | 87 | #if defined(CONFIG_BCACHE_DEBUG) || defined(CONFIG_BCACHE_EDEBUG) |
@@ -100,10 +97,12 @@ static void dump_bset(struct btree *b, struct bset *i) | |||
100 | { | 97 | { |
101 | struct bkey *k; | 98 | struct bkey *k; |
102 | unsigned j; | 99 | unsigned j; |
100 | char buf[80]; | ||
103 | 101 | ||
104 | for (k = i->start; k < end(i); k = bkey_next(k)) { | 102 | for (k = i->start; k < end(i); k = bkey_next(k)) { |
103 | bch_bkey_to_text(buf, sizeof(buf), k); | ||
105 | printk(KERN_ERR "block %zu key %zi/%u: %s", index(i, b), | 104 | printk(KERN_ERR "block %zu key %zi/%u: %s", index(i, b), |
106 | (uint64_t *) k - i->d, i->keys, pkey(k)); | 105 | (uint64_t *) k - i->d, i->keys, buf); |
107 | 106 | ||
108 | for (j = 0; j < KEY_PTRS(k); j++) { | 107 | for (j = 0; j < KEY_PTRS(k); j++) { |
109 | size_t n = PTR_BUCKET_NR(b->c, k, j); | 108 | size_t n = PTR_BUCKET_NR(b->c, k, j); |
@@ -252,6 +251,7 @@ static void vdump_bucket_and_panic(struct btree *b, const char *fmt, | |||
252 | va_list args) | 251 | va_list args) |
253 | { | 252 | { |
254 | unsigned i; | 253 | unsigned i; |
254 | char buf[80]; | ||
255 | 255 | ||
256 | console_lock(); | 256 | console_lock(); |
257 | 257 | ||
@@ -262,7 +262,8 @@ static void vdump_bucket_and_panic(struct btree *b, const char *fmt, | |||
262 | 262 | ||
263 | console_unlock(); | 263 | console_unlock(); |
264 | 264 | ||
265 | panic("at %s\n", pbtree(b)); | 265 | bch_btree_to_text(buf, sizeof(buf), b); |
266 | panic("at %s\n", buf); | ||
266 | } | 267 | } |
267 | 268 | ||
268 | void bch_check_key_order_msg(struct btree *b, struct bset *i, | 269 | void bch_check_key_order_msg(struct btree *b, struct bset *i, |
@@ -337,6 +338,7 @@ static ssize_t bch_dump_read(struct file *file, char __user *buf, | |||
337 | { | 338 | { |
338 | struct dump_iterator *i = file->private_data; | 339 | struct dump_iterator *i = file->private_data; |
339 | ssize_t ret = 0; | 340 | ssize_t ret = 0; |
341 | char kbuf[80]; | ||
340 | 342 | ||
341 | while (size) { | 343 | while (size) { |
342 | struct keybuf_key *w; | 344 | struct keybuf_key *w; |
@@ -359,7 +361,8 @@ static ssize_t bch_dump_read(struct file *file, char __user *buf, | |||
359 | if (!w) | 361 | if (!w) |
360 | break; | 362 | break; |
361 | 363 | ||
362 | i->bytes = snprintf(i->buf, PAGE_SIZE, "%s\n", pkey(&w->key)); | 364 | bch_bkey_to_text(kbuf, sizeof(kbuf), &w->key); |
365 | i->bytes = snprintf(i->buf, PAGE_SIZE, "%s\n", kbuf); | ||
363 | bch_keybuf_del(&i->keys, w); | 366 | bch_keybuf_del(&i->keys, w); |
364 | } | 367 | } |
365 | 368 | ||
@@ -526,10 +529,17 @@ static ssize_t btree_fuzz(struct kobject *k, struct kobj_attribute *a, | |||
526 | k < end(i); | 529 | k < end(i); |
527 | k = bkey_next(k), l = bkey_next(l)) | 530 | k = bkey_next(k), l = bkey_next(l)) |
528 | if (bkey_cmp(k, l) || | 531 | if (bkey_cmp(k, l) || |
529 | KEY_SIZE(k) != KEY_SIZE(l)) | 532 | KEY_SIZE(k) != KEY_SIZE(l)) { |
533 | char buf1[80]; | ||
534 | char buf2[80]; | ||
535 | |||
536 | bch_bkey_to_text(buf1, sizeof(buf1), k); | ||
537 | bch_bkey_to_text(buf2, sizeof(buf2), l); | ||
538 | |||
530 | pr_err("key %zi differs: %s != %s", | 539 | pr_err("key %zi differs: %s != %s", |
531 | (uint64_t *) k - i->d, | 540 | (uint64_t *) k - i->d, |
532 | pkey(k), pkey(l)); | 541 | buf1, buf2); |
542 | } | ||
533 | 543 | ||
534 | for (j = 0; j < 3; j++) { | 544 | for (j = 0; j < 3; j++) { |
535 | pr_err("**** Set %i ****", j); | 545 | pr_err("**** Set %i ****", j); |
diff --git a/drivers/md/bcache/debug.h b/drivers/md/bcache/debug.h index f9378a218148..1c39b5a2489b 100644 --- a/drivers/md/bcache/debug.h +++ b/drivers/md/bcache/debug.h | |||
@@ -3,15 +3,8 @@ | |||
3 | 3 | ||
4 | /* Btree/bkey debug printing */ | 4 | /* Btree/bkey debug printing */ |
5 | 5 | ||
6 | #define KEYHACK_SIZE 80 | 6 | int bch_bkey_to_text(char *buf, size_t size, const struct bkey *k); |
7 | struct keyprint_hack { | 7 | int bch_btree_to_text(char *buf, size_t size, const struct btree *b); |
8 | char s[KEYHACK_SIZE]; | ||
9 | }; | ||
10 | |||
11 | struct keyprint_hack bch_pkey(const struct bkey *k); | ||
12 | struct keyprint_hack bch_pbtree(const struct btree *b); | ||
13 | #define pkey(k) (&bch_pkey(k).s[0]) | ||
14 | #define pbtree(b) (&bch_pbtree(b).s[0]) | ||
15 | 8 | ||
16 | #ifdef CONFIG_BCACHE_EDEBUG | 9 | #ifdef CONFIG_BCACHE_EDEBUG |
17 | 10 | ||
diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c index 47bc13745068..f24c2e0cbb1c 100644 --- a/drivers/md/bcache/super.c +++ b/drivers/md/bcache/super.c | |||
@@ -343,6 +343,7 @@ static void uuid_io(struct cache_set *c, unsigned long rw, | |||
343 | struct closure *cl = &c->uuid_write.cl; | 343 | struct closure *cl = &c->uuid_write.cl; |
344 | struct uuid_entry *u; | 344 | struct uuid_entry *u; |
345 | unsigned i; | 345 | unsigned i; |
346 | char buf[80]; | ||
346 | 347 | ||
347 | BUG_ON(!parent); | 348 | BUG_ON(!parent); |
348 | closure_lock(&c->uuid_write, parent); | 349 | closure_lock(&c->uuid_write, parent); |
@@ -363,8 +364,8 @@ static void uuid_io(struct cache_set *c, unsigned long rw, | |||
363 | break; | 364 | break; |
364 | } | 365 | } |
365 | 366 | ||
366 | pr_debug("%s UUIDs at %s", rw & REQ_WRITE ? "wrote" : "read", | 367 | bch_bkey_to_text(buf, sizeof(buf), k); |
367 | pkey(&c->uuid_bucket)); | 368 | pr_debug("%s UUIDs at %s", rw & REQ_WRITE ? "wrote" : "read", buf); |
368 | 369 | ||
369 | for (u = c->uuids; u < c->uuids + c->nr_uuids; u++) | 370 | for (u = c->uuids; u < c->uuids + c->nr_uuids; u++) |
370 | if (!bch_is_zero(u->uuid, 16)) | 371 | if (!bch_is_zero(u->uuid, 16)) |
diff --git a/drivers/md/bcache/trace.c b/drivers/md/bcache/trace.c index 7f4f38aa16ae..f7b6c197f90f 100644 --- a/drivers/md/bcache/trace.c +++ b/drivers/md/bcache/trace.c | |||
@@ -40,6 +40,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(bcache_gc_end); | |||
40 | EXPORT_TRACEPOINT_SYMBOL_GPL(bcache_gc_copy); | 40 | EXPORT_TRACEPOINT_SYMBOL_GPL(bcache_gc_copy); |
41 | EXPORT_TRACEPOINT_SYMBOL_GPL(bcache_gc_copy_collision); | 41 | EXPORT_TRACEPOINT_SYMBOL_GPL(bcache_gc_copy_collision); |
42 | 42 | ||
43 | EXPORT_TRACEPOINT_SYMBOL_GPL(bcache_btree_insert_key); | ||
44 | |||
43 | EXPORT_TRACEPOINT_SYMBOL_GPL(bcache_btree_node_split); | 45 | EXPORT_TRACEPOINT_SYMBOL_GPL(bcache_btree_node_split); |
44 | EXPORT_TRACEPOINT_SYMBOL_GPL(bcache_btree_node_compact); | 46 | EXPORT_TRACEPOINT_SYMBOL_GPL(bcache_btree_node_compact); |
45 | EXPORT_TRACEPOINT_SYMBOL_GPL(bcache_btree_set_root); | 47 | EXPORT_TRACEPOINT_SYMBOL_GPL(bcache_btree_set_root); |
diff --git a/include/trace/events/bcache.h b/include/trace/events/bcache.h index c9952b36fcea..5ebda976ea93 100644 --- a/include/trace/events/bcache.h +++ b/include/trace/events/bcache.h | |||
@@ -305,6 +305,39 @@ DEFINE_EVENT(bkey, bcache_gc_copy_collision, | |||
305 | TP_ARGS(k) | 305 | TP_ARGS(k) |
306 | ); | 306 | ); |
307 | 307 | ||
308 | TRACE_EVENT(bcache_btree_insert_key, | ||
309 | TP_PROTO(struct btree *b, struct bkey *k, unsigned op, unsigned status), | ||
310 | TP_ARGS(b, k, op, status), | ||
311 | |||
312 | TP_STRUCT__entry( | ||
313 | __field(u64, btree_node ) | ||
314 | __field(u32, btree_level ) | ||
315 | __field(u32, inode ) | ||
316 | __field(u64, offset ) | ||
317 | __field(u32, size ) | ||
318 | __field(u8, dirty ) | ||
319 | __field(u8, op ) | ||
320 | __field(u8, status ) | ||
321 | ), | ||
322 | |||
323 | TP_fast_assign( | ||
324 | __entry->btree_node = PTR_BUCKET_NR(b->c, &b->key, 0); | ||
325 | __entry->btree_level = b->level; | ||
326 | __entry->inode = KEY_INODE(k); | ||
327 | __entry->offset = KEY_OFFSET(k); | ||
328 | __entry->size = KEY_SIZE(k); | ||
329 | __entry->dirty = KEY_DIRTY(k); | ||
330 | __entry->op = op; | ||
331 | __entry->status = status; | ||
332 | ), | ||
333 | |||
334 | TP_printk("%u for %u at %llu(%u): %u:%llu len %u dirty %u", | ||
335 | __entry->status, __entry->op, | ||
336 | __entry->btree_node, __entry->btree_level, | ||
337 | __entry->inode, __entry->offset, | ||
338 | __entry->size, __entry->dirty) | ||
339 | ); | ||
340 | |||
308 | DECLARE_EVENT_CLASS(btree_split, | 341 | DECLARE_EVENT_CLASS(btree_split, |
309 | TP_PROTO(struct btree *b, unsigned keys), | 342 | TP_PROTO(struct btree *b, unsigned keys), |
310 | TP_ARGS(b, keys), | 343 | TP_ARGS(b, keys), |