summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/bcachefs/btree_locking.c7
-rw-r--r--fs/bcachefs/btree_locking.h2
2 files changed, 3 insertions, 6 deletions
diff --git a/fs/bcachefs/btree_locking.c b/fs/bcachefs/btree_locking.c
index 19e19192a08b..1cdf7d4f9cc7 100644
--- a/fs/bcachefs/btree_locking.c
+++ b/fs/bcachefs/btree_locking.c
@@ -402,14 +402,13 @@ int bch2_trans_relock(struct btree_trans *trans)
struct btree_path *path;
if (unlikely(trans->restarted))
- return -BCH_ERR_transaction_restart_relock;
+ return - ((int) trans->restarted);
trans_for_each_path(trans, path)
if (path->should_be_locked &&
- bch2_btree_path_relock(trans, path, _RET_IP_)) {
+ !bch2_btree_path_relock_norestart(trans, path, _RET_IP_)) {
trace_and_count(trans->c, trans_restart_relock, trans, _RET_IP_, path);
- BUG_ON(!trans->restarted);
- return -BCH_ERR_transaction_restart_relock;
+ return btree_trans_restart(trans, BCH_ERR_transaction_restart_relock);
}
return 0;
}
diff --git a/fs/bcachefs/btree_locking.h b/fs/bcachefs/btree_locking.h
index 3bc3301b7b1b..3bc490bc5120 100644
--- a/fs/bcachefs/btree_locking.h
+++ b/fs/bcachefs/btree_locking.h
@@ -339,8 +339,6 @@ static inline int bch2_btree_path_relock(struct btree_trans *trans,
return 0;
}
-int bch2_btree_path_relock(struct btree_trans *, struct btree_path *, unsigned long);
-
/* upgrade */
bool bch2_btree_path_upgrade_noupgrade_sibs(struct btree_trans *,