xfs
[Top] [All Lists]

[PATCH] xfstests: enable many tests to run on ext2/3/4

To: xfs mailing list <xfs@xxxxxxxxxxx>, ext4 development <linux-ext4@xxxxxxxxxxxxxxx>
Subject: [PATCH] xfstests: enable many tests to run on ext2/3/4
From: Eric Sandeen <sandeen@xxxxxxxxxx>
Date: Thu, 21 May 2009 15:15:05 -0500
User-agent: Thunderbird 2.0.0.21 (X11/20090320)
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@xxxxxxxxxx>
---


 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

<Prev in Thread] Current Thread [Next in Thread>