bcache: Don't use op->insert_collision

When we convert bch_btree_insert() to bch_btree_map_leaf_nodes(), we
won't be passing struct btree_op to bch_btree_insert() anymore - so we
need a different way of returning whether there was a collision (really,
a replace collision).

Signed-off-by: Kent Overstreet <kmo@daterainc.com>
This commit is contained in:
Kent Overstreet
2013-07-24 18:06:22 -07:00
parent 1b207d80d5
commit 6054c6d4da
5 changed files with 16 additions and 7 deletions

View File

@@ -142,6 +142,7 @@ static void write_dirty_finish(struct closure *cl)
unsigned i;
struct btree_op op;
struct keylist keys;
int ret;
bch_btree_op_init(&op, -1);
bch_keylist_init(&keys);
@@ -153,12 +154,12 @@ static void write_dirty_finish(struct closure *cl)
for (i = 0; i < KEY_PTRS(&w->key); i++)
atomic_inc(&PTR_BUCKET(dc->disk.c, &w->key, i)->pin);
bch_btree_insert(&op, dc->disk.c, &keys, NULL, &w->key);
ret = bch_btree_insert(&op, dc->disk.c, &keys, NULL, &w->key);
if (op.insert_collision)
if (ret)
trace_bcache_writeback_collision(&w->key);
atomic_long_inc(op.insert_collision
atomic_long_inc(ret
? &dc->disk.c->writeback_keys_failed
: &dc->disk.c->writeback_keys_done);
}