diff mbox

[v2] xfs: remove meta mkfs options correctly in _scratch_mkfs_xfs

Message ID 20180523105035.8157-1-guaneryu@gmail.com (mailing list archive)
State Deferred, archived
Headers show

Commit Message

Eryu Guan May 23, 2018, 10:50 a.m. UTC
Prior to commit 596a068bf130 ("fstests: teach _scratch_mkfs to handle
mkfs option conflicts"), one of _scratch_mkfs_xfs_opts()'s job is to
remove any metadata related mkfs options if mkfs.xfs binary doesn't
support them, so that tests that pass metadada mkfs options to
_scratch_mkfs, e.g. "_scratch_mkfs -m crc=0" won't break with old
mkfs.xfs.

But commit 596a068bf130 broke this, because it didn't pass any mkfs
options to _scratch_mkfs_xfs_opts(). Fix it by introducing a new helper
_xfs_mkfs_remove_meta_opts() to remove any meta related mkfs options if
necessary, and moving that function out of _scratch_mkfs_xfs_opts().

Reported-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
---
v2:
- treat "extra options" as extra options, so move remove-meta-opts function
  out of _scratch_mkfs_xfs_opts() to a new helper _xfs_mkfs_remove_meta_opts

 common/xfs | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)
diff mbox

Patch

diff --git a/common/xfs b/common/xfs
index 92223513d561..1385c8c7e57b 100644
--- a/common/xfs
+++ b/common/xfs
@@ -44,18 +44,20 @@  _setup_large_xfs_fs()
 	return 0
 }
 
-_scratch_mkfs_xfs_opts()
+# remove metadata related mkfs options if mkfs.xfs doesn't support them
+_xfs_mkfs_remove_meta_opts()
 {
-	mkfs_opts=$*
-
-	# remove metadata related mkfs options if mkfs.xfs doesn't them
+	local mkfs_opts="$*"
 	if [ -n "$XFS_MKFS_HAS_NO_META_SUPPORT" ]; then
-		mkfs_opts=`echo $mkfs_opts | sed "s/-m\s\+\S\+//g"`
+		mkfs_opts=`echo $* | sed "s/-m\s\+\S\+//g"`
 	fi
+	echo "$mkfs_opts"
+}
 
+_scratch_mkfs_xfs_opts()
+{
 	_scratch_options mkfs
-
-	echo "$MKFS_XFS_PROG $SCRATCH_OPTIONS $mkfs_opts"
+	echo "$MKFS_XFS_PROG $SCRATCH_OPTIONS"
 }
 
 
@@ -83,10 +85,12 @@  _scratch_mkfs_xfs()
 	local mkfs_filter="sed -e '/less than device physical sector/d' \
 			       -e '/switching to logical sector/d' \
 			       -e '/Default configuration/d'"
+	local extra_mkfs_opts="`_xfs_mkfs_remove_meta_opts $*`"
 	local tmp=`mktemp -u`
 	local mkfs_status
 
-	_scratch_do_mkfs "$mkfs_cmd" "$mkfs_filter" $* 2>$tmp.mkfserr 1>$tmp.mkfsstd
+	_scratch_do_mkfs "$mkfs_cmd" "$mkfs_filter" "$extra_mkfs_opts" \
+		2>$tmp.mkfserr 1>$tmp.mkfsstd
 	mkfs_status=$?