diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 646152f30584..a202f2f12b1c 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -3016,8 +3016,11 @@ reserve_space: goto out; ret = btrfs_qgroup_reserve_data(inode, &data_reserved, alloc_start, bytes_to_reserve); - if (ret) + if (ret) { + unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart, + lockend, &cached_state); goto out; + } ret = btrfs_prealloc_file_range(inode, mode, alloc_start, alloc_end - alloc_start, i_blocksize(inode),