• Dongsheng Yang's avatar
    btrfs: qgroup: allow to remove qgroup which has parent but no child. · f5a6b1c5
    Dongsheng Yang authored
    When a qgroup has parents but no child, it should be removable in
    Theory I think. But currently, we can not remove it when it has
    either parent or child.
    
    Example:
    	# btrfs quota enable /mnt
    	# btrfs qgroup create 1/0 /mnt
    	# btrfs qgroup create 2/0 /mnt
    	# btrfs qgroup assign 1/0 2/0 /mnt
    	# btrfs qgroup show -pcre /mnt
    qgroupid rfer  excl  max_rfer max_excl parent  child
    -------- ----  ----  -------- -------- ------  -----
    0/5      16384 16384 0        0        ---     ---
    1/0      0     0     0        0        2/0     ---
    2/0      0     0     0        0        ---     1/0
    
    At this time, there is no subvol or qgroup depending on it.
    Just a qgroup 2/0 is its parent, but 2/0 can work well without
    1/0. So I think 1/0 should be removalbe. But:
    	# btrfs qgroup destroy 1/0 /mnt
    ERROR: unable to destroy quota group: Device or resource busy
    
    This patch remove the check of qgroup->parent in removing it,
    then we can remove a qgroup when it has a parent.
    Signed-off-by: default avatarDongsheng Yang <yangds.fnst@cn.fujitsu.com>
    Signed-off-by: default avatarChris Mason <clm@fb.com>
    f5a6b1c5
qgroup.c 71.8 KB