+++ /dev/null
-From 4490e803e1fe9fab8db5025e44e23b55df54078b Mon Sep 17 00:00:00 2001
-From: Filipe Manana <fdmanana@suse.com>
-Date: Wed, 26 Jul 2023 16:56:57 +0100
-Subject: btrfs: don't start transaction when joining with TRANS_JOIN_NOSTART
-
-From: Filipe Manana <fdmanana@suse.com>
-
-commit 4490e803e1fe9fab8db5025e44e23b55df54078b upstream.
-
-When joining a transaction with TRANS_JOIN_NOSTART, if we don't find a
-running transaction we end up creating one. This goes against the purpose
-of TRANS_JOIN_NOSTART which is to join a running transaction if its state
-is at or below the state TRANS_STATE_COMMIT_START, otherwise return an
--ENOENT error and don't start a new transaction. So fix this to not create
-a new transaction if there's no running transaction at or below that
-state.
-
-CC: stable@vger.kernel.org # 4.14+
-Fixes: a6d155d2e363 ("Btrfs: fix deadlock between fiemap and transaction commits")
-Signed-off-by: Filipe Manana <fdmanana@suse.com>
-Signed-off-by: David Sterba <dsterba@suse.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- fs/btrfs/transaction.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
---- a/fs/btrfs/transaction.c
-+++ b/fs/btrfs/transaction.c
-@@ -216,10 +216,11 @@ loop:
- spin_unlock(&fs_info->trans_lock);
-
- /*
-- * If we are ATTACH, we just want to catch the current transaction,
-- * and commit it. If there is no transaction, just return ENOENT.
-+ * If we are ATTACH or TRANS_JOIN_NOSTART, we just want to catch the
-+ * current transaction, and commit it. If there is no transaction, just
-+ * return ENOENT.
- */
-- if (type == TRANS_ATTACH)
-+ if (type == TRANS_ATTACH || type == TRANS_JOIN_NOSTART)
- return -ENOENT;
-
- /*