summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2015-04-21 07:24:23 -0700
committerKent Overstreet <kent.overstreet@gmail.com>2016-10-07 12:33:57 -0800
commita78973bb348578d895d94bedc24b32acc7999f73 (patch)
treeeaa442e7b342a63b6092e380bc955cd802594eaa
parent31f03656f111a425d1562b7e91870787bff083f6 (diff)
bcache: more microoptimizations
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-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);