• Boris Burkov's avatar
    btrfs: qgroup: check generation when recording simple quota delta · bd7c1ea3
    Boris Burkov authored
    Simple quotas count extents only from the moment the feature is enabled.
    Therefore, if we do something like:
    
    1. create subvol S
    2. write F in S
    3. enable quotas
    4. remove F
    5. write G in S
    
    then after 3. and 4. we would expect the simple quota usage of S to be 0
    (putting aside some metadata extents that might be written) and after
    5., it should be the size of G plus metadata. Therefore, we need to be
    able to determine whether a particular quota delta we are processing
    predates simple quota enablement.
    
    To do this, store the transaction id when quotas were enabled. In
    fs_info for immediate use and in the quota status item to make it
    recoverable on mount. When we see a delta, check if the generation of
    the extent item is less than that of quota enablement. If so, we should
    ignore the delta from this extent.
    Signed-off-by: default avatarBoris Burkov <boris@bur.io>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    bd7c1ea3
qgroup.h 13.8 KB