]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
bcachefs: Fix fsck warning about btree_trans not passed to fsck error
authorKent Overstreet <kent.overstreet@linux.dev>
Mon, 15 Jul 2024 23:03:17 +0000 (19:03 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Thu, 18 Jul 2024 22:33:30 +0000 (18:33 -0400)
If a btree_trans is in use it's supposed to be passed to fsck_err so
that it can be unlocked if we're waiting on userspace input; but the
btree IO paths do call fsck errors where a btree_trans exists on the
stack but it's not passed through.

But it's ok, because it's unlocked while doing IO.

Fixes: a850bde6498b ("bcachefs: fsck_err() may now take a btree_trans")
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_iter.c

index 803cc58ff577e7a5655e8c8f4ad737aad1519046..36872207f09b22ac597d18b87e18ece7b07a92fc 100644 (file)
@@ -3282,7 +3282,8 @@ bool bch2_current_has_btree_trans(struct bch_fs *c)
        struct btree_trans *trans;
        bool ret = false;
        list_for_each_entry(trans, &c->btree_trans_list, list)
-               if (trans->locking_wait.task == current) {
+               if (trans->locking_wait.task == current &&
+                   trans->locked) {
                        ret = true;
                        break;
                }