mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-19 07:39:54 +02:00
btrfs: replace BUG_ON() with error handling at update_ref_for_cow()
[ Upstream commit b56329a782
]
Instead of a BUG_ON() just return an error, log an error message and
abort the transaction in case we find an extent buffer belonging to the
relocation tree that doesn't have the full backref flag set. This is
unexpected and should never happen (save for bugs or a potential bad
memory).
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
7d1df13bf0
commit
41a0f85e26
|
@ -451,8 +451,16 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
|
|||
}
|
||||
|
||||
owner = btrfs_header_owner(buf);
|
||||
BUG_ON(owner == BTRFS_TREE_RELOC_OBJECTID &&
|
||||
!(flags & BTRFS_BLOCK_FLAG_FULL_BACKREF));
|
||||
if (unlikely(owner == BTRFS_TREE_RELOC_OBJECTID &&
|
||||
!(flags & BTRFS_BLOCK_FLAG_FULL_BACKREF))) {
|
||||
btrfs_crit(fs_info,
|
||||
"found tree block at bytenr %llu level %d root %llu refs %llu flags %llx without full backref flag set",
|
||||
buf->start, btrfs_header_level(buf),
|
||||
btrfs_root_id(root), refs, flags);
|
||||
ret = -EUCLEAN;
|
||||
btrfs_abort_transaction(trans, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (refs > 1) {
|
||||
if ((owner == root->root_key.objectid ||
|
||||
|
|
Loading…
Reference in New Issue
Block a user