• Boris Burkov's avatar
    btrfs: qgroup: simple quota auto hierarchy for nested subvolumes · 5343cd93
    Boris Burkov authored
    Consider the following sequence:
    
    - enable quotas
    - create subvol S id 256 at dir outer/
    - create a qgroup 1/100
    - add 0/256 (S's auto qgroup) to 1/100
    - create subvol T id 257 at dir outer/inner/
    
    With full qgroups, there is no relationship between 0/257 and either of
    0/256 or 1/100. There is an inherit feature that the creator of inner/
    can use to specify it ought to be in 1/100.
    
    Simple quotas are targeted at container isolation, where such automatic
    inheritance for not necessarily trusted/controlled nested subvol
    creation would be quite helpful. Therefore, add a new default behavior
    for simple quotas: when you create a nested subvol, automatically
    inherit as parents any parents of the qgroup of the subvol the new inode
    is going in.
    
    In our example, 257/0 would also be under 1/100, allowing easy control
    of a total quota over an arbitrary hierarchy of subvolumes.
    
    I think this _might_ be a generally useful behavior, so it could be
    interesting to put it behind a new inheritance flag that simple quotas
    always use while traditional quotas let the user specify, but this is a
    minimally intrusive change to start.
    Signed-off-by: default avatarBoris Burkov <boris@bur.io>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    5343cd93
qgroup.c 123 KB