summaryrefslogtreecommitdiffstats
path: root/fs/quota
diff options
context:
space:
mode:
authorMark Fasheh <mfasheh@suse.de>2014-07-17 12:39:01 -0700
committerChris Mason <clm@fb.com>2014-08-15 07:43:14 -0700
commit1152651a081720ef6a8c76bb7da676e8c900ac30 (patch)
treea7d5b02f161a7c4f9cdab947a68569475a93146c /fs/quota
parent6f7ff6d7832c6be13e8c95598884dbc40ad69fb7 (diff)
downloadlinux-stable-1152651a081720ef6a8c76bb7da676e8c900ac30.tar.gz
linux-stable-1152651a081720ef6a8c76bb7da676e8c900ac30.tar.bz2
linux-stable-1152651a081720ef6a8c76bb7da676e8c900ac30.zip
btrfs: qgroup: account shared subtrees during snapshot delete
During its tree walk, btrfs_drop_snapshot() will skip any shared subtrees it encounters. This is incorrect when we have qgroups turned on as those subtrees need to have their contents accounted. In particular, the case we're concerned with is when removing our snapshot root leaves the subtree with only one root reference. In those cases we need to find the last remaining root and add each extent in the subtree to the corresponding qgroup exclusive counts. This patch implements the shared subtree walk and a new qgroup operation, BTRFS_QGROUP_OPER_SUB_SUBTREE. When an operation of this type is encountered during qgroup accounting, we search for any root references to that extent and in the case that we find only one reference left, we go ahead and do the math on it's exclusive counts. Signed-off-by: Mark Fasheh <mfasheh@suse.de> Reviewed-by: Josef Bacik <jbacik@fb.com> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/quota')
0 files changed, 0 insertions, 0 deletions