Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5df9573 authored by Mark Fasheh's avatar Mark Fasheh Committed by David Sterba
Browse files

btrfs: Go readonly on bad extent refs in update_ref_for_cow()



update_ref_for_cow() will BUG_ON() after it's call to
btrfs_lookup_extent_info() if no existing references are found.  Since refs
are computed directly from disk, this should be treated as a corruption
instead of a logic error.

Signed-off-by: default avatarMark Fasheh <mfasheh@suse.de>
parent 4ed1d16e
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -333,7 +333,11 @@ static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
					       buf->len, &refs, &flags);
		if (ret)
			return ret;
		BUG_ON(refs == 0);
		if (refs == 0) {
			ret = -EROFS;
			btrfs_std_error(root->fs_info, ret);
			return ret;
		}
	} else {
		refs = 1;
		if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID ||