summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/md/bcache/bset.c9
-rw-r--r--drivers/md/bcache/btree.c5
2 files changed, 8 insertions, 6 deletions
diff --git a/drivers/md/bcache/bset.c b/drivers/md/bcache/bset.c
index 494622b0bb97..305bb5421839 100644
--- a/drivers/md/bcache/bset.c
+++ b/drivers/md/bcache/bset.c
@@ -504,8 +504,13 @@ static void bset_alloc_tree(struct btree_keys *b, struct bset_tree *t)
t->prev = t[-1].prev + j;
}
- while (t < b->set + MAX_BSETS)
- t++->size = 0;
+ t->size = 0;
+
+ while (++t < b->set + MAX_BSETS) {
+ t->size = 0;
+ t->tree = NULL;
+ t->prev = NULL;
+ }
}
static void bch_bset_build_unwritten_tree(struct btree_keys *b)
diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c
index c672fa16db46..1bd44e73ca1b 100644
--- a/drivers/md/bcache/btree.c
+++ b/drivers/md/bcache/btree.c
@@ -1418,14 +1418,11 @@ retry:
b->accessed = 1;
- for (; i <= b->keys.nsets && b->keys.set[i].size; i++) {
+ for (; i <= b->keys.nsets; i++) {
prefetch(b->keys.set[i].tree);
prefetch(b->keys.set[i].data);
}
- for (; i <= b->keys.nsets; i++)
- prefetch(b->keys.set[i].data);
-
if (btree_node_io_error(b)) {
__btree_node_unlock(iter, level, b);
return ERR_PTR(-EIO);