Re: [PATCH v2] xfs/106: rewrite this case for run it as auto test again

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



On Tue, May 17, 2016 at 12:41:50PM +0800, Zorro Lang wrote:
> xfs/106 try to do some basic xfs_quota functionality test. I think
> basic function test is important, especially there're only few
> cases about xfs_quota now. But due to it's too old, there're 3
> problems cause no one run it again:
>    1. Some quota commands can't be used, but this case try to use it.
>       e.g. "warn" command.
>    2. Some quota commands can be used now, but this case doesn't test
>       them, because they can't work previously. e.g. "disable, enable,
>       off and remove" comands
>    3. Some expected output in 106.out file become incorrect now.
> 
> I rewrite this case for above 3 reasons. This case nearly test all
> xfs_quota commands and options now, except:
>    1. some "-v" options
>    2. all "-a" options. I can't control the golden file if print all
>       filesystem's quota info in it.
>    3. default quota. I think it can be tested in another case.
>    4. project command options. I will write another case to test it.
>    5. report command -l option. It's a new option, will cause failure
>       if someone test on a release with xfsprogs-3.1.
>    6. quot command -c option. It maybe output different histogram in
>       different system or machine.
>    7. warn command. This feature is not currently implemented.
>    8. print, df, free, help, quit and path commands.
> 
> Signed-off-by: Zorro Lang <zlang@xxxxxxxxxx>
> ---

I'm not so familiar with xfs quota, so I just ran the test and review it
from a more general perspective.

The test works well on v5 xfs, but it fails when test on v4 xfs, e.g.

[root@dhcp-66-86-11 xfstests]# diff -u tests/xfs/106.out /root/workspace/xfstests/results//xfs_512/xfs/106.out.bad
--- tests/xfs/106.out   2016-05-23 15:07:41.439000000 +0800
+++ /root/workspace/xfstests/results//xfs_512/xfs/106.out.bad   2016-05-23 15:15:16.558000000 +0800
@@ -349,10 +349,12 @@
 Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/ Grace
 ---------- -------------------------------------------------- --------------------------------------------------
 fsgqa 1024 512 2048 00 [3 days] 15 10 20 00 [3 days]
+#ID 0 512 2048 00 [--------] 0 10 20 00 [--------]
...

Maybe the test needs more filters?

Also, it fails fsck on v4 xfs, but this is not xfs/106 specific, I saw
many other quota related tests failed the same way with v4 xfs. (I
reported this issue to xfs list along other issues back in Mar., see
http://oss.sgi.com/archives/xfs/2016-03/msg00063.html).

*** xfs_repair -n output ***
Phase 1 - find and verify superblock...
Phase 2 - using internal log
        - zero log...
        - scan filesystem freespace and inode maps...
        - found root inode chunk
Phase 3 - for each AG...
        - scan (but don't clear) agi unlinked lists...
        - process known inodes and perform inode discovery...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - process newly discovered inodes...
Phase 4 - check for duplicate blocks...
        - setting up duplicate extent list...
        - check for inodes claiming duplicate blocks...
        - agno = 0
        - agno = 2
        - agno = 1
        - agno = 3
No modify flag set, skipping phase 5
Phase 6 - check inode connectivity...
        - traversing filesystem ...
        - traversal finished ...
        - moving disconnected inodes to lost+found ...
disconnected inode 36, would move to lost+found
Phase 7 - verify link counts...
No modify flag set, skipping filesystem flush and exiting.
*** end xfs_repair output


And some minor (coding style) comments inline.

> 
> Hi,
> 
> V2 changed below:
[snip]
> diff --git a/tests/xfs/106 b/tests/xfs/106
> index 74658a6..f8593d0 100755
> --- a/tests/xfs/106
> +++ b/tests/xfs/106
> @@ -31,208 +31,289 @@ echo "QA output created by $seq"
>  here=`pwd`
>  tmp=/tmp/$$
>  status=1	# failure is the default!
> -trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
> +trap "_cleanup; exit \$status" 0 1 2 3 15
> +
> +_cleanup()
> +{
> +    cd /
> +    rm -f $tmp.*

Seems you use 4 spaces for indention, please use tab instead (8 spaces
width). Some old tests are using 4 spaces for indention, but we're in
the progress to convert all these tests to use tab (very slowly), mainly
by the chance of updating old tests like this :)

> +}
>  
>  # 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 xfs
> -_supported_os Linux #IRIX
> +_supported_os Linux
>  _require_scratch
>  _require_xfs_quota
> +_require_user
> +_require_group
>  
> -# real QA test starts here
> -_scratch_mkfs_xfs | _filter_mkfs 2>$tmp.mkfs
> -cat $tmp.mkfs >$seqres.full
> -. $tmp.mkfs
> +_scratch_mkfs_xfs >$seqres.full 2>&1
>  
> -# setup a default run
> -if [ -z "$MOUNT_OPTIONS" ]; then
> -	export MOUNT_OPTIONS="-o pquota,sync"
> -else
> -	export MOUNT_OPTIONS="$MOUNT_OPTIONS -o sync"
> -fi
> +uqid=`id -u fsgqa`
> +gqid=`id -g fsgqa`
> +pqid=10
> +cat >$tmp.projects <<EOF
> +$pqid:$SCRATCH_MNT
> +EOF
>  
> -_qmount
> -_require_prjquota $SCRATCH_DEV
> +cat >$tmp.projid <<EOF
> +root:0
> +fsgqa:$pqid
> +EOF
>  
> -# initial populate
> -target=$SCRATCH_MNT/target
> -$FSSTRESS_PROG -z -s 57069 -m 8 -n 1000 -p 4 \
> --f allocsp=1 \
> --f chown=3 \
> --f creat=4 \
> --f dwrite=4 \
> --f fallocate=1 \
> --f fdatasync=1 \
> --f fiemap=1 \
> --f freesp=1 \
> --f fsync=1 \
> --f link=1 \
> --f mkdir=2 \
> --f mknod=2 \
> --f punch=1 \
> --f rename=2 \
> --f resvsp=1 \
> --f rmdir=1 \
> --f setxattr=1 \
> --f symlink=2 \
> --f sync=1 \
> --f truncate=2 \
> --f unlink=1 \
> --f unresvsp=1 \
> --f write=4 \
> --d $target
> -
> -$FSSTRESS_PROG -z -s 57069 -m 8 -n 1000 -p 4 \
> --f chown=500 \
> --f setxattr=500 \
> --d $target
> -
> -# also use space, to be able to go over/under limits easily
> -uid=255
> -gid=254
> -prid=253
> -rm -f $SCRATCH_MNT/resv
> -$XFS_IO_PROG -fc "resvsp 0 200m" -c "chproj $prid" $SCRATCH_MNT/resv
> -chown $uid $SCRATCH_MNT/resv
> -chgrp $gid $SCRATCH_MNT/resv
> +create_files()
> +{
> +    local bs=$1
> +    local inum=$2
>  
> -_qmount
> +    echo "Using type=$type id=$id" >> $seqres.full
> +
> +    for ((i=0; i<$((inum-1)); i++))
> +    do
> +	_file_as_id $SCRATCH_MNT/inode$i $id $type 1024 0
> +    done

Please use this for format

	for ...; do
		...
	done

Thanks,
Eryu
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux