mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-08 14:13:53 +00:00
Btrfs: qgroup: free reserved in exceeding quota.
When we exceed quota limit in writing, we will free some reserved extent when we need to drop but not free account in qgroup. It means, each time we exceed quota in writing, there will be some remain space in qg->reserved we can not use any more. If things go on like this, the all space will be ate up. Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com> Reviewed-by: Josef Bacik <jbacik@fb.com> Signed-off-by: Chris Mason <clm@fb.com>
This commit is contained in:
parent
4087cf24ae
commit
804ca127fb
@ -5475,8 +5475,11 @@ int btrfs_delalloc_reserve_metadata(struct inode *inode, u64 num_bytes)
|
||||
to_free = 0;
|
||||
}
|
||||
spin_unlock(&BTRFS_I(inode)->lock);
|
||||
if (dropped)
|
||||
if (dropped) {
|
||||
if (root->fs_info->quota_enabled)
|
||||
btrfs_qgroup_free(root, dropped * root->nodesize);
|
||||
to_free += btrfs_calc_trans_metadata_size(root, dropped);
|
||||
}
|
||||
|
||||
if (to_free) {
|
||||
btrfs_block_rsv_release(root, block_rsv, to_free);
|
||||
|
Loading…
Reference in New Issue
Block a user