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

Commit 7261009c authored by Yan's avatar Yan Committed by Chris Mason
Browse files

btrfs_drop_extents: handle BTRFS_INODE_REF_KEY types


It's possible "key.type == BTRFS_INODE_REF_KEY" and "key.offset >= end".

Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent 068fe39f
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -507,11 +507,12 @@ int btrfs_drop_extents(struct btrfs_trans_handle *trans,
		slot = path->slots[0];
		slot = path->slots[0];
		ret = 0;
		ret = 0;
		btrfs_item_key_to_cpu(leaf, &key, slot);
		btrfs_item_key_to_cpu(leaf, &key, slot);

		if (btrfs_key_type(&key) == BTRFS_EXTENT_DATA_KEY &&
		if (key.offset >= end || key.objectid != inode->i_ino) {
		    key.offset >= end) {
			goto out;
			goto out;
		}
		}
		if (btrfs_key_type(&key) > BTRFS_EXTENT_DATA_KEY) {
		if (btrfs_key_type(&key) > BTRFS_EXTENT_DATA_KEY ||
		    key.objectid != inode->i_ino) {
			goto out;
			goto out;
		}
		}
		if (recow) {
		if (recow) {