diff options
-rw-r--r-- | drivers/md/bcache/btree_gc.c | 8 | ||||
-rw-r--r-- | drivers/md/bcache/btree_iter.h | 8 |
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), \ |