Unverified Commit 65988875 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!11710 btrfs: replace BUG_ON() with error handling at update_ref_for_cow()

parents 79948936 43bbd4f6
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -896,8 +896,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),
			   root->root_key.objectid, refs, flags);
		ret = -EUCLEAN;
		btrfs_abort_transaction(trans, ret);
		return ret;
	}

	if (refs > 1) {
		if ((owner == root->root_key.objectid ||