From: Dave Chinner <dchinner@xxxxxxxxxx>
CRCs always enabled 32 bit project inodes and attr2 formats, hence
they cannot be turned off. Add new require rules for the tests that
require attr and 16 bit project IDs so these tests are avoided on
CRC enabled filesystems.
Also, add a xfs_db write check so that we can avoid tests that are
dependent on xfs_db modifying filesystem structures as they will
fail on CRC enabled filessystems right now. This is just temporary
until full write xfs_db support is available.
Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
---
common/attr | 6 ++++++
common/rc | 26 +++++++++++++++++++++++---
tests/shared/298 | 2 +-
tests/xfs/044 | 1 +
tests/xfs/045 | 1 +
tests/xfs/186 | 2 ++
tests/xfs/187 | 13 +++++++------
tests/xfs/199 | 1 +
tests/xfs/244 | 1 +
tests/xfs/278 | 2 ++
tests/xfs/287 | 4 +++-
tests/xfs/291 | 2 +-
12 files changed, 49 insertions(+), 12 deletions(-)
diff --git a/common/attr b/common/attr
index e5070bf..1ab5014 100644
--- a/common/attr
+++ b/common/attr
@@ -176,6 +176,12 @@ _require_attrs()
rm -f $TEST_DIR/syscalltest.out
}
+_require_attr_v1()
+{
+ scratch_mkfs_xfs -f -i attr=1 > /dev/null 2>&1 \
+ || _notrun "attr v1 not supported"
+}
+
# getfattr -R returns info in readdir order which varies from fs to fs.
# This sorts the output by filename
_sort_getfattr_output()
diff --git a/common/rc b/common/rc
index 88d38ef..b2ad2a0 100644
--- a/common/rc
+++ b/common/rc
@@ -1074,14 +1074,34 @@ _require_dm_flakey()
}
# this test requires the projid32bit feature to be available in
-# mkfs.xfs
-#
+# mkfs.xfs. We need to open code the mkfs test because _scratch_mkfs_xfs
+# will drop command line mkfs options to ensure that it succeeds, hence
+# not actually testing the configuration we desire to be tested for support.
_require_projid32bit()
{
- _scratch_mkfs_xfs -f -i projid32bit=0 >/dev/null 2>&1 \
+ _scratch_options mkfs
+
+ $MKFS_XFS_PROG $SCRATCH_OPTIONS $MKFS_OPTIONS \
+ -f -i projid32bit=1 $SCRATCH_DEV >/dev/null 2>&1 \
|| _notrun "mkfs.xfs doesn't have projid32bit feature"
}
+_require_projid16bit()
+{
+ _scratch_options mkfs
+
+ $MKFS_XFS_PROG $SCRATCH_OPTIONS $MKFS_OPTIONS \
+ -f -i projid32bit=0 $SCRATCH_DEV >/dev/null 2>&1 \
+ || _notrun "16 bit project IDs not supported on $SCRATCH_DEV"
+}
+
+# This test requires xfs_db write support
+_require_xfs_db_write()
+{
+ $XFS_DB_PROG $TEST_DEV > /dev/null 2>&1 \
+ || _notrun "xfs_db write support required."
+}
+
# this test requires that external log/realtime devices are not in use
#
_require_nonexternal()
diff --git a/tests/shared/298 b/tests/shared/298
index 4541798..6b5402c 100755
--- a/tests/shared/298
+++ b/tests/shared/298
@@ -70,7 +70,7 @@ get_free_sectors()
agsize=`xfs_info $loop_mnt | $SED_PROG -n 's/.*agsize=\(.*\)
blks.*/\1/p'`
# Convert free space (agno, block, length) to (start sector, end sector)
$UMOUNT_PROG $loop_mnt
- $XFS_DB_PROG -c "freesp -d" $img_file | $SED_PROG '/^.*from/,$d'| \
+ $XFS_DB_PROG -r -c "freesp -d" $img_file | $SED_PROG '/^.*from/,$d'| \
$AWK_PROG -v spb=$sectors_per_block -v agsize=$agsize \
'{ print spb * ($1 * agsize + $2), spb * ($1 * agsize + $2 +
$3) - 1 }'
;;
diff --git a/tests/xfs/044 b/tests/xfs/044
index a84af22..cf575f8 100755
--- a/tests/xfs/044
+++ b/tests/xfs/044
@@ -44,6 +44,7 @@ _supported_fs xfs
_supported_os Linux
_require_logdev
+_require_xfs_db_write
_filter_logprint()
{
diff --git a/tests/xfs/045 b/tests/xfs/045
index 84ca802..17d2391 100755
--- a/tests/xfs/045
+++ b/tests/xfs/045
@@ -45,6 +45,7 @@ _supported_fs xfs
_supported_os Linux
_require_scratch
+_require_xfs_db_write
echo "*** get uuid"
uuid=`_get_existing_uuid`
diff --git a/tests/xfs/186 b/tests/xfs/186
index 960aed1..71f2a31 100755
--- a/tests/xfs/186
+++ b/tests/xfs/186
@@ -147,6 +147,8 @@ _supported_os Linux
_require_scratch
_require_attrs
+_require_attr_v1
+_require_xfs_db_write
rm -f $seqres.full
diff --git a/tests/xfs/187 b/tests/xfs/187
index 9cf1305..415ab11 100755
--- a/tests/xfs/187
+++ b/tests/xfs/187
@@ -58,6 +58,7 @@ _supported_os Linux
_require_scratch
_require_attrs
+_require_attr_v1
rm -f $seqres.full
@@ -87,13 +88,13 @@ echo ""
echo "attr2 fs"
echo ""
_scratch_mkfs -i attr=2 -l lazy-count=0 >/dev/null 2>&1
-$XFS_DB_PROG -c version $SCRATCH_DEV 2>&1 | _filter_version
+$XFS_DB_PROG -r -c version $SCRATCH_DEV 2>&1 | _filter_version
echo ""
echo "noattr2 fs"
echo ""
_scratch_mount -o noattr2
$UMOUNT_PROG $SCRATCH_MNT
-$XFS_DB_PROG -c version $SCRATCH_DEV 2>&1 | _filter_version
+$XFS_DB_PROG -r -c version $SCRATCH_DEV 2>&1 | _filter_version
# adding an EA will ensure the ATTR1 flag is turned on
echo ""
@@ -102,7 +103,7 @@ echo ""
echo "attr2 fs"
echo ""
_scratch_mkfs -i attr=2 -l lazy-count=0 >/dev/null 2>&1
-$XFS_DB_PROG -c version $SCRATCH_DEV 2>&1 | _filter_version
+$XFS_DB_PROG -r -c version $SCRATCH_DEV 2>&1 | _filter_version
echo ""
echo "noattr2 fs"
echo ""
@@ -113,7 +114,7 @@ $SETFATTR_PROG -n user.test -v 0xbabe testfile
$GETFATTR_PROG testfile
cd $here
$UMOUNT_PROG $SCRATCH_MNT
-$XFS_DB_PROG -c version $SCRATCH_DEV 2>&1 | _filter_version
+$XFS_DB_PROG -r -c version $SCRATCH_DEV 2>&1 | _filter_version
echo ""
echo "*** 3. test noattr2 mount and lazy sb ***"
@@ -122,7 +123,7 @@ echo ""
echo "attr2 fs"
echo ""
_scratch_mkfs -i attr=2 -l lazy-count=1 >/dev/null 2>&1
-$XFS_DB_PROG -c version $SCRATCH_DEV 2>&1 | _filter_version
+$XFS_DB_PROG -r -c version $SCRATCH_DEV 2>&1 | _filter_version
echo ""
echo "noattr2 fs"
echo ""
@@ -131,7 +132,7 @@ cd $SCRATCH_MNT
touch testfile
cd $here
$UMOUNT_PROG $SCRATCH_MNT
-$XFS_DB_PROG -c version $SCRATCH_DEV 2>&1 | _filter_version
+$XFS_DB_PROG -r -c version $SCRATCH_DEV 2>&1 | _filter_version
# success, all done
status=0
diff --git a/tests/xfs/199 b/tests/xfs/199
index 1d64e02..0ab0dba 100755
--- a/tests/xfs/199
+++ b/tests/xfs/199
@@ -48,6 +48,7 @@ _supported_fs xfs
_supported_os Linux
_require_scratch
+_require_xfs_db_write
_scratch_mkfs_xfs -l lazy-count=1 >/dev/null 2>&1
diff --git a/tests/xfs/244 b/tests/xfs/244
index 7d2a2d3..90291fb 100755
--- a/tests/xfs/244
+++ b/tests/xfs/244
@@ -48,6 +48,7 @@ _supported_fs xfs
_require_xfs_quota
_require_scratch
_require_projid32bit
+_require_projid16bit
export MOUNT_OPTIONS="-opquota"
diff --git a/tests/xfs/278 b/tests/xfs/278
index 938717d..e6f9289 100755
--- a/tests/xfs/278
+++ b/tests/xfs/278
@@ -46,6 +46,8 @@ _cleanup()
_supported_fs xfs
_supported_os Linux
_require_scratch
+_require_xfs_db_write
+
_scratch_mkfs >/dev/null 2>&1
_scratch_mount
diff --git a/tests/xfs/287 b/tests/xfs/287
index 9de0b3d..febc3af 100755
--- a/tests/xfs/287
+++ b/tests/xfs/287
@@ -45,7 +45,7 @@ _cleanup()
_print_projid()
{
- $XFS_DB_PROG -c "inode $1" \
+ $XFS_DB_PROG -r -c "inode $1" \
-c "print core.projid_lo" \
-c "print core.projid_hi" \
$SCRATCH_DEV
@@ -56,6 +56,8 @@ _supported_fs xfs
_require_xfs_quota
_require_scratch
_require_projid32bit
+_require_projid16bit
+_require_xfs_db_write # for xfs_admin
# create xfs fs without projid32bit ability, will be gained by xfs_admin
_scratch_mkfs_xfs -i projid32bit=0 -d size=200m 2> /dev/null >> $seqres.full \
diff --git a/tests/xfs/291 b/tests/xfs/291
index 7723b9e..03c4de9 100755
--- a/tests/xfs/291
+++ b/tests/xfs/291
@@ -70,7 +70,7 @@ xfs_io -f -c "pwrite 0 16m" -c "fsync"
$SCRATCH_MNT/space_file.large >> $seqres.
# Take a look at freespace for any post-mortem on the test
_scratch_unmount
-xfs_db -c freesp $SCRATCH_DEV >> $seqres.full 2>&1
+xfs_db -r -c freesp $SCRATCH_DEV >> $seqres.full 2>&1
_scratch_mount
# Step 2: Make a bunch of (hopefully fragmented) multiblock
--
1.7.10.4
|