diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2016-05-26 19:41:11 -0800 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2016-10-07 12:36:33 -0800 |
commit | 59681d0d4f95b1673fdc30e61a839497b9bc232b (patch) | |
tree | db246c9b52e900e90c528817bcea35469cac6c39 | |
parent | 020d1956f1d4549032bb4cde78ff8fe115c72753 (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.c | 2 | ||||
-rw-r--r-- | drivers/md/bcache/btree_io.c | 2 | ||||
-rw-r--r-- | drivers/md/bcache/btree_iter.c | 12 | ||||
-rw-r--r-- | drivers/md/bcache/btree_update.c | 19 | ||||
-rw-r--r-- | drivers/md/bcache/btree_update.h | 2 |
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 *); |