diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2016-12-06 00:18:25 -0900 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2016-12-06 02:26:21 -0900 |
commit | b10abd2787a39d0569fcb9bba00870ebd6a91e93 (patch) | |
tree | d655e2c0be6f714967f53c805a3a81a2762a4d82 | |
parent | abb20f675f8b06c2a413715fed79639c902b42bc (diff) |
bcache: fix btree node write tracepoint
b->nsets was changed, and it wasn't updated
-rw-r--r-- | drivers/md/bcache/btree_io.c | 10 | ||||
-rw-r--r-- | include/trace/events/bcache.h | 20 |
2 files changed, 15 insertions, 15 deletions
diff --git a/drivers/md/bcache/btree_io.c b/drivers/md/bcache/btree_io.c index c8b88d16e21c..108e6e76caa4 100644 --- a/drivers/md/bcache/btree_io.c +++ b/drivers/md/bcache/btree_io.c @@ -1301,7 +1301,7 @@ void __bch_btree_node_write(struct cache_set *c, struct btree *b, struct bch_extent_ptr *ptr; struct cache *ca; struct sort_iter sort_iter; - unsigned sectors_to_write, order, bytes, u64s; + unsigned bytes_to_write, sectors_to_write, order, bytes, u64s; u64 seq = 0; bool used_mempool; unsigned long old, new; @@ -1339,8 +1339,6 @@ void __bch_btree_node_write(struct cache_set *c, struct btree *b, BUG_ON(!list_empty(&b->write_blocked)); - trace_bcache_btree_write(c, b); - BUG_ON(b->written >= c->sb.btree_node_size); BUG_ON(bset_written(b, btree_bset_last(b))); BUG_ON(le64_to_cpu(b->data->magic) != bset_magic(&c->disk_sb)); @@ -1432,11 +1430,13 @@ void __bch_btree_node_write(struct cache_set *c, struct btree *b, else bne->csum = cpu_to_le64(btree_csum_set(b, bne)); - sectors_to_write = round_up((void *) bset_bkey_last(i) - data, - block_bytes(c)) >> 9; + bytes_to_write = (void *) bset_bkey_last(i) - data; + sectors_to_write = round_up(bytes_to_write, block_bytes(c)) >> 9; BUG_ON(b->written + sectors_to_write > c->sb.btree_node_size); + trace_bcache_btree_write(b, bytes_to_write, sectors_to_write); + /* * We handle btree write errors by immediately halting the journal - * after we've done that, we can't issue any subsequent btree writes diff --git a/include/trace/events/bcache.h b/include/trace/events/bcache.h index 02e3fafcf66d..960b6f8dc3a9 100644 --- a/include/trace/events/bcache.h +++ b/include/trace/events/bcache.h @@ -447,23 +447,23 @@ DEFINE_EVENT(btree_node, bcache_btree_read, ); TRACE_EVENT(bcache_btree_write, - TP_PROTO(struct cache_set *c, struct btree *b), - TP_ARGS(c, b), + TP_PROTO(struct btree *b, unsigned bytes, unsigned sectors), + TP_ARGS(b, bytes, sectors), TP_STRUCT__entry( - __field(u64, bucket ) - __field(unsigned, block ) - __field(unsigned, u64s ) + __field(enum bkey_type, type) + __field(unsigned, bytes ) + __field(unsigned, sectors ) ), TP_fast_assign( - __entry->bucket = PTR_BUCKET_NR_TRACE(c, &b->key, 0); - __entry->block = b->written; - __entry->u64s = le16_to_cpu(b->keys.set[b->keys.nsets].data->u64s); + __entry->type = btree_node_type(b); + __entry->bytes = bytes; + __entry->sectors = sectors; ), - TP_printk("bucket %llu block %u u64s %u", - __entry->bucket, __entry->block, __entry->u64s) + TP_printk("bkey type %u bytes %u sectors %u", + __entry->type , __entry->bytes, __entry->sectors) ); DEFINE_EVENT(btree_node, bcache_btree_node_alloc, |