From: "Darrick J. Wong" <djwong@kernel.org>
To: aalbersh@kernel.org, fstests <fstests@vger.kernel.org>
Cc: linux-xfs@vger.kernel.org
Subject: [PATCH RFC] xfs: test mkfs.xfs config file generation
Date: Mon, 31 Aug 2026 16:34:30 -0700 [thread overview]
Message-ID: <20260831233430.GK1933798@frogsfrogsfrogs> (raw)
In-Reply-To: <178821870568.2381199.9038448943413709082.stgit@frogsfrogsfrogs>
From: Darrick J. Wong <djwong@kernel.org>
Test configuration file generation via mkfs, xfs_db, and xfs_spaceman.
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
tests/xfs/1909 | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/xfs/1909.out | 2 +
2 files changed, 125 insertions(+)
create mode 100755 tests/xfs/1909
create mode 100644 tests/xfs/1909.out
diff --git a/tests/xfs/1909 b/tests/xfs/1909
new file mode 100755
index 00000000000000..d405064c3e3d1d
--- /dev/null
+++ b/tests/xfs/1909
@@ -0,0 +1,123 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2026 Oracle. All Rights Reserved.
+#
+# FS QA Test 1909
+#
+# Functional testing for mkfs.xfs config file generation.
+#
+. ./common/preamble
+_begin_fstest auto mkfs
+
+# . ./common/filter
+
+_require_scratch
+_require_xfs_mkfs_cfgfile
+_require_xfs_spaceman_command "makecfg"
+_require_xfs_db_command "makecfg"
+_require_command "$XFS_ADMIN_PROG" "xfs_admin"
+
+# t1: Make sure all three tools generate the same config file
+_scratch_mkfs >> $seqres.full
+_scratch_mount
+$XFS_SPACEMAN_PROG -c "makecfg $tmp.spaceman1" $SCRATCH_MNT
+$XFS_ADMIN_PROG -C $tmp.onadmin1 $SCRATCH_MNT
+_scratch_unmount
+# strip out deprecation warnings (e.g. v4 filesystems)
+_scratch_mkfs -c makecfg=$tmp.mkfs1
+_scratch_xfs_db -c "makecfg $tmp.db1"
+_scratch_xfs_admin -C $tmp.offadmin1
+
+cmp -s $tmp.mkfs1 $tmp.spaceman1 || echo "mkfs config1 does not match spaceman?"
+cmp -s $tmp.db1 $tmp.spaceman1 || echo "db config1 does not match spaceman?"
+cmp -s $tmp.db1 $tmp.mkfs1 || echo "db config1 does not match mkfs?"
+cmp -s $tmp.onadmin1 $tmp.mkfs1 || echo "online admin config1 does not match mkfs?"
+cmp -s $tmp.offadmin1 $tmp.mkfs1 || echo "offline admin config1 does not match mkfs?"
+
+echo "*** spaceman config1" >> $seqres.full
+cat $tmp.spaceman1 >> $seqres.full
+echo "*** mkfs config1" >> $seqres.full
+cat $tmp.mkfs1 >> $seqres.full
+echo "*** db config1" >> $seqres.full
+cat $tmp.db1 >> $seqres.full
+echo "*** online admin config1" >> $seqres.full
+cat $tmp.onadmin1 >> $seqres.full
+echo "*** offline admin config1" >> $seqres.full
+cat $tmp.offadmin1 >> $seqres.full
+
+# t2: Make sure the output changes if we set a new rootdir inherit option
+_scratch_mount
+$XFS_IO_PROG -c 'chattr +P' -c 'chproj 33' $SCRATCH_MNT
+$XFS_SPACEMAN_PROG -c "makecfg $tmp.spaceman2" $SCRATCH_MNT
+_scratch_unmount
+_scratch_xfs_db -c "makecfg $tmp.db2"
+
+cmp -s $tmp.db2 $tmp.spaceman2 || echo "db config2 does not match spaceman?"
+cmp -s $tmp.db1 $tmp.db2 && echo "db config1 should be different from db config2"
+
+echo "*** spaceman config2" >> $seqres.full
+cat $tmp.spaceman2 >> $seqres.full
+echo "*** db config2" >> $seqres.full
+cat $tmp.db2 >> $seqres.full
+
+# t3: Format with t2 config file, make sure the results match t2 and not t1
+_scratch_mkfs -c options=$tmp.db2 >> $seqres.full
+_scratch_mount
+$XFS_SPACEMAN_PROG -c "makecfg $tmp.spaceman3" $SCRATCH_MNT
+_scratch_unmount
+_scratch_xfs_db -c "makecfg $tmp.db3"
+
+cmp -s $tmp.db3 $tmp.spaceman3 || echo "db config3 does not match spaceman?"
+cmp -s $tmp.db3 $tmp.db1 && echo "db config3 should be different from db config1"
+cmp -s $tmp.db3 $tmp.db2 || echo "db config3 does not match db config2?"
+
+echo "*** spaceman config3" >> $seqres.full
+cat $tmp.spaceman3 >> $seqres.full
+echo "*** db config3" >> $seqres.full
+cat $tmp.db3 >> $seqres.full
+
+# t4: Set autofsck filesystem property, make sure that gets reflected
+autofsck="$(grep 'autofsck=' $tmp.spaceman3 | sed -e 's/^.*autofsck=//g')"
+case "$autofsck" in
+"")
+ if grep -q 'crc=1' $tmp.spaceman3; then
+ new_autofsck=check
+ fi
+ ;;
+repair) new_autofsck=check;;
+*) new_autofsck=repair;;
+esac
+if [ -n "$new_autofsck" ]; then
+ $XFS_PROPERTY_PROG $SCRATCH_DEV set "autofsck=$new_autofsck" >> $seqres.full
+ _scratch_mount
+ $XFS_SPACEMAN_PROG -c "makecfg $tmp.spaceman4" $SCRATCH_MNT
+ _scratch_unmount
+ _scratch_xfs_db -c "makecfg $tmp.db4"
+
+ cmp -s $tmp.db4 $tmp.spaceman4 || echo "db config4 does not match spaceman?"
+ cmp -s $tmp.db4 $tmp.db3 && echo "db config4 should be different from db config3"
+
+ echo "*** spaceman config4" >> $seqres.full
+ cat $tmp.spaceman4 >> $seqres.full
+ echo "*** db config4" >> $seqres.full
+ cat $tmp.db4 >> $seqres.full
+
+ _scratch_mkfs -c options=$tmp.db4 >> $seqres.full
+ _scratch_mount
+ $XFS_SPACEMAN_PROG -c "makecfg $tmp.spaceman4a" $SCRATCH_MNT
+ _scratch_unmount
+ _scratch_xfs_db -c "makecfg $tmp.db4a"
+
+ cmp -s $tmp.db4a $tmp.spaceman4a || echo "db config4a does not match spaceman?"
+ cmp -s $tmp.db4a $tmp.db3 && echo "db config4a should be different from db config3"
+ cmp -s $tmp.db4a $tmp.db4 || echo "db config4a does not match db config4?"
+
+ echo "*** spaceman config4a" >> $seqres.full
+ cat $tmp.spaceman4a >> $seqres.full
+ echo "*** db config4a" >> $seqres.full
+ cat $tmp.db4a >> $seqres.full
+
+fi
+
+echo Silence is golden
+_exit 0
diff --git a/tests/xfs/1909.out b/tests/xfs/1909.out
new file mode 100644
index 00000000000000..c17c5522d48db4
--- /dev/null
+++ b/tests/xfs/1909.out
@@ -0,0 +1,2 @@
+QA output created by 1909
+Silence is golden
next parent reply other threads:[~2026-08-31 23:34 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <178821870568.2381199.9038448943413709082.stgit@frogsfrogsfrogs>
2026-08-31 23:34 ` Darrick J. Wong [this message]
2026-09-03 11:21 ` [PATCH RFC] xfs: test mkfs.xfs config file generation Andrey Albershteyn
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=20260831233430.GK1933798@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=aalbersh@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
/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