summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/md/bcache/btree_gc.c8
-rw-r--r--drivers/md/bcache/btree_iter.h8
2 files changed, 7 insertions, 9 deletions
diff --git a/drivers/md/bcache/btree_gc.c b/drivers/md/bcache/btree_gc.c
index b353cff5e0b0..72d09e883099 100644
--- a/drivers/md/bcache/btree_gc.c
+++ b/drivers/md/bcache/btree_gc.c
@@ -677,13 +677,7 @@ static int bch_coalesce_btree(struct cache_set *c, enum btree_id btree_id)
*/
memset(merge, 0, sizeof(merge));
- bch_btree_iter_init(&iter, c, btree_id, POS_MIN);
- iter.is_extents = false;
- iter.locks_want = BTREE_MAX_DEPTH;
-
- for (b = bch_btree_iter_peek_node(&iter);
- b;
- b = bch_btree_iter_next_node(&iter)) {
+ __for_each_btree_node(&iter, c, btree_id, POS_MIN, b, BTREE_MAX_DEPTH) {
memmove(merge + 1, merge,
sizeof(merge) - sizeof(merge[0]));
memmove(lock_seq + 1, lock_seq,
diff --git a/drivers/md/bcache/btree_iter.h b/drivers/md/bcache/btree_iter.h
index 5dc6b0aa6e3b..afd8965fae57 100644
--- a/drivers/md/bcache/btree_iter.h
+++ b/drivers/md/bcache/btree_iter.h
@@ -177,13 +177,17 @@ static inline int btree_iter_cmp(const struct btree_iter *l,
return bkey_cmp(l->pos, r->pos);
}
-#define for_each_btree_node(_iter, _c, _btree_id, _start, _b) \
- for (bch_btree_iter_init((_iter), (_c), (_btree_id), _start), \
+#define __for_each_btree_node(_iter, _c, _btree_id, _start, _b, _locks_want)\
+ for (__bch_btree_iter_init((_iter), (_c), (_btree_id), \
+ _start, _locks_want), \
(_iter)->is_extents = false, \
_b = bch_btree_iter_peek_node(_iter); \
(_b); \
(_b) = bch_btree_iter_next_node(_iter))
+#define for_each_btree_node(_iter, _c, _btree_id, _start, _b) \
+ __for_each_btree_node(_iter, _c, _btree_id, _start, _b, -1)
+
#define __for_each_btree_key(_iter, _c, _btree_id, _start, \
_k, _locks_want) \
for (__bch_btree_iter_init((_iter), (_c), (_btree_id), \