xfs
[Top] [All Lists]

Re: [PATCH] xfstests: Add pairing mount options test

To: Eric Sandeen <sandeen@xxxxxxxxxxx>, xfs@xxxxxxxxxxx
Subject: Re: [PATCH] xfstests: Add pairing mount options test
From: Qu Wenruo <quwenruo@xxxxxxxxxxxxxx>
Date: Mon, 13 Jan 2014 09:21:22 +0800
Cc: Eric Sandeen <sandeen@xxxxxxxxxx>, linux-btrfs <linux-btrfs@xxxxxxxxxxxxxxx>
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <52D01CA9.4040107@xxxxxxxxxxx>
References: <1389162648-19309-1-git-send-email-quwenruo@xxxxxxxxxxxxxx> <52D01CA9.4040107@xxxxxxxxxxx>
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0
On fri, 10 Jan 2014 10:15:37 -0600, Eric Sandeen wrote:
On 1/8/14, 12:30 AM, Qu Wenruo wrote:
Test remount btrfs with different pairing options like barrier and no barrier.
It seems that while this tests that the remount succeeds, and that
the option string is present in /proc/mounts, it does not test that
the mount option is actually in effect.

Yes, this is what the new test case is intended to do.
This case was just a test case tests the mount options themselves
to ensure all the pairing mount options works during remounting,
since most pairing options are missing before.

I suppose for many of these options that would be hard to test; for
i.e. acl though it should be trivial.

What do you think, is this enough to ensure that remount handling
is working as expected for all of these options?
In my opinion, this test should just focuses on the remount handling and
the pairing options.
For the detailed function should be examineed in other test cases.

Also, most of the pairing options are instructive,
and some may not be in effect before next transaction (for the incomming noinode_cache options), so I think is OK for just examining the options and remount handling for now.

Thanks
Qu

Thanks,
-Eric

Mainly used to test the following comming btrfs kernel commit:(Not in
mainline yet)
8dd6d2c btrfs: Add treelog mount option.
f1eccd3 btrfs: Add datasum mount option.
aad3269 btrfs: Add datacow mount option.
22bab74 btrfs: Add acl mount option.
170e45e btrfs: Add noflushoncommit mount option.
ce41bc9 btrfs: Add noenospc_debug mount option.
f3c639b btrfs: Add nodiscard mount option.
962cbee btrfs: Add noautodefrag mount option.
0b4fa2a btrfs: Add "barrier" option to support "-o remount,barrier"

Signed-off-by: Qu Wenruo <quwenruo@xxxxxxxxxxxxxx>
Cc: Eric Sandeen <sandeen@xxxxxxxxxx>
---
  tests/btrfs/025     | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++++
  tests/btrfs/025.out |   2 +
  tests/btrfs/group   |   1 +
  3 files changed, 128 insertions(+)
  create mode 100755 tests/btrfs/025
  create mode 100644 tests/btrfs/025.out

diff --git a/tests/btrfs/025 b/tests/btrfs/025
new file mode 100755
index 0000000..014da19
--- /dev/null
+++ b/tests/btrfs/025
@@ -0,0 +1,125 @@
+#!/bin/bash
+# Btrfs QA test No. 025
+#
+# Check for paired btrfs mount options
+#
+# Regression test for the following btrfs commits
+# 8dd6d2c btrfs: Add treelog mount option.
+# f1eccd3 btrfs: Add datasum mount option.
+# aad3269 btrfs: Add datacow mount option.
+# 22bab74 btrfs: Add acl mount option.
+# 170e45e btrfs: Add noflushoncommit mount option.
+# ce41bc9 btrfs: Add noenospc_debug mount option.
+# f3c639b btrfs: Add nodiscard mount option.
+# 962cbee btrfs: Add noautodefrag mount option.
+# 0b4fa2a btrfs: Add "barrier" option to support "-o remount,barrier"
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2014 Fujitsu, 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"
+
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+PAIRING_OPTIONS="autodefrag noautodefrag discard nodiscard enospc_debug 
noenospc_debug flushoncommit noflushoncommit noacl acl nobarrier barrier nodatacow 
datacow nodatasum datasum notreelog treelog space_cache nospace_cache ssd nossd"
+
+# options that does not show in mount options
+HIDDEN_OPTIONS="noautodefrag nodiscard noenospc_debug noflushoncommit acl barrier 
datacow datasum treelog nossd"
+_cleanup()
+{
+       rm $tmp.running &> /dev/null
+       wait
+       cd /
+       _scratch_unmount &> /dev/null
+}
+
+# check the mount option
+check_mount_opt()
+{
+       mount_point=$1
+       expected_opt=$2
+
+       mount_opt=`cat /proc/mounts | grep $mount_point | cut -d\  -f4`
+       if grep $2 $mount_opt; then
+               _fail "test failed: expected $expected_opt option not shown in mount 
options"
+       fi
+}
+
+# background noise
+start_bgnoise()
+{
+       touch $tmp.running
+       while [ -f "$tmp.running" ]; do
+               run_check $FSSTRESS_PROG -d $SCRATCH_MNT -n 500 -p 4
+               if [ $? != 0 ]; then
+                       _fail "Some error happened executing fsstress when 
remounting"
+               fi
+       done &
+       noise_pid=`jobs -p %1`
+       echo $noise_pid > $tmp.running
+}
+
+stop_bgnoise()
+{
+       pid=`cat $tmp.running`
+       rm $tmp.running
+       wait $pid
+}
+
+# get standard environment, filters
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+
+_need_to_be_root
+_require_scratch
+
+# no need to use the original mount options
+unset MOUNT_OPTIONS
+
+_scratch_mkfs > /dev/null 2>&1
+_scratch_mount
+
+start_bgnoise
+for remount_opt in $PAIRING_OPTIONS; do
+       # Sleep for a while ensuring fsstress to do enough stress
+       sleep 1
+       _remount $SCRATCH_MNT $remount_opt
+       if [ $? != 0 ]; then
+               stop_bgnoise
+               _fail "test failed: $remount_opt not supported"
+       fi
+       if [[ ! $HIDDEN_OPTIONS =~ $remount ]]; then
+               check_mount_opt $SCRATCH_MNT $remount_opt
+                       
+               # Special check for nodatacow
+               if [ $remount_opt == "nodatacow" ]; then
+                       check_mount_opt $SCRATCH_MNT nodatasum
+               fi
+       fi
+done
+stop_bgnoise
+_scratch_unmount || _fail "umount failed"
+echo "Silence is golden"
+status=0; exit
diff --git a/tests/btrfs/025.out b/tests/btrfs/025.out
new file mode 100644
index 0000000..3d70951
--- /dev/null
+++ b/tests/btrfs/025.out
@@ -0,0 +1,2 @@
+QA output created by 025
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 87e7bca..1a4dad8 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -27,3 +27,4 @@
  022 auto
  023 auto
  024 auto quick
+025 auto quick

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


<Prev in Thread] Current Thread [Next in Thread>