mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-23 14:13:58 +08:00
btrfs: handle btrfs_record_root_in_trans failure in btrfs_recover_log_trees
btrfs_record_root_in_trans will return errors in the future, so handle the error properly in btrfs_recover_log_trees. This appears tricky, however we have a reference count on the destination root, so if this fails we need to continue on in the loop to make sure the proper cleanup is done. Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: David Sterba <dsterba@suse.com> [ add comment ] Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
2731f5186b
commit
2002ae112a
@ -6280,8 +6280,13 @@ again:
|
||||
}
|
||||
|
||||
wc.replay_dest->log_root = log;
|
||||
btrfs_record_root_in_trans(trans, wc.replay_dest);
|
||||
ret = walk_log_tree(trans, log, &wc);
|
||||
ret = btrfs_record_root_in_trans(trans, wc.replay_dest);
|
||||
if (ret)
|
||||
/* The loop needs to continue due to the root refs */
|
||||
btrfs_handle_fs_error(fs_info, ret,
|
||||
"failed to record the log root in transaction");
|
||||
else
|
||||
ret = walk_log_tree(trans, log, &wc);
|
||||
|
||||
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