• Qu Wenruo's avatar
    btrfs: introduce BTRFS_QGROUP_RUNTIME_FLAG_CANCEL_RESCAN · e562a8bd
    Qu Wenruo authored
    Introduce a new runtime flag, BTRFS_QGROUP_RUNTIME_FLAG_CANCEL_RESCAN,
    which will inform qgroup rescan to cancel its work asynchronously.
    
    This is to address the window when an operation makes qgroup numbers
    inconsistent (like qgroup inheriting) while a qgroup rescan is running.
    
    In that case, qgroup inconsistent flag will be cleared when qgroup
    rescan finishes.
    But we changed the ownership of some extents, which means the rescan is
    already meaningless, and the qgroup inconsistent flag should not be
    cleared.
    
    With the new flag, each time we set INCONSISTENT flag, we also set this
    new flag to inform any running qgroup rescan to exit immediately, and
    leaving the INCONSISTENT flag there.
    
    The new runtime flag can only be cleared when a new rescan is started.
    Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    e562a8bd
qgroup.h 14.3 KB