summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2016-12-06 00:18:25 -0900
committerKent Overstreet <kent.overstreet@gmail.com>2016-12-06 02:26:21 -0900
commitb10abd2787a39d0569fcb9bba00870ebd6a91e93 (patch)
treed655e2c0be6f714967f53c805a3a81a2762a4d82
parentabb20f675f8b06c2a413715fed79639c902b42bc (diff)
bcache: fix btree node write tracepoint
b->nsets was changed, and it wasn't updated
-rw-r--r--drivers/md/bcache/btree_io.c10
-rw-r--r--include/trace/events/bcache.h20
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,