]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
btrfs: quota mode helpers
authorBoris Burkov <boris@bur.io>
Thu, 28 Sep 2023 23:16:44 +0000 (16:16 -0700)
committerZorro Lang <zlang@kernel.org>
Thu, 5 Oct 2023 14:32:01 +0000 (22:32 +0800)
To facilitate skipping tests depending on the qgroup mode after mkfs,
add support for figuring out the mode. This cannot just rely on the new
sysfs file, since it might not be present on older kernels.

Signed-off-by: Boris Burkov <boris@bur.io>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
common/btrfs

index 62cee209fd1f0877bc30b7d8f4565ce822f183c8..3884d9904b2125a94bd19b9362c73f18588eaf98 100644 (file)
@@ -689,3 +689,44 @@ _require_btrfs_scratch_logical_resolve_v2()
        fi
        _scratch_unmount
 }
+
+_qgroup_mode()
+{
+       local dev=$1
+
+       if [ ! -b "$dev" ]; then
+               _fail "Usage: _qgroup_mode <mounted_device>"
+       fi
+
+       if _has_fs_sysfs_attr $dev /qgroups/mode; then
+               _get_fs_sysfs_attr $dev qgroups/mode
+       else
+               echo "disabled"
+       fi
+}
+
+_check_regular_qgroup()
+{
+       _qgroup_mode "$@" | grep -q 'qgroup'
+}
+
+_require_scratch_qgroup()
+{
+       _scratch_mkfs >>$seqres.full 2>&1
+       _scratch_mount
+       $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT
+       _check_regular_qgroup $SCRATCH_DEV || \
+                                       _notrun "not running normal qgroups"
+       _scratch_unmount
+}
+
+_require_scratch_enable_simple_quota()
+{
+       _scratch_mkfs >>$seqres.full 2>&1
+       _scratch_mount
+       _qgroup_mode $SCRATCH_DEV | grep 'squota' && \
+                       _notrun "cannot enable simple quota; on by default"
+       $BTRFS_UTIL_PROG quota enable --simple $SCRATCH_MNT || \
+                                       _notrun "simple quotas not available"
+       _scratch_unmount
+}