diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 184bde1cfc3d3871a38c385984f1f9bb6c68f1bd..bfa4149c053dcaa101018cd93386ddb47db1d128 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -507,11 +507,12 @@ int btrfs_drop_extents(struct btrfs_trans_handle *trans, slot = path->slots[0]; ret = 0; btrfs_item_key_to_cpu(leaf, &key, slot); - - if (key.offset >= end || key.objectid != inode->i_ino) { + if (btrfs_key_type(&key) == BTRFS_EXTENT_DATA_KEY && + key.offset >= end) { 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; } if (recow) {