| From 5d383f5ff809b6a2f26712e96fda1308903b2290 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 21 May 2021 16:44:09 -0400 |
| Subject: btrfs: abort transaction if we fail to update the delayed inode |
| |
| From: Josef Bacik <josef@toxicpanda.com> |
| |
| [ Upstream commit 04587ad9bef6ce9d510325b4ba9852b6129eebdb ] |
| |
| If we fail to update the delayed inode we need to abort the transaction, |
| because we could leave an inode with the improper counts or some other |
| such corruption behind. |
| |
| Signed-off-by: Josef Bacik <josef@toxicpanda.com> |
| Reviewed-by: David Sterba <dsterba@suse.com> |
| Signed-off-by: David Sterba <dsterba@suse.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/btrfs/delayed-inode.c | 8 ++++++++ |
| 1 file changed, 8 insertions(+) |
| |
| diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c |
| index 3af06ef98b12..04422d929c23 100644 |
| --- a/fs/btrfs/delayed-inode.c |
| +++ b/fs/btrfs/delayed-inode.c |
| @@ -1073,6 +1073,14 @@ err_out: |
| btrfs_delayed_inode_release_metadata(fs_info, node, (ret < 0)); |
| btrfs_release_delayed_inode(node); |
| |
| + /* |
| + * If we fail to update the delayed inode we need to abort the |
| + * transaction, because we could leave the inode with the improper |
| + * counts behind. |
| + */ |
| + if (ret && ret != -ENOENT) |
| + btrfs_abort_transaction(trans, ret); |
| + |
| return ret; |
| |
| search: |
| -- |
| 2.30.2 |
| |