diff options
-rw-r--r-- | drivers/md/bcache/bset.c | 9 | ||||
-rw-r--r-- | drivers/md/bcache/btree.c | 5 |
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); |