diff options
author | Filipe Manana <fdmanana@suse.com> | 2023-01-10 14:56:37 +0000 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2023-01-12 15:43:30 +0100 |
commit | 16199ad9eb6db60a6b10794a09fc1ac6d09312ff (patch) | |
tree | 4495c26f3649e7964bd07c6620a81c2b8eca17dc /security/min_addr.c | |
parent | 94cd63ae679973edeb5ea95ec25a54467c3e54c8 (diff) |
btrfs: do not abort transaction on failure to write log tree when syncing log
When syncing the log, if we fail to write log tree extent buffers, we mark
the log for a full commit and abort the transaction. However we don't need
to abort the transaction, all we really need to do is to make sure no one
can commit a superblock pointing to new log tree roots. Just because we
got a failure writing extent buffers for a log tree, it does not mean we
will also fail to do a transaction commit.
One particular case is if due to a bug somewhere, when writing log tree
extent buffers, the tree checker detects some corruption and the writeout
fails because of that. Aborting the transaction can be very disruptive for
a user, specially if the issue happened on a root filesystem. One example
is the scenario in the Link tag below, where an isolated corruption on log
tree leaves was causing transaction aborts when syncing the log.
Link: https://lore.kernel.org/linux-btrfs/ae169fc6-f504-28f0-a098-6fa6a4dfb612@leemhuis.info/
CC: stable@vger.kernel.org # 5.15+
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'security/min_addr.c')
0 files changed, 0 insertions, 0 deletions