* [PATCH] xfstests: enable many tests to run on ext2/3/4
@ 2009-05-21 20:15 Eric Sandeen
2009-05-24 14:39 ` Christoph Hellwig
2009-05-25 15:31 ` Eric Sandeen
0 siblings, 2 replies; 4+ messages in thread
From: Eric Sandeen @ 2009-05-21 20:15 UTC (permalink / raw)
To: xfs mailing list, ext4 development
This gets many of the tests running on ext4 (and should on ext2/ext3
as well).
A few things could still be cleaned up; rather than -xfs, -ext3, -ext4
etc it'd be better to do --fstype xfs or whatnot, and lose as much of
the special-casing as possible. But this gets it going, so maybe
worth merging now as a first step.
This creates a new supported_fs "generic" type which should run on
any generic filesystem (well, assuming it supports acls & xattrs, along
with general posix-ness).
It also adds a "generic" group, so you can do:
./check -ext4 -g generic
and that way it'll avoid any fs-specific tests. They wouldn't
fail anyway, but it gets noisy to see all the "notrun" tests.
Long term there's probably a better way to do this; maybe just
skip all output when there's a fs type mismatch, not sure.
Right now fs compat info is in the test itself, so putting "generic"
into the group file might kind of be a sort of layering violation,
whaddya think? (OTOH "udf" was there already; maybe non-generic
tests -should- have fs types in the group file and then you could do:
./check -ext4 -g generic -g ext4
or that last part could be automatic...)
There are a few more tests which could almost work for ext4
with a bit more work:
020 runs into different attribute limits I think
051 ditto but for acls
075 uses the -x preallocation call for xfs
062 gets a different recursive walk of files
164 uses xfs_io to do file mapping
192 is doing something odd I haven't sorted out yet
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---
001 | 2 +-
002 | 2 +-
005 | 2 +-
006 | 2 +-
007 | 2 +-
010 | 2 +-
011 | 2 +-
013 | 2 +-
014 | 2 +-
069 | 4 ++--
070 | 2 +-
074 | 2 +-
076 | 2 +-
093 | 2 +-
097 | 2 +-
099 | 2 +-
100 | 2 +-
105 | 2 +-
123 | 2 +-
124 | 2 +-
125 | 2 +-
128 | 2 +-
131 | 2 +-
184 | 2 +-
193 | 2 +-
common | 18 ++++++++++++++++++
common.rc | 17 +++++++++++++----
group | 50 +++++++++++++++++++++++++-------------------------
new | 2 +-
29 files changed, 83 insertions(+), 56 deletions(-)
diff --git a/001 b/001
index 2ff2c05..2dddffb 100755
--- a/001
+++ b/001
@@ -33,7 +33,7 @@ done_cleanup=false
trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os IRIX Linux
verbose=true
diff --git a/002 b/002
index 13c6be3..c2d2b5a 100755
--- a/002
+++ b/002
@@ -30,7 +30,7 @@ _cleanup()
}
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os IRIX Linux
_setup_testdir
diff --git a/005 b/005
index d21dcb5..644f63d 100755
--- a/005
+++ b/005
@@ -53,7 +53,7 @@ _touch()
. ./common.filter
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
# IRIX UDF does not support symlinks
if [ $FSTYP == 'udf' ]; then
diff --git a/006 b/006
index 4da277f..49b5949 100755
--- a/006
+++ b/006
@@ -40,7 +40,7 @@ _count()
. ./common.filter
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os IRIX Linux
_setup_testdir
diff --git a/007 b/007
index 290f716..7a97d71 100755
--- a/007
+++ b/007
@@ -34,7 +34,7 @@ _cleanup()
. ./common.filter
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os IRIX Linux
_setup_testdir
diff --git a/010 b/010
index c51ecb2..f1bc885 100755
--- a/010
+++ b/010
@@ -42,7 +42,7 @@ _filter_dbtest()
[ -x $here/src/dbtest ] || _notrun "dbtest was not built for this platform"
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os IRIX Linux
_setup_testdir
diff --git a/011 b/011
index 655229b..e1a3d7d 100755
--- a/011
+++ b/011
@@ -32,7 +32,7 @@ _cleanup()
. ./common.filter
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os IRIX Linux
_setup_testdir
diff --git a/013 b/013
index 1c99e8f..e417d5a 100755
--- a/013
+++ b/013
@@ -78,7 +78,7 @@ _do_test()
# real QA test starts here
-_supported_fs xfs udf
+_supported_fs generic
_supported_os IRIX Linux
_setup_testdir
diff --git a/014 b/014
index acc3696..f5b64d0 100755
--- a/014
+++ b/014
@@ -30,7 +30,7 @@ _cleanup()
. ./common.rc
. ./common.filter
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os IRIX Linux
_setup_testdir
diff --git a/069 b/069
index 11efd98..8da6a68 100755
--- a/069
+++ b/069
@@ -23,7 +23,7 @@ trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
. ./common.filter
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os IRIX Linux
_require_scratch
@@ -32,7 +32,7 @@ rm -f $seq.full
umount $SCRATCH_DEV >/dev/null 2>&1
echo "*** mkfs"
-_scratch_mkfs >/dev/null || _fail "mkfs failed"
+_scratch_mkfs &>/dev/null || _fail "mkfs failed"
echo "*** mount FS"
_scratch_mount >/dev/null || _fail "mount failed"
diff --git a/070 b/070
index 65e158a..9302500 100755
--- a/070
+++ b/070
@@ -30,7 +30,7 @@ _cleanup()
. ./common.filter
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os IRIX Linux
_setup_testdir
diff --git a/074 b/074
index d5e0364..0bd0807 100755
--- a/074
+++ b/074
@@ -97,7 +97,7 @@ _process_args()
# real QA test starts here
rm -f $here/$seq.full
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os IRIX Linux
#
diff --git a/076 b/076
index 975de2e..c0f6675 100755
--- a/076
+++ b/076
@@ -39,7 +39,7 @@ trap "_cleanup; rm -f $tmp.*; exit \$status" 0 1 2 3 15
. ./common.filter
# real QA test starts here
-_supported_fs xfs udf
+_supported_fs generic
_supported_os IRIX Linux
_require_scratch
diff --git a/093 b/093
index c1243e2..1139788 100755
--- a/093
+++ b/093
@@ -43,7 +43,7 @@ _filefilter()
}
# real QA test starts here
-_supported_fs xfs udf
+_supported_fs generic
_supported_os IRIX
[ -x $runas ] || _notrun "$runas executable not found"
diff --git a/097 b/097
index b7fe1f2..9c38d18 100755
--- a/097
+++ b/097
@@ -58,7 +58,7 @@ else
fi
# real QA test starts here
-_supported_fs udf xfs
+_supported_fs generic
_supported_os IRIX
_require_scratch
diff --git a/099 b/099
index 1c5daeb..6b824dd 100755
--- a/099
+++ b/099
@@ -62,7 +62,7 @@ rm -f $seq.full
#-------------------------------------------------------
# real QA test starts here
-_supported_fs xfs udf
+_supported_fs generic
_supported_os IRIX
_acl_setup_ids
diff --git a/100 b/100
index aa6c4ca..57e9bb6 100755
--- a/100
+++ b/100
@@ -29,7 +29,7 @@ _cleanup()
}
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os IRIX Linux
# Use _populate_fs() in common.rc to create a directory structure.
diff --git a/105 b/105
index cd201dd..f154422 100755
--- a/105
+++ b/105
@@ -32,7 +32,7 @@ _cleanup()
. ./common.attr
# Modify as appropriate.
-_supported_fs xfs udf
+_supported_fs generic
_supported_os IRIX Linux
# real QA test starts here
diff --git a/123 b/123
index 63cd48f..ba7c454 100755
--- a/123
+++ b/123
@@ -57,7 +57,7 @@ _user_do()
. ./common.filter
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os Linux IRIX
_require_user
diff --git a/124 b/124
index 29af340..5adef48 100755
--- a/124
+++ b/124
@@ -33,7 +33,7 @@ _cleanup()
. ./common.filter
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os Linux
_setup_testdir
diff --git a/125 b/125
index ff538ef..f432034 100755
--- a/125
+++ b/125
@@ -28,7 +28,7 @@ _cleanup()
. ./common.filter
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os Linux
_require_user
diff --git a/128 b/128
index 24bdac7..227d05c 100755
--- a/128
+++ b/128
@@ -30,7 +30,7 @@ _cleanup()
. ./common.filter
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os Linux
_setup_testdir
diff --git a/131 b/131
index 78627f5..67adb81 100755
--- a/131
+++ b/131
@@ -28,7 +28,7 @@ _cleanup()
. ./common.filter
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os Linux
_setup_testdir
diff --git a/184 b/184
index 30839cb..408e645 100755
--- a/184
+++ b/184
@@ -30,7 +30,7 @@ _cleanup()
. ./common.filter
# real QA test starts here
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os IRIX Linux
_setup_testdir
diff --git a/193 b/193
index 54c51a2..743c70f 100755
--- a/193
+++ b/193
@@ -50,7 +50,7 @@ _cleanup_files()
. ./common.filter
# real QA test starts here
-_supported_fs xfs nfs udf
+_supported_fs generic
_supported_os Linux
_require_user
diff --git a/common b/common
index 92ec9e2..ea31375 100644
--- a/common
+++ b/common
@@ -105,6 +105,9 @@ check options
-xfs test XFS (default)
-udf test UDF
-nfs test NFS
+ -ext2 test ext2
+ -ext3 test ext3
+ -ext4 test ext4
-l line mode diff
-xdiff graphical mode diff
-udiff show unified diff (default)
@@ -132,6 +135,21 @@ testlist options
xpand=false
;;
+ -ext2) # -ext2 ... set FSTYP to ext2
+ FSTYP=ext2
+ xpand=false
+ ;;
+
+ -ext3) # -ext3 ... set FSTYP to ext3
+ FSTYP=ext3
+ xpand=false
+ ;;
+
+ -ext4) # -ext4 ... set FSTYP to ext4
+ FSTYP=ext4
+ xpand=false
+ ;;
+
-nfs) # -nfs ... set FSTYP to nfs
FSTYP=nfs
xpand=false
diff --git a/common.rc b/common.rc
index 317e009..06304c8 100644
--- a/common.rc
+++ b/common.rc
@@ -49,6 +49,10 @@ _mount_opts()
nfs)
export MOUNT_OPTIONS=$NFS_MOUNT_OPTIONS
;;
+ ext2|ext3|ext4)
+ # acls & xattrs aren't turned on by default on ext$FOO
+ export MOUNT_OPTIONS="-o acl,user_xattr $EXT_MOUNT_OPTIONS"
+ ;;
*)
;;
esac
@@ -546,7 +550,7 @@ _supported_fs()
{
for f
do
- if [ "$f" = "$FSTYP" ]
+ if [ "$f" = "$FSTYP" -o "$f" = "generic" ]
then
return
fi
@@ -585,7 +589,7 @@ _require_scratch()
_notrun "this test requires a valid \$SCRATCH_DEV"
fi
;;
- nfs*|ext2|ext3|reiserfs)
+ nfs*|ext2|ext3|ext4|reiserfs)
echo $SCRATCH_DEV | grep -q ":" > /dev/null 2>&1
if [ ! -z "$SCRATCH_DEV" -a ! -b "$SCRATCH_DEV" -a "$?" != "0" ]
then
@@ -988,6 +992,10 @@ _check_testdir()
esac
}
+_setup_generic_testdir()
+{
+ testdir=$TEST_DIR
+}
_setup_xfs_testdir()
{
@@ -1067,7 +1075,7 @@ _setup_testdir()
_setup_nfs_scratchdir
;;
*)
- _fail "\$FSTYP is not xfs, udf or nfs"
+ _setup_generic_testdir
;;
esac
}
@@ -1088,7 +1096,8 @@ _cleanup_testdir()
[ -n "$testdir" ] && $UMOUNT_PROG $testdir
;;
*)
- _fail "\$FSTYP is not xfs, udf or nfs"
+ # do nothing, testdir is $TEST_DIR
+ :
;;
esac
}
diff --git a/group b/group
index 0ac33c2..6ce06b5 100644
--- a/group
+++ b/group
@@ -103,20 +103,20 @@ atime
# test-group association ... one line per test
#
-001 rw dir udf auto quick
-002 metadata udf auto quick
+001 generic rw dir auto quick
+002 generic metadata auto quick
003 db auto quick
004 db auto quick
-005 dir udf auto quick
-006 dir udf auto quick
-007 dir udf auto quick
+005 generic dir auto quick
+006 generic dir auto quick
+007 generic dir auto quick
008 rw ioctl auto quick
009 rw ioctl auto quick
-010 other udf auto
-011 dir udf auto quick
+010 generic other auto
+011 generic dir auto quick
012 rw auto quick
-013 other ioctl udf auto quick
-014 rw udf auto quick
+013 generic other ioctl auto quick
+014 generic rw auto quick
015 other auto quick
016 rw auto quick
017 mount auto quick
@@ -171,14 +171,14 @@ atime
066 dump ioctl auto quick
067 acl attr auto quick
068 other auto
-069 rw udf auto quick
-070 attr udf auto quick
+069 generic rw auto quick
+070 generic attr auto quick
071 rw
072 rw auto quick
073 copy auto
-074 rw udf auto
+074 generic rw auto
075 rw udf auto quick
-076 metadata rw udf auto quick
+076 generic metadata rw auto quick
077 acl attr auto
078 growfs auto quick
079 acl attr ioctl metadata auto quick
@@ -195,19 +195,19 @@ atime
090 rw auto
091 rw auto quick
092 other auto quick
-093 attr cap udf auto
+093 generic attr cap auto
094 metadata dir ioctl auto
095 log v2log auto
096 mkfs v2log auto quick
-097 udf auto
+097 generic auto
098 udf auto
-099 udf auto
-100 udf auto
+099 generic auto
+100 generic auto
101 udf
102 udf
103 metadata dir ioctl auto quick
104 growfs ioctl
-105 acl auto quick
+105 generic acl auto quick
106 quota
107 quota
108 quota
@@ -225,15 +225,15 @@ atime
120 other auto quick
121 log auto quick
122 other auto quick
-123 perms auto quick
-124 pattern auto quick
-125 other auto
+123 generic perms auto quick
+124 generic pattern auto quick
+125 generic other auto
126 perms auto quick
127 rw auto
-128 perms auto quick
+128 generic perms auto quick
129 rw auto quick
130 pattern auto quick
-131 perms auto quick
+131 generic perms auto quick
132 pattern auto
133 rw auto
134 quota auto quick
@@ -289,7 +289,7 @@ atime
181 log auto quick
182 metadata rw auto
183 rw other auto quick
-184 metadata auto quick
+184 generic metadata auto quick
185 dmapi auto
186 attr auto quick
187 attr auto quick
@@ -298,7 +298,7 @@ atime
190 rw auto quick
191 nfs4acl auto
192 atime
-193 metadata auto quick
+193 generic metadata auto quick
194 rw auto
195 ioctl dump auto quick
196 quota auto quick
diff --git a/new b/new
index c924ffe..ac61221 100755
--- a/new
+++ b/new
@@ -99,7 +99,7 @@ _cleanup()
# real QA test starts here
# Modify as appropriate.
-_supported_fs xfs udf nfs
+_supported_fs generic
_supported_os IRIX Linux
# if error
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH] xfstests: enable many tests to run on ext2/3/4
2009-05-21 20:15 [PATCH] xfstests: enable many tests to run on ext2/3/4 Eric Sandeen
@ 2009-05-24 14:39 ` Christoph Hellwig
2009-05-24 16:38 ` Eric Sandeen
2009-05-25 15:31 ` Eric Sandeen
1 sibling, 1 reply; 4+ messages in thread
From: Christoph Hellwig @ 2009-05-24 14:39 UTC (permalink / raw)
To: Eric Sandeen; +Cc: xfs mailing list, ext4 development
Wow, that's a nice start. The only important thing missing is checking
the filesystems after each test run for the non-xfs case.
Maybe we should put this in in stages? The _supported_fs generic
thing is a nice cleanup already for the existing xfs/nfs/udf setup
and should go in ASAP.
The _scratch_mkfs output fix in 069 could also be a separate patch.
The _setup_generic_testdir should be generalized to match XFS for the
default case and just set testdir in _setup_testdir instead of
another function. Also the comment there should be updated.
Same for _cleanup_testdir.
Btw, the way udf and nfs are currently handled look not very nice to me.
We should not set up the test device by default for any filesystem but
rather have a -setup or similar option to set it up if needed.
In common I would indeed prefer a new fstype option, but we might aswell
put the current version in as-is. Especially if we could tie up a really
generic fstype= that wouldn't require listing the filesystems if they
don't require special mount options or similar.
The only thing preventing that is as far as I can see the current difference
in _require_scratch for xfs and udf vs the rest. Which looks really weird
to me, need to investigate what's going on.
As for the generic group I must say I don't like it very much, the
filtering of notrun (maybe only notrun because of the filesystem type
mismatch) sounds much better to me.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] xfstests: enable many tests to run on ext2/3/4
2009-05-24 14:39 ` Christoph Hellwig
@ 2009-05-24 16:38 ` Eric Sandeen
0 siblings, 0 replies; 4+ messages in thread
From: Eric Sandeen @ 2009-05-24 16:38 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: xfs mailing list, ext4 development
Christoph Hellwig wrote:
> Wow, that's a nice start. The only important thing missing is checking
> the filesystems after each test run for the non-xfs case.
Yep, that was in the back of my mind. Probably needs more abstraction
to make that cleaner.
> Maybe we should put this in in stages? The _supported_fs generic
> thing is a nice cleanup already for the existing xfs/nfs/udf setup
> and should go in ASAP.
sure, I can break it up.
> The _scratch_mkfs output fix in 069 could also be a separate patch.
>
> The _setup_generic_testdir should be generalized to match XFS for the
> default case and just set testdir in _setup_testdir instead of
> another function. Also the comment there should be updated.
>
> Same for _cleanup_testdir.
>
> Btw, the way udf and nfs are currently handled look not very nice to me.
> We should not set up the test device by default for any filesystem but
> rather have a -setup or similar option to set it up if needed.
many of them likely fail, too, some of the acl & attr tests have some
assumptions about xfs limits.
> In common I would indeed prefer a new fstype option, but we might aswell
> put the current version in as-is. Especially if we could tie up a really
> generic fstype= that wouldn't require listing the filesystems if they
> don't require special mount options or similar.
Ok. I'd even thought that maybe by default, w/o options, it should just
run as whatever $TEST_DEV is formatted to (though that's trickier for
nfs I guess)
> The only thing preventing that is as far as I can see the current difference
> in _require_scratch for xfs and udf vs the rest. Which looks really weird
> to me, need to investigate what's going on.
I think this is because even for udf etc, it still expects $TEST_DIR to
be xfs, so swizzles around test & scratch. yeah, I agree that's messy.
> As for the generic group I must say I don't like it very much, the
> filtering of notrun (maybe only notrun because of the filesystem type
> mismatch) sounds much better to me.
yeah, after I ran it a bit more I think I tend to agree....
I'll work on breaking this up a bit and tidying up some of the loose
ends, since the basic approach seems sane to more than one person now :)
Thanks,
-Eric
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] xfstests: enable many tests to run on ext2/3/4
2009-05-21 20:15 [PATCH] xfstests: enable many tests to run on ext2/3/4 Eric Sandeen
2009-05-24 14:39 ` Christoph Hellwig
@ 2009-05-25 15:31 ` Eric Sandeen
1 sibling, 0 replies; 4+ messages in thread
From: Eric Sandeen @ 2009-05-25 15:31 UTC (permalink / raw)
To: xfs mailing list, ext4 development
Eric Sandeen wrote:
> This gets many of the tests running on ext4 (and should on ext2/ext3
> as well).
>
> A few things could still be cleaned up; rather than -xfs, -ext3, -ext4
> etc it'd be better to do --fstype xfs or whatnot, and lose as much of
> the special-casing as possible. But this gets it going, so maybe
> worth merging now as a first step.
>
> This creates a new supported_fs "generic" type which should run on
> any generic filesystem (well, assuming it supports acls & xattrs, along
> with general posix-ness).
>
> It also adds a "generic" group, so you can do:
>
> ./check -ext4 -g generic
>
> and that way it'll avoid any fs-specific tests. They wouldn't
> fail anyway, but it gets noisy to see all the "notrun" tests.
For the uninitiated :) This applies on top of:
http://git.kernel.org/?p=fs/xfs/xfstests-dev.git
Apply my patch & build it with make... you'll need xfsprogs,
xfsprogs-devel, and xfsprogs-qa-devel (or make install-dev, make
install-qa from the xfsprogs tarball)* A few other standard devel
packages like e2fsprogs-devel, acl-devel, attr-devel, libaio-devel are
needed too.
edit a local.config file in the top level dir:
TEST_DEV=/dev/sdb1 # device containing TEST PARTITION
TEST_DIR=/mnt/test # mount point of TEST PARTITION
SCRATCH_DEV=/dev/sdb3 # device containing SCRATCH PARTITION
SCRATCH_MNT=/mnt/scratch # mount point for SCRATCH PARTITION
mkfs.ext4 the $TEST_DEV
./check -ext4 -g generic
-Eric
*another TODO is probably to make ./configure cope with lack of at least
the xfsprogs-qa-devel headers. There's still some work to make this
cleaner/easier but this at least gets things going.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-05-25 15:31 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-21 20:15 [PATCH] xfstests: enable many tests to run on ext2/3/4 Eric Sandeen
2009-05-24 14:39 ` Christoph Hellwig
2009-05-24 16:38 ` Eric Sandeen
2009-05-25 15:31 ` Eric Sandeen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).