| From 694de48876ca48a72e0edd33941c5f01f671ec31 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 7 Jul 2020 18:38:05 +0200 |
| Subject: btrfs: clear log tree recovering status if starting transaction fails |
| |
| From: David Sterba <dsterba@suse.com> |
| |
| [ Upstream commit 1aeb6b563aea18cd55c73cf666d1d3245a00f08c ] |
| |
| When a log recovery is in progress, lots of operations have to take that |
| into account, so we keep this status per tree during the operation. Long |
| time ago error handling revamp patch 79787eaab461 ("btrfs: replace many |
| BUG_ONs with proper error handling") removed clearing of the status in |
| an error branch. Add it back as was intended in e02119d5a7b4 ("Btrfs: |
| Add a write ahead tree log to optimize synchronous operations"). |
| |
| There are probably no visible effects, log replay is done only during |
| mount and if it fails all structures are cleared so the stale status |
| won't be kept. |
| |
| Fixes: 79787eaab461 ("btrfs: replace many BUG_ONs with proper error handling") |
| Reviewed-by: Qu Wenruo <wqu@suse.com> |
| Reviewed-by: Anand Jain <anand.jain@oracle.com> |
| Signed-off-by: David Sterba <dsterba@suse.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/btrfs/tree-log.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c |
| index 300951088a11..4b913de2f24f 100644 |
| --- a/fs/btrfs/tree-log.c |
| +++ b/fs/btrfs/tree-log.c |
| @@ -6348,6 +6348,7 @@ next: |
| error: |
| if (wc.trans) |
| btrfs_end_transaction(wc.trans); |
| + clear_bit(BTRFS_FS_LOG_RECOVERING, &fs_info->flags); |
| btrfs_free_path(path); |
| return ret; |
| } |
| -- |
| 2.30.2 |
| |