mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 23:13:01 +02:00
btrfs: abort transaction during log replay if walk_log_tree() failed
If we failed walking a log tree during replay, we have a missing transaction abort to prevent committing a transaction where we didn't fully replay all the changes from a log tree and therefore can leave the respective subvolume tree in some inconsistent state. So add the missing transaction abort. CC: stable@vger.kernel.org # 6.1+ Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
8f1e1b263d
commit
2a5898c4aa
|
@ -7283,11 +7283,14 @@ again:
|
|||
|
||||
wc.replay_dest->log_root = log;
|
||||
ret = btrfs_record_root_in_trans(trans, wc.replay_dest);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
/* The loop needs to continue due to the root refs */
|
||||
btrfs_abort_transaction(trans, ret);
|
||||
else
|
||||
} else {
|
||||
ret = walk_log_tree(trans, log, &wc);
|
||||
if (ret)
|
||||
btrfs_abort_transaction(trans, ret);
|
||||
}
|
||||
|
||||
if (!ret && wc.stage == LOG_WALK_REPLAY_ALL) {
|
||||
ret = fixup_inode_link_counts(trans, wc.replay_dest,
|
||||
|
|
Loading…
Reference in New Issue
Block a user