xfs: test xfsprogs log formatting infrastructure

The xfsprogs libxfs layer implements its own log formatting code to
support utilities that might need to format the log, such as mkfs,
repair, metadump, etc. This code is fairly independent from kernel log
writing code. Therefore, add a test that reformats the log from
userspace with various supported log stripe unit alignments and verifies
that the end result is a correctly formatted log.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
Brian Foster
2015-12-21 17:59:04 +11:00
committed by Dave Chinner
parent 7a33e8569a
commit 876161d544
4 changed files with 92 additions and 0 deletions
+14
View File
@@ -1656,6 +1656,20 @@ _require_xfs_io_command()
_notrun "xfs_io $command failed (old kernel/wrong fs?)"
}
# check that xfs_db supports a specific command
_require_xfs_db_command()
{
if [ $# -ne 1 ]
then
echo "Usage: _require_xfs_db_command command" 1>&2
exit 1
fi
command=$1
$XFS_DB_PROG -x -c "help" $SCRATCH_DEV | grep $command > /dev/null || \
_notrun "xfs_db $command support is missing"
}
# check that kernel and filesystem support direct I/O
_require_odirect()
{
Executable
+71
View File
@@ -0,0 +1,71 @@
#! /bin/bash
# FS QA Test No. 135
#
# This test verifies that the xfsprogs log formatting infrastructure works
# correctly for various log stripe unit values. The log is formatted with xfs_db
# and verified with xfs_logprint.
#
#-----------------------------------------------------------------------
# Copyright (c) 2015 Red Hat, Inc. All Rights Reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it would be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#-----------------------------------------------------------------------
#
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_cleanup()
{
cd /
rm -f $tmp.*
}
rm -f $seqres.full
# get standard environment, filters and checks
. ./common/rc
. ./common/log
# real QA test starts here
# Modify as appropriate.
_supported_fs xfs
_supported_os Linux
_require_scratch
_require_v2log
_require_xfs_db_command "logformat"
_scratch_mkfs >> $seqres.full 2>&1 || _fail "mkfs failed"
# Reformat the log with various log stripe unit sizes and see if logprint dumps
# any errors. Use a cycle value larger than 1 so the log is actually written
# (the log is zeroed when cycle == 1).
for i in 16 32 64 128 256; do
lsunit=$((i * 1024))
$XFS_DB_PROG -x -c "logformat -c 3 -s $lsunit" $SCRATCH_DEV | \
tee -a $seqres.full
# don't redirect error output so it causes test failure
$XFS_LOGPRINT_PROG $SCRATCH_DEV >> $seqres.full
done
# success, all done
status=0
exit
+6
View File
@@ -0,0 +1,6 @@
QA output created by 135
Formatting the log to cycle 3, stripe unit 16384 bytes.
Formatting the log to cycle 3, stripe unit 32768 bytes.
Formatting the log to cycle 3, stripe unit 65536 bytes.
Formatting the log to cycle 3, stripe unit 131072 bytes.
Formatting the log to cycle 3, stripe unit 262144 bytes.
+1
View File
@@ -131,6 +131,7 @@
131 auto quick clone
132 auto quick clone
134 quota auto quick
135 auto logprint quick v2log
136 attr2
142 dmapi
143 dmapi