diff options
author | Josef Bacik <jbacik@fb.com> | 2016-09-15 14:57:48 -0400 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2016-09-21 20:22:16 -0400 |
commit | 1e5ec2e709bd8c5588fdbdda909945e4e2be8d23 (patch) | |
tree | 0c5437b1e903466b9cb5aa60e6ac11d73785ecb2 | |
parent | b7f3c7d345f72240055efcdf4111fb2e0d01be99 (diff) |
Btrfs: handle quota reserve failure properly
btrfs/022 was spitting a warning for the case that we exceed the quota. If we
fail to make our quota reservation we need to clean up our data space
reservation. Thanks,
Signed-off-by: Josef Bacik <jbacik@fb.com>
Tested-by: Jeff Mahoney <jeffm@suse.com>
Signed-off-by: Chris Mason <clm@fb.com>
-rw-r--r-- | fs/btrfs/extent-tree.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index d09cf7aa083b..db76cc18c562 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -4271,13 +4271,10 @@ int btrfs_check_data_free_space(struct inode *inode, u64 start, u64 len) | |||
4271 | if (ret < 0) | 4271 | if (ret < 0) |
4272 | return ret; | 4272 | return ret; |
4273 | 4273 | ||
4274 | /* | 4274 | /* Use new btrfs_qgroup_reserve_data to reserve precious data space. */ |
4275 | * Use new btrfs_qgroup_reserve_data to reserve precious data space | ||
4276 | * | ||
4277 | * TODO: Find a good method to avoid reserve data space for NOCOW | ||
4278 | * range, but don't impact performance on quota disable case. | ||
4279 | */ | ||
4280 | ret = btrfs_qgroup_reserve_data(inode, start, len); | 4275 | ret = btrfs_qgroup_reserve_data(inode, start, len); |
4276 | if (ret) | ||
4277 | btrfs_free_reserved_data_space_noquota(inode, start, len); | ||
4281 | return ret; | 4278 | return ret; |
4282 | } | 4279 | } |
4283 | 4280 | ||