diff mbox series

[v4,2/6] btrfs: quota mode helpers

Message ID fd723f002c3019b79c515d3408f951f0897f414f.1695942727.git.boris@bur.io (mailing list archive)
State New, archived
Headers show
Series btrfs: simple quotas fstests | expand

Commit Message

Boris Burkov Sept. 28, 2023, 11:16 p.m. UTC
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>
---
 common/btrfs | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

Comments

Anand Jain Sept. 29, 2023, 8:57 a.m. UTC | #1
On 29/09/2023 07:16, Boris Burkov wrote:
> 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>


Nits Applied locally.

> +_require_scratch_qgroup()
> +{
> +	_scratch_mkfs >>$seqres.full 2>&1
> +	_scratch_mount
> +	_run_btrfs_util_prog quota enable $SCRATCH_MNT

Some time ago, we stopped using _run_btrfs_util_prog() in favor of
$BTRFS_UTIL_PROG. The idea is that any errors are printed to stdout,
which is good. However, $BTRFS_UTIL_PROG has a drawback: it doesn't
print the command used, as run_check() does.



> +	_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
> +}

Fixed lines above 80 chars long.

Thanks, Anand
Anand Jain Sept. 29, 2023, 9:11 a.m. UTC | #2
On 29/09/2023 16:57, Anand Jain wrote:
> On 29/09/2023 07:16, Boris Burkov wrote:
>> 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>
> 
> 
> Nits Applied locally.
> 
>> +_require_scratch_qgroup()
>> +{
>> +    _scratch_mkfs >>$seqres.full 2>&1
>> +    _scratch_mount
>> +    _run_btrfs_util_prog quota enable $SCRATCH_MNT
> 
> Some time ago, we stopped using _run_btrfs_util_prog() in favor of > $BTRFS_UTIL_PROG. The idea is that any errors are printed to stdout,
> which is good. However, $BTRFS_UTIL_PROG has a drawback: it doesn't
> print the command used, as run_check() does.

I'm correcting myself: We still use _run_btrfs_util_prog() in less
critical scenarios for quick status checks.

Thx, Anand

> 
> 
> 
>> +    _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
>> +}
> 
> Fixed lines above 80 chars long.
> 
> Thanks, Anand
diff mbox series

Patch

diff --git a/common/btrfs b/common/btrfs
index c9903a413..8d51bd522 100644
--- a/common/btrfs
+++ b/common/btrfs
@@ -689,3 +689,41 @@  _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
+	_run_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
+}