All of lore.kernel.org
 help / color / mirror / Atom feed
From: Josef Bacik <josef@toxicpanda.com>
To: linux-btrfs@vger.kernel.org, kernel-team@fb.com
Cc: Qu Wenruo <wqu@suse.com>
Subject: [PATCH v8 10/39] btrfs: handle btrfs_record_root_in_trans failure in btrfs_recover_log_trees
Date: Fri, 12 Mar 2021 15:25:05 -0500	[thread overview]
Message-ID: <f2d84dcb5b07246d69fd1701eb5f063b6b306f52.1615580595.git.josef@toxicpanda.com> (raw)
In-Reply-To: <cover.1615580595.git.josef@toxicpanda.com>

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 properly cleanup is done.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 fs/btrfs/tree-log.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index 2f1acc9aea9e..941b4dd96dd0 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -6278,8 +6278,12 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
 		}
 
 		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)
+			btrfs_handle_fs_error(fs_info, ret,
+				"Couldn't record the root in the 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,
-- 
2.26.2


  parent reply	other threads:[~2021-03-12 20:26 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-12 20:24 [PATCH v8 00/39] Cleanup error handling in relocation Josef Bacik
2021-03-12 20:24 ` [PATCH v8 01/39] btrfs: convert some BUG_ON()'s to ASSERT()'s in do_relocation Josef Bacik
2021-03-12 20:24 ` [PATCH v8 02/39] btrfs: convert BUG_ON()'s in relocate_tree_block Josef Bacik
2021-03-12 20:24 ` [PATCH v8 03/39] btrfs: handle errors from select_reloc_root() Josef Bacik
2021-03-12 20:24 ` [PATCH v8 04/39] btrfs: convert BUG_ON()'s in select_reloc_root() to proper errors Josef Bacik
2021-03-12 20:25 ` [PATCH v8 05/39] btrfs: check record_root_in_trans related failures in select_reloc_root Josef Bacik
2021-03-12 20:25 ` [PATCH v8 06/39] btrfs: do proper error handling in record_reloc_root_in_trans Josef Bacik
2021-03-12 20:25 ` [PATCH v8 07/39] btrfs: handle btrfs_record_root_in_trans failure in btrfs_rename_exchange Josef Bacik
2021-03-12 20:25 ` [PATCH v8 08/39] btrfs: handle btrfs_record_root_in_trans failure in btrfs_rename Josef Bacik
2021-03-12 20:25 ` [PATCH v8 09/39] btrfs: handle btrfs_record_root_in_trans failure in btrfs_delete_subvolume Josef Bacik
2021-03-12 20:25 ` Josef Bacik [this message]
2021-03-12 20:25 ` [PATCH v8 11/39] btrfs: handle btrfs_record_root_in_trans failure in create_subvol Josef Bacik
2021-03-12 20:25 ` [PATCH v8 12/39] btrfs: btrfs: handle btrfs_record_root_in_trans failure in relocate_tree_block Josef Bacik
2021-03-12 20:25 ` [PATCH v8 13/39] btrfs: handle btrfs_record_root_in_trans failure in start_transaction Josef Bacik
2021-03-12 20:25 ` [PATCH v8 14/39] btrfs: handle record_root_in_trans failure in qgroup_account_snapshot Josef Bacik
2021-03-12 20:25 ` [PATCH v8 15/39] btrfs: handle record_root_in_trans failure in btrfs_record_root_in_trans Josef Bacik
2021-03-12 20:25 ` [PATCH v8 16/39] btrfs: handle record_root_in_trans failure in create_pending_snapshot Josef Bacik
2021-03-12 20:25 ` [PATCH v8 17/39] btrfs: return an error from btrfs_record_root_in_trans Josef Bacik
2021-03-12 20:25 ` [PATCH v8 18/39] btrfs: have proper error handling in btrfs_init_reloc_root Josef Bacik
2021-03-12 20:25 ` [PATCH v8 19/39] btrfs: do proper error handling in create_reloc_root Josef Bacik
2021-03-12 20:25 ` [PATCH v8 20/39] btrfs: validate ->reloc_root after recording root in trans Josef Bacik
2021-03-12 20:25 ` [PATCH v8 21/39] btrfs: handle btrfs_update_reloc_root failure in commit_fs_roots Josef Bacik
2021-03-12 20:25 ` [PATCH v8 22/39] btrfs: change insert_dirty_subvol to return errors Josef Bacik
2021-03-12 20:25 ` [PATCH v8 23/39] btrfs: handle btrfs_update_reloc_root failure in insert_dirty_subvol Josef Bacik
2021-03-12 20:25 ` [PATCH v8 24/39] btrfs: handle btrfs_update_reloc_root failure in prepare_to_merge Josef Bacik
2021-03-12 20:25 ` [PATCH v8 25/39] btrfs: do proper error handling in btrfs_update_reloc_root Josef Bacik
2021-03-12 20:25 ` [PATCH v8 26/39] btrfs: convert logic BUG_ON()'s in replace_path to ASSERT()'s Josef Bacik
2021-03-12 20:25 ` [PATCH v8 27/39] btrfs: handle btrfs_cow_block errors in replace_path Josef Bacik
2021-03-12 20:25 ` [PATCH v8 28/39] btrfs: handle btrfs_search_slot failure " Josef Bacik
2021-04-06 19:06   ` David Sterba
2021-03-12 20:25 ` [PATCH v8 29/39] btrfs: handle errors in reference count manipulation " Josef Bacik
2021-03-12 20:25 ` [PATCH v8 30/39] btrfs: handle extent reference errors in do_relocation Josef Bacik
2021-03-12 20:25 ` [PATCH v8 31/39] btrfs: check for BTRFS_BLOCK_FLAG_FULL_BACKREF being set improperly Josef Bacik
2021-03-12 20:25 ` [PATCH v8 32/39] btrfs: remove the extent item sanity checks in relocate_block_group Josef Bacik
2021-03-12 20:25 ` [PATCH v8 33/39] btrfs: do proper error handling in create_reloc_inode Josef Bacik
2021-03-12 20:25 ` [PATCH v8 34/39] btrfs: handle __add_reloc_root failures in btrfs_recover_relocation Josef Bacik
2021-03-12 20:25 ` [PATCH v8 35/39] btrfs: do not panic in __add_reloc_root Josef Bacik
2021-03-12 20:25 ` [PATCH v8 36/39] btrfs: cleanup error handling in prepare_to_merge Josef Bacik
2021-03-12 20:25 ` [PATCH v8 37/39] btrfs: handle extent corruption with select_one_root properly Josef Bacik
2021-03-12 20:25 ` [PATCH v8 38/39] btrfs: do proper error handling in merge_reloc_roots Josef Bacik
2021-03-12 20:25 ` [PATCH v8 39/39] btrfs: check return value of btrfs_commit_transaction in relocation Josef Bacik
2021-04-09 14:54 ` [PATCH v8 00/39] Cleanup error handling " David Sterba

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f2d84dcb5b07246d69fd1701eb5f063b6b306f52.1615580595.git.josef@toxicpanda.com \
    --to=josef@toxicpanda.com \
    --cc=kernel-team@fb.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=wqu@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.