summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2016-05-26 19:41:11 -0800
committerKent Overstreet <kent.overstreet@gmail.com>2016-10-07 12:36:33 -0800
commit59681d0d4f95b1673fdc30e61a839497b9bc232b (patch)
treedb246c9b52e900e90c528817bcea35469cac6c39
parent020d1956f1d4549032bb4cde78ff8fe115c72753 (diff)
bcache: reduce iter->c usage
considering removing it, makes it easier to see how it's used
-rw-r--r--drivers/md/bcache/btree_gc.c2
-rw-r--r--drivers/md/bcache/btree_io.c2
-rw-r--r--drivers/md/bcache/btree_iter.c12
-rw-r--r--drivers/md/bcache/btree_update.c19
-rw-r--r--drivers/md/bcache/btree_update.h2
5 files changed, 20 insertions, 17 deletions
diff --git a/drivers/md/bcache/btree_gc.c b/drivers/md/bcache/btree_gc.c
index 72d09e883099..9e8222d7f643 100644
--- a/drivers/md/bcache/btree_gc.c
+++ b/drivers/md/bcache/btree_gc.c
@@ -480,7 +480,7 @@ static void bch_coalesce_nodes(struct btree *old_nodes[GC_MERGE_NODES],
block_bytes(c)) > blocks)
return;
- res = bch_btree_reserve_get(iter, parent, nr_old_nodes, false, NULL);
+ res = bch_btree_reserve_get(c, parent, nr_old_nodes, false, NULL);
if (IS_ERR(res))
return;
diff --git a/drivers/md/bcache/btree_io.c b/drivers/md/bcache/btree_io.c
index 0672e6c46663..a033b9dc4028 100644
--- a/drivers/md/bcache/btree_io.c
+++ b/drivers/md/bcache/btree_io.c
@@ -590,7 +590,7 @@ static void do_btree_node_write(struct closure *cl)
* Make sure to update b->written so bch_btree_init_next() doesn't
* break:
*/
- if (bch_journal_error(&b->c->journal)) {
+ if (bch_journal_error(&c->journal)) {
struct btree_write *w = btree_prev_write(b);
set_btree_node_write_error(b);
diff --git a/drivers/md/bcache/btree_iter.c b/drivers/md/bcache/btree_iter.c
index 44a93d824d22..c4f167e98ed5 100644
--- a/drivers/md/bcache/btree_iter.c
+++ b/drivers/md/bcache/btree_iter.c
@@ -353,27 +353,29 @@ void bch_btree_iter_reinit_node(struct btree_iter *iter, struct btree *b)
iter->pos, iter->is_extents);
}
-static void btree_iter_lock_root(struct btree_iter *iter, struct bpos pos)
+static inline void btree_iter_lock_root(struct btree_iter *iter, struct bpos pos)
{
+ struct cache_set *c = iter->c;
+
iter->nodes_locked = 0;
iter->nodes_intent_locked = 0;
memset(iter->nodes, 0, sizeof(iter->nodes));
while (1) {
- struct btree *b = iter->c->btree_roots[iter->btree_id].b;
+ struct btree *b = c->btree_roots[iter->btree_id].b;
iter->level = b->level;
if (btree_node_lock(b, iter, iter->level,
- (b != iter->c->btree_roots[iter->btree_id].b))) {
+ (b != c->btree_roots[iter->btree_id].b))) {
btree_iter_node_set(iter, b, pos);
break;
}
}
}
-static int btree_iter_down(struct btree_iter *iter, struct bpos pos,
- struct closure *cl)
+static inline int btree_iter_down(struct btree_iter *iter, struct bpos pos,
+ struct closure *cl)
{
struct btree *b;
struct bkey_s_c k = __btree_iter_peek(iter);
diff --git a/drivers/md/bcache/btree_update.c b/drivers/md/bcache/btree_update.c
index 1d3dcf194d70..9e7f44e014a3 100644
--- a/drivers/md/bcache/btree_update.c
+++ b/drivers/md/bcache/btree_update.c
@@ -566,7 +566,7 @@ err_free:
return ERR_PTR(ret);
}
-struct btree_reserve *bch_btree_reserve_get(struct btree_iter *iter,
+struct btree_reserve *bch_btree_reserve_get(struct cache_set *c,
struct btree *b,
unsigned extra_nodes,
bool check_enospc,
@@ -575,7 +575,7 @@ struct btree_reserve *bch_btree_reserve_get(struct btree_iter *iter,
unsigned depth = btree_node_root(b)->level - b->level;
unsigned nr_nodes = btree_reserve_required_nodes(depth) + extra_nodes;
- return __bch_btree_reserve_get(iter->c, check_enospc,
+ return __bch_btree_reserve_get(c, check_enospc,
nr_nodes, cl);
}
@@ -777,20 +777,21 @@ static void verify_keys_sorted(struct keylist *l)
static void btree_node_lock_for_insert(struct btree *b, struct btree_iter *iter)
{
+ struct cache_set *c = iter->c;
relock:
btree_node_lock_write(b, iter);
- BUG_ON(&write_block(iter->c, b)->keys < btree_bset_last(b));
+ BUG_ON(&write_block(c, b)->keys < btree_bset_last(b));
/*
* If the last bset has been written, initialize a new one - check after
* taking the write lock because it can be written with only a read
* lock:
*/
- if (b->written != btree_blocks(iter->c) &&
- &write_block(iter->c, b)->keys > btree_bset_last(b)) {
+ if (b->written != btree_blocks(c) &&
+ &write_block(c, b)->keys > btree_bset_last(b)) {
btree_node_unlock_write(b, iter);
- bch_btree_init_next(iter->c, b, iter);
+ bch_btree_init_next(c, b, iter);
goto relock;
}
}
@@ -1482,7 +1483,7 @@ static int bch_btree_split_leaf(struct btree_iter *iter, unsigned flags,
goto out_get_locks;
}
- reserve = bch_btree_reserve_get(iter, b, 0,
+ reserve = bch_btree_reserve_get(c, b, 0,
!(flags & BTREE_INSERT_NOFAIL),
cl);
if (IS_ERR(reserve)) {
@@ -2002,7 +2003,7 @@ int bch_btree_node_rewrite(struct btree_iter *iter, struct btree *b,
if (!bch_btree_iter_upgrade(iter))
return -EINTR;
- reserve = bch_btree_reserve_get(iter, b, 1, true, cl);
+ reserve = bch_btree_reserve_get(c, b, 1, true, cl);
if (IS_ERR(reserve)) {
trace_bcache_btree_gc_rewrite_node_fail(b);
return PTR_ERR(reserve);
@@ -2029,7 +2030,7 @@ int bch_btree_node_rewrite(struct btree_iter *iter, struct btree *b,
bch_btree_set_root(iter, n, as, reserve);
}
- btree_open_bucket_put(iter->c, n);
+ btree_open_bucket_put(c, n);
bch_btree_node_free_inmem(iter, b);
diff --git a/drivers/md/bcache/btree_update.h b/drivers/md/bcache/btree_update.h
index 977f811cbf89..4418bcd5af97 100644
--- a/drivers/md/bcache/btree_update.h
+++ b/drivers/md/bcache/btree_update.h
@@ -128,7 +128,7 @@ void bch_btree_set_root_initial(struct cache_set *, struct btree *,
struct btree_reserve *);
void bch_btree_reserve_put(struct cache_set *, struct btree_reserve *);
-struct btree_reserve *bch_btree_reserve_get(struct btree_iter *,
+struct btree_reserve *bch_btree_reserve_get(struct cache_set *,
struct btree *, unsigned,
bool, struct closure *);