]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
btrfs: record delayed inode root in transaction
authorBoris Burkov <boris@bur.io>
Thu, 21 Mar 2024 17:14:24 +0000 (10:14 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 27 Apr 2024 15:05:22 +0000 (17:05 +0200)
[ Upstream commit 71537e35c324ea6fbd68377a4f26bb93a831ae35 ]

When running delayed inode updates, we do not record the inode's root in
the transaction, but we do allocate PREALLOC and thus converted PERTRANS
space for it. To be sure we free that PERTRANS meta rsv, we must ensure
that we record the root in the transaction.

Fixes: 4f5427ccce5d ("btrfs: delayed-inode: Use new qgroup meta rsv for delayed inode and item")
CC: stable@vger.kernel.org # 6.1+
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Boris Burkov <boris@bur.io>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/btrfs/delayed-inode.c

index 5a98c5da1225068a92ca1d5acdf208f02bcde175..8d8b455992362a2d579138025b0cea024eee2166 100644 (file)
@@ -1046,6 +1046,9 @@ __btrfs_commit_inode_delayed_items(struct btrfs_trans_handle *trans,
        if (ret)
                return ret;
 
+       ret = btrfs_record_root_in_trans(trans, node->root);
+       if (ret)
+               return ret;
        ret = btrfs_update_delayed_inode(trans, node->root, path, node);
        return ret;
 }