summaryrefslogtreecommitdiff
path: root/libbcachefs/btree_iter.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2017-04-14 20:38:49 -0800
committerKent Overstreet <kent.overstreet@gmail.com>2017-04-14 20:40:31 -0800
commit819f2dde79241915a6edda2c20bb4ca5d4017030 (patch)
treeb165cdf270fd14e98ecfa4affe57943c6854529e /libbcachefs/btree_iter.c
parent03bc9d71b13e6f8e879894f93ea16f1f4a8280c9 (diff)
Update bcachefs sources to f026e4e024
Diffstat (limited to 'libbcachefs/btree_iter.c')
-rw-r--r--libbcachefs/btree_iter.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/libbcachefs/btree_iter.c b/libbcachefs/btree_iter.c
index 55303f09..0b28082e 100644
--- a/libbcachefs/btree_iter.c
+++ b/libbcachefs/btree_iter.c
@@ -1109,6 +1109,26 @@ void __bch2_btree_iter_init(struct btree_iter *iter, struct bch_fs *c,
prefetch(c->btree_roots[btree_id].b);
}
+void bch2_btree_iter_unlink(struct btree_iter *iter)
+{
+ struct btree_iter *linked;
+
+ __bch2_btree_iter_unlock(iter);
+
+ if (!btree_iter_linked(iter))
+ return;
+
+ for_each_linked_btree_iter(iter, linked) {
+
+ if (linked->next == iter) {
+ linked->next = iter->next;
+ return;
+ }
+ }
+
+ BUG();
+}
+
void bch2_btree_iter_link(struct btree_iter *iter, struct btree_iter *new)
{
BUG_ON(btree_iter_linked(new));
@@ -1128,7 +1148,7 @@ void bch2_btree_iter_link(struct btree_iter *iter, struct btree_iter *new)
void bch2_btree_iter_copy(struct btree_iter *dst, struct btree_iter *src)
{
- bch2_btree_iter_unlock(dst);
+ __bch2_btree_iter_unlock(dst);
memcpy(dst, src, offsetof(struct btree_iter, next));
dst->nodes_locked = dst->nodes_intent_locked = 0;
}