• Qu Wenruo's avatar
    btrfs: qgroup: do not check qgroup inherit if qgroup is disabled · b5357cb2
    Qu Wenruo authored
    [BUG]
    After kernel commit 86211eea ("btrfs: qgroup: validate
    btrfs_qgroup_inherit parameter"), user space tool snapper will fail to
    create snapshot using its timeline feature.
    
    [CAUSE]
    It turns out that, if using timeline snapper would unconditionally pass
    btrfs_qgroup_inherit parameter (assigning the new snapshot to qgroup 1/0)
    for snapshot creation.
    
    In that case, since qgroup is disabled there would be no qgroup 1/0, and
    btrfs_qgroup_check_inherit() would return -ENOENT and fail the whole
    snapshot creation.
    
    [FIX]
    Just skip the check if qgroup is not enabled.
    This is to keep the older behavior for user space tools, as if the
    kernel behavior changed for user space, it is a regression of kernel.
    
    Thankfully snapper is also fixing the behavior by detecting if qgroup is
    running in the first place, so the effect should not be that huge.
    
    Link: https://github.com/openSUSE/snapper/issues/894
    Fixes: 86211eea ("btrfs: qgroup: validate btrfs_qgroup_inherit parameter")
    CC: stable@vger.kernel.org # 6.8+
    Reviewed-by: default avatarFilipe Manana <fdmanana@suse.com>
    Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    b5357cb2
qgroup.c 128 KB