summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2019-05-10 16:09:17 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2019-05-10 17:52:58 -0400
commit8aa61c0ffec71f3daa23610a3210b0254ebe4d37 (patch)
treefd013703400ab4451bc6e7c4416406cffe066554
parentfd40d874ebe49e89ef2eb808ba6e39696041404a (diff)
bcachefs: Kill remaining bch2_btree_iter_unlock() uses
-rw-r--r--fs/bcachefs/btree_iter.c12
-rw-r--r--fs/bcachefs/btree_iter.h2
-rw-r--r--fs/bcachefs/btree_update_interior.c19
3 files changed, 12 insertions, 21 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c
index 5631f98f3845..1f92f43397a1 100644
--- a/fs/bcachefs/btree_iter.c
+++ b/fs/bcachefs/btree_iter.c
@@ -389,16 +389,6 @@ void __bch2_btree_iter_downgrade(struct btree_iter *iter,
bch2_btree_trans_verify_locks(iter->trans);
}
-int bch2_btree_iter_unlock(struct btree_iter *iter)
-{
- struct btree_iter *linked;
-
- trans_for_each_iter(iter->trans, linked)
- __bch2_btree_iter_unlock(linked);
-
- return btree_iter_err(iter);
-}
-
bool bch2_btree_trans_relock(struct btree_trans *trans)
{
struct btree_iter *iter;
@@ -1041,7 +1031,7 @@ static unsigned btree_iter_up_until_locked(struct btree_iter *iter,
* Returns 0 on success, -EIO on error (error reading in a btree node).
*
* On error, caller (peek_node()/peek_key()) must return NULL; the error is
- * stashed in the iterator and returned from bch2_btree_iter_unlock().
+ * stashed in the iterator and returned from bch2_trans_exit().
*/
int __must_check __bch2_btree_iter_traverse(struct btree_iter *iter)
{
diff --git a/fs/bcachefs/btree_iter.h b/fs/bcachefs/btree_iter.h
index a46a6a4ed5ee..9615eafe4d48 100644
--- a/fs/bcachefs/btree_iter.h
+++ b/fs/bcachefs/btree_iter.h
@@ -101,8 +101,6 @@ void bch2_btree_node_iter_fix(struct btree_iter *, struct btree *,
struct btree_node_iter *, struct bkey_packed *,
unsigned, unsigned);
-int bch2_btree_iter_unlock(struct btree_iter *);
-
bool bch2_btree_trans_relock(struct btree_trans *);
void bch2_btree_trans_unlock(struct btree_trans *);
diff --git a/fs/bcachefs/btree_update_interior.c b/fs/bcachefs/btree_update_interior.c
index fb6bf79a1a8a..23373ccf334d 100644
--- a/fs/bcachefs/btree_update_interior.c
+++ b/fs/bcachefs/btree_update_interior.c
@@ -1550,6 +1550,7 @@ split:
int bch2_btree_split_leaf(struct bch_fs *c, struct btree_iter *iter,
unsigned flags)
{
+ struct btree_trans *trans = iter->trans;
struct btree *b = iter->l[0].b;
struct btree_update *as;
struct closure cl;
@@ -1560,7 +1561,7 @@ int bch2_btree_split_leaf(struct bch_fs *c, struct btree_iter *iter,
* We already have a disk reservation and open buckets pinned; this
* allocation must not block:
*/
- trans_for_each_iter(iter->trans, linked)
+ trans_for_each_iter(trans, linked)
if (linked->btree_id == BTREE_ID_EXTENTS)
flags |= BTREE_INSERT_USE_RESERVE;
@@ -1572,10 +1573,10 @@ int bch2_btree_split_leaf(struct bch_fs *c, struct btree_iter *iter,
if (flags & BTREE_INSERT_NOUNLOCK)
return -EINTR;
- bch2_btree_trans_unlock(iter->trans);
+ bch2_btree_trans_unlock(trans);
down_read(&c->gc_lock);
- if (!bch2_btree_trans_relock(iter->trans))
+ if (!bch2_btree_trans_relock(trans))
ret = -EINTR;
}
@@ -1596,7 +1597,7 @@ int bch2_btree_split_leaf(struct bch_fs *c, struct btree_iter *iter,
ret = PTR_ERR(as);
if (ret == -EAGAIN) {
BUG_ON(flags & BTREE_INSERT_NOUNLOCK);
- bch2_btree_iter_unlock(iter);
+ bch2_btree_trans_unlock(trans);
ret = -EINTR;
}
goto out;
@@ -1623,6 +1624,7 @@ void __bch2_foreground_maybe_merge(struct bch_fs *c,
unsigned flags,
enum btree_node_sibling sib)
{
+ struct btree_trans *trans = iter->trans;
struct btree_update *as;
struct bkey_format_state new_s;
struct bkey_format new_f;
@@ -1777,7 +1779,7 @@ err_cycle_gc_lock:
if (flags & BTREE_INSERT_NOUNLOCK)
goto out;
- bch2_btree_iter_unlock(iter);
+ bch2_btree_trans_unlock(trans);
down_read(&c->gc_lock);
up_read(&c->gc_lock);
@@ -1793,7 +1795,7 @@ err:
if ((ret == -EAGAIN || ret == -EINTR) &&
!(flags & BTREE_INSERT_NOUNLOCK)) {
- bch2_btree_iter_unlock(iter);
+ bch2_btree_trans_unlock(trans);
closure_sync(&cl);
ret = bch2_btree_iter_traverse(iter);
if (ret)
@@ -1860,6 +1862,7 @@ static int __btree_node_rewrite(struct bch_fs *c, struct btree_iter *iter,
int bch2_btree_node_rewrite(struct bch_fs *c, struct btree_iter *iter,
__le64 seq, unsigned flags)
{
+ struct btree_trans *trans = iter->trans;
struct closure cl;
struct btree *b;
int ret;
@@ -1872,7 +1875,7 @@ int bch2_btree_node_rewrite(struct bch_fs *c, struct btree_iter *iter,
if (!(flags & BTREE_INSERT_GC_LOCK_HELD)) {
if (!down_read_trylock(&c->gc_lock)) {
- bch2_btree_iter_unlock(iter);
+ bch2_btree_trans_unlock(trans);
down_read(&c->gc_lock);
}
}
@@ -1891,7 +1894,7 @@ int bch2_btree_node_rewrite(struct bch_fs *c, struct btree_iter *iter,
ret != -EINTR)
break;
- bch2_btree_iter_unlock(iter);
+ bch2_btree_trans_unlock(trans);
closure_sync(&cl);
}