public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Brian Foster <bfoster@redhat.com>
To: fstests@vger.kernel.org
Cc: xfs@oss.sgi.com
Subject: [PATCH 1/2] tests/xfs: test xfsprogs log formatting infrastructure
Date: Wed, 25 Nov 2015 15:19:49 -0500	[thread overview]
Message-ID: <1448482790-44469-2-git-send-email-bfoster@redhat.com> (raw)
In-Reply-To: <1448482790-44469-1-git-send-email-bfoster@redhat.com>

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>
---
 common/rc         | 14 +++++++++++
 tests/xfs/376     | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/376.out |  6 +++++
 tests/xfs/group   |  1 +
 4 files changed, 92 insertions(+)
 create mode 100755 tests/xfs/376
 create mode 100644 tests/xfs/376.out

diff --git a/common/rc b/common/rc
index 4c2f42c..a2628d7 100644
--- a/common/rc
+++ b/common/rc
@@ -1654,6 +1654,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()
 {
diff --git a/tests/xfs/376 b/tests/xfs/376
new file mode 100755
index 0000000..e8cc15d
--- /dev/null
+++ b/tests/xfs/376
@@ -0,0 +1,71 @@
+#! /bin/bash
+# FS QA Test No. 376
+#
+# 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
diff --git a/tests/xfs/376.out b/tests/xfs/376.out
new file mode 100644
index 0000000..b13a150
--- /dev/null
+++ b/tests/xfs/376.out
@@ -0,0 +1,6 @@
+QA output created by 376
+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.
diff --git a/tests/xfs/group b/tests/xfs/group
index 9884329..77b9994 100644
--- a/tests/xfs/group
+++ b/tests/xfs/group
@@ -226,3 +226,4 @@
 303 auto quick quota
 304 auto quick quota
 305 auto quota
+376 auto logprint quick v2log
-- 
2.1.0

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

  reply	other threads:[~2015-11-25 20:19 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-25 20:19 [PATCH 0/2] xfstests: xfsprogs logformat tests Brian Foster
2015-11-25 20:19 ` Brian Foster [this message]
2015-11-25 20:19 ` [PATCH 2/2] tests/xfs: verify invalid metadata LSN detection Brian Foster

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1448482790-44469-2-git-send-email-bfoster@redhat.com \
    --to=bfoster@redhat.com \
    --cc=fstests@vger.kernel.org \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox