btrfs: do not warn if we can't find the reloc root when looking up backref
The backref code is looking for a reloc_root that corresponds to the given fs root. However any number of things could have gone wrong while initializing that reloc_root, like ENOMEM while trying to allocate the root itself, or EIO while trying to write the root item. This would result in no corresponding reloc_root being in the reloc root cache, and thus would return NULL when we do the find_reloc_root() call. Because of this we do not want to WARN_ON(). This presumably was meant to catch developer errors, cases where we messed up adding the reloc root. However we can easily hit this case with error injection, and thus should not do a WARN_ON(). CC: stable@vger.kernel.org # 5.10+ Reported-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org> Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
938fcbfb0c
commit
f78743fbda
|
@ -2623,7 +2623,7 @@ static int handle_direct_tree_backref(struct btrfs_backref_cache *cache,
|
|||
/* Only reloc backref cache cares about a specific root */
|
||||
if (cache->is_reloc) {
|
||||
root = find_reloc_root(cache->fs_info, cur->bytenr);
|
||||
if (WARN_ON(!root))
|
||||
if (!root)
|
||||
return -ENOENT;
|
||||
cur->root = root;
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue