aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2017-12-11 17:49:19 -0500
committerEryu Guan <eguan@redhat.com>2017-12-12 12:07:48 +0800
commitbe341e36fd02cc73cb8360c7a61d406eb00cc48d (patch)
tree2fd32524b9f5f988f4f21096b9611c0784551b4f
parentd79448aefec98fbc32b1ec0bcf30a2dd3c122be1 (diff)
downloadxfstests-be341e36fd02cc73cb8360c7a61d406eb00cc48d.tar.gz
common: rework _require_ext4_mkfs_feature
In all of the places where we need check to see if mkfs.ext4 can support a set of file system features, we also should be checking to see if the kernel can support those file system features. So rename _require_ext4_mkfs_feature to _require_scratch_ext4_feature, and actually format the file system in $SCRATCH_DEV. Also allow ext4/306 to run on systems where mke2fs doesn't support the "64bit" option. Signed-off-by: Theodore Ts'o <tytso@mit.edu> Reviewed-by: Eryu Guan <eguan@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
-rw-r--r--common/rc38
-rwxr-xr-xtests/ext4/0033
-rwxr-xr-xtests/ext4/0252
-rwxr-xr-xtests/ext4/0262
-rwxr-xr-xtests/ext4/3067
5 files changed, 21 insertions, 31 deletions
diff --git a/common/rc b/common/rc
index 4c053a5371..cbd37e795c 100644
--- a/common/rc
+++ b/common/rc
@@ -1812,32 +1812,20 @@ _require_scratch_ext4_crc()
_scratch_unmount
}
-# Check the specified feature whether it is available in mkfs.ext4 or not.
-_require_ext4_mkfs_feature()
+# Check whether the specified feature whether it is supported by
+# mkfs.ext4 and the kernel.
+_require_scratch_ext4_feature()
{
- local feature=$1
- local testfile=/tmp/$$.ext4_mkfs
-
- if [ -z "$feature" ]; then
- echo "Usage: _require_ext4_mkfs_feature feature"
- exit 1
- fi
-
- touch $testfile
- local result=$($MKFS_EXT4_PROG -F -O $feature -n $testfile 512m 2>&1)
- rm -f $testfile
- echo $result | grep -q "Invalid filesystem option" && \
- _notrun "mkfs.ext4 doesn't support $feature feature"
-}
-
-# this test requires the ext4 kernel support bigalloc feature
-#
-_require_ext4_bigalloc()
-{
- $MKFS_EXT4_PROG -F -O bigalloc $SCRATCH_DEV 512m >/dev/null 2>&1
- _scratch_mount >/dev/null 2>&1 \
- || _notrun "Ext4 kernel doesn't support bigalloc feature"
- _scratch_unmount
+ if [ -z "$1" ]; then
+ echo "Usage: _require_scratch_ext4_feature feature"
+ exit 1
+ fi
+ $MKFS_EXT4_PROG -F $MKFS_OPTIONS -O "$1" \
+ $SCRATCH_DEV 512m >/dev/null 2>&1 \
+ || _notrun "mkfs.ext4 doesn't support $1 feature"
+ _scratch_mount >/dev/null 2>&1 \
+ || _notrun "Kernel doesn't support the ext4 feature(s): $1"
+ _scratch_unmount
}
# this test requires that external log/realtime devices are not in use
diff --git a/tests/ext4/003 b/tests/ext4/003
index 9be401789f..eafe9a53cb 100755
--- a/tests/ext4/003
+++ b/tests/ext4/003
@@ -38,8 +38,7 @@ _supported_fs ext4
_supported_os Linux
_require_scratch
-_require_ext4_mkfs_feature "bigalloc"
-_require_ext4_bigalloc
+_require_scratch_ext4_feature "bigalloc"
rm -f $seqres.full
diff --git a/tests/ext4/025 b/tests/ext4/025
index 49ecb462b5..2a7b35fc3e 100755
--- a/tests/ext4/025
+++ b/tests/ext4/025
@@ -48,7 +48,7 @@ _supported_fs ext4
_supported_os Linux
_require_scratch_nocheck
_require_command "$DEBUGFS_PROG" debugfs
-_require_ext4_mkfs_feature "bigalloc,meta_bg,^resize_inode"
+_require_scratch_ext4_feature "bigalloc,meta_bg,^resize_inode"
echo "Create ext4 fs and modify first_meta_bg's value"
_scratch_mkfs "-O bigalloc,meta_bg,^resize_inode" >> $seqres.full 2>&1
diff --git a/tests/ext4/026 b/tests/ext4/026
index 94a737ce0a..7731e92396 100755
--- a/tests/ext4/026
+++ b/tests/ext4/026
@@ -50,7 +50,7 @@ _supported_fs ext4
_supported_os Linux
_require_scratch
_require_attrs
-_require_ext4_mkfs_feature ea_inode
+_require_scratch_ext4_feature "ea_inode"
_scratch_mkfs_ext4 -O ea_inode >/dev/null 2>&1
_scratch_mount
diff --git a/tests/ext4/306 b/tests/ext4/306
index be765e6a67..70f281dbaf 100755
--- a/tests/ext4/306
+++ b/tests/ext4/306
@@ -44,12 +44,15 @@ _supported_fs ext4
_supported_os Linux
_require_scratch
-_require_ext4_mkfs_feature "64bit"
rm -f $seqres.full
# Make a small ext4 fs with extents disabled & mount it
-$MKFS_EXT4_PROG -F -O ^extents,^64bit $SCRATCH_DEV 512m >> $seqres.full 2>&1
+features="^extents"
+if grep -q 64bit /etc/mke2fs.conf ; then
+ features="^extents,^64bit"
+fi
+$MKFS_EXT4_PROG -F -O "$features" $SCRATCH_DEV 512m >> $seqres.full 2>&1
_scratch_mount || _fail "couldn't mount fs"
# Create a small non-extent-based file