Skip to content

Commit

Permalink
Btrfs: qgroup: free reserved in exceeding quota.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Dongsheng Yang authored and Chris Mason committed Apr 13, 2015
1 parent 4087cf2 commit 804ca12
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion fs/btrfs/extent-tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 804ca12

Please sign in to comment.