generic: per-type quota timers set/get test

Set different grace time, make sure each of quota (user, group and
project) timers can be set (by setquota) and get (by repquota)
correctly.

Signed-off-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
This commit is contained in:
Zorro Lang
2020-03-29 13:18:01 +08:00
committed by Eryu Guan
parent b2d552fbca
commit 5b70d62ccc
3 changed files with 159 additions and 0 deletions
+108
View File
@@ -0,0 +1,108 @@
#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2020 Red Hat, Inc. All Rights Reserved.
#
# FS QA Test No. 594
#
# Test per-type(user, group and project) filesystem quota timers, make sure
# each of grace time can be set/get properly.
#
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_cleanup()
{
cd /
rm -f $tmp.*
}
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
. ./common/quota
# remove previous $seqres.full before test
rm -f $seqres.full
# real QA test starts here
_supported_fs generic
_supported_os Linux
_require_scratch
# V4 XFS doesn't support to mount project and group quota together
if [ "$FSTYP" = "xfs" ];then
_require_scratch_xfs_crc
fi
_require_quota
_scratch_mkfs >$seqres.full 2>&1
_scratch_enable_pquota
_qmount_option "usrquota,grpquota,prjquota"
_qmount
_require_prjquota $SCRATCH_DEV
MIN=60
# get default time at first
def_time=`repquota -u $SCRATCH_MNT | \
sed -n -e "/^Block/s/.* time: \(.*\); .* time: \(.*\)/\1 \2/p"`
echo "Default block and inode grace timers are: $def_time" >> $seqres.full
filter_repquota()
{
local blocktime=$1
local inodetime=$2
_filter_scratch | sed -e "s,$blocktime,DEF_TIME,g" \
-e "s,$inodetime,DEF_TIME,g"
}
echo "1. set project quota timer"
setquota -t -P $((10 * MIN)) $((20 * MIN)) $SCRATCH_MNT
repquota -ugP $SCRATCH_MNT | grep "Report\|^Block" | filter_repquota $def_time
echo
echo "2. set group quota timer"
setquota -t -g $((30 * MIN)) $((40 * MIN)) $SCRATCH_MNT
repquota -ugP $SCRATCH_MNT | grep "Report\|^Block" | filter_repquota $def_time
echo
echo "3. set user quota timer"
setquota -t -u $((50 * MIN)) $((60 * MIN)) $SCRATCH_MNT
repquota -ugP $SCRATCH_MNT | grep "Report\|^Block" | filter_repquota $def_time
echo
# cycle mount, make sure the quota timers are still right
echo "4. cycle mount test-1"
_qmount
repquota -ugP $SCRATCH_MNT | grep "Report\|^Block" | filter_repquota $def_time
echo
# Run repair to force quota check
echo "5. fsck to force quota check"
_scratch_unmount
_repair_scratch_fs >> $seqres.full 2>&1
echo
# Remount (this time to run quotacheck) and check the limits. There's a bug
# in quotacheck where we would reset the ondisk default grace period to zero
# while the incore copy stays at whatever was read in prior to quotacheck.
# This will show up after the /next/ remount.
echo "6. cycle mount test-2"
_qmount
repquota -ugP $SCRATCH_MNT | grep "Report\|^Block" | filter_repquota $def_time
echo
# Remount and check the limits
echo "7. cycle mount test-3"
_qmount
repquota -ugP $SCRATCH_MNT | grep "Report\|^Block" | filter_repquota $def_time
# success, all done
status=0
exit
+50
View File
@@ -0,0 +1,50 @@
QA output created by 594
1. set project quota timer
*** Report for user quotas on device SCRATCH_DEV
Block grace time: DEF_TIME; Inode grace time: DEF_TIME
*** Report for group quotas on device SCRATCH_DEV
Block grace time: DEF_TIME; Inode grace time: DEF_TIME
*** Report for project quotas on device SCRATCH_DEV
Block grace time: 00:10; Inode grace time: 00:20
2. set group quota timer
*** Report for user quotas on device SCRATCH_DEV
Block grace time: DEF_TIME; Inode grace time: DEF_TIME
*** Report for group quotas on device SCRATCH_DEV
Block grace time: 00:30; Inode grace time: 00:40
*** Report for project quotas on device SCRATCH_DEV
Block grace time: 00:10; Inode grace time: 00:20
3. set user quota timer
*** Report for user quotas on device SCRATCH_DEV
Block grace time: 00:50; Inode grace time: 01:00
*** Report for group quotas on device SCRATCH_DEV
Block grace time: 00:30; Inode grace time: 00:40
*** Report for project quotas on device SCRATCH_DEV
Block grace time: 00:10; Inode grace time: 00:20
4. cycle mount test-1
*** Report for user quotas on device SCRATCH_DEV
Block grace time: 00:50; Inode grace time: 01:00
*** Report for group quotas on device SCRATCH_DEV
Block grace time: 00:30; Inode grace time: 00:40
*** Report for project quotas on device SCRATCH_DEV
Block grace time: 00:10; Inode grace time: 00:20
5. fsck to force quota check
6. cycle mount test-2
*** Report for user quotas on device SCRATCH_DEV
Block grace time: 00:50; Inode grace time: 01:00
*** Report for group quotas on device SCRATCH_DEV
Block grace time: 00:30; Inode grace time: 00:40
*** Report for project quotas on device SCRATCH_DEV
Block grace time: 00:10; Inode grace time: 00:20
7. cycle mount test-3
*** Report for user quotas on device SCRATCH_DEV
Block grace time: 00:50; Inode grace time: 01:00
*** Report for group quotas on device SCRATCH_DEV
Block grace time: 00:30; Inode grace time: 00:40
*** Report for project quotas on device SCRATCH_DEV
Block grace time: 00:10; Inode grace time: 00:20
+1
View File
@@ -595,3 +595,4 @@
591 auto quick rw pipe splice 591 auto quick rw pipe splice
592 auto quick encrypt 592 auto quick encrypt
593 auto quick encrypt 593 auto quick encrypt
594 auto quick quota