public inbox for fstests@vger.kernel.org
 help / color / mirror / Atom feed
From: Eryu Guan <eguan@redhat.com>
To: Zorro Lang <zlang@redhat.com>
Cc: fstests@vger.kernel.org, sandeen@redhat.com
Subject: Re: [PATCH v2] xfs/106: rewrite this case for run it as auto test again
Date: Mon, 23 May 2016 15:46:54 +0800	[thread overview]
Message-ID: <20160523074654.GF5140@eguan.usersys.redhat.com> (raw)
In-Reply-To: <1463460110-15297-1-git-send-email-zlang@redhat.com>

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@redhat.com>
> ---

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

  reply	other threads:[~2016-05-23  7:46 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-17  4:41 [PATCH v2] xfs/106: rewrite this case for run it as auto test again Zorro Lang
2016-05-23  7:46 ` Eryu Guan [this message]
2016-05-23  9:10   ` Zirong Lang
2016-05-24  8:37   ` Zorro Lang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160523074654.GF5140@eguan.usersys.redhat.com \
    --to=eguan@redhat.com \
    --cc=fstests@vger.kernel.org \
    --cc=sandeen@redhat.com \
    --cc=zlang@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox