• Qu Wenruo's avatar
    btrfs: quota: Automatically update related qgroups or mark INCONSISTENT flags... · 9c8b35b1
    Qu Wenruo authored
    btrfs: quota: Automatically update related qgroups or mark INCONSISTENT flags when assigning/deleting a qgroup relations.
    
    Operation like qgroups assigning/deleting qgroup relations will mostly
    cause qgroup data inconsistent, since it needs to do the full rescan to
    determine whether shared extents are exclusive or still shared in
    parent qgroups.
    
    But there are some exceptions, like qgroup with only exclusive extents
    (qgroup->excl == qgroup->rfer), in that case, we only needs to
    modify all its parents' excl and rfer.
    
    So this patch adds a quick path for such qgroup in qgroup
    assign/remove routine, and if quick path failed, the qgroup status will
    be marked INCONSISTENT, and return 1 to info user-land.
    
    BTW since the quick path is much the same of qgroup_excl_accounting(),
    so move the core of it to __qgroup_excl_accounting() and reuse it.
    Signed-off-by: default avatarQu Wenruo <quwenruo@cn.fujitsu.com>
    Signed-off-by: default avatarDongsheng Yang <yangds.fnst@cn.fujitsu.com>
    Reviewed-by: default avatarJosef Bacik <jbacik@fb.com>
    Signed-off-by: default avatarChris Mason <clm@fb.com>
    9c8b35b1
qgroup.c 74 KB