All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Theodore Ts'o" <tytso@mit.edu>
To: fstests@vger.kernel.org
Cc: hughd@google.com, Junho Ryu <jayr@google.com>
Subject: [PATCH-v3a 09/16] xfstests: do not unmount tmpfs during remount
Date: Tue, 16 Feb 2016 01:43:48 -0500	[thread overview]
Message-ID: <20160216064348.GC3426@thunk.org> (raw)
In-Reply-To: <1455385269-26319-10-git-send-email-tytso@mit.edu>

I screwed up the test generic/135 in the previous version of the
commit.  Here is a revised version, which avoids an EBUSY due to CWD
being in SCRATCH_MNT when we attempted to unmount it.

      	 	     	     	       	  	  - Ted

>From a46e47d549f0d43f6c32f54e89817cc1a602b9bf Mon Sep 17 00:00:00 2001
From: Junho Ryu <jayr@google.com>
Date: Wed, 18 Dec 2013 10:16:01 -0800
Subject: [PATCH] xfstests: do not unmount tmpfs during remount

Several tests unmount then re-mount the scratch filesystem, to check
that the content is unchanged; but unmounting a tmpfs is designed to
lose its content, which causes such tests to fail unnecessarily.

Signed-off-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Junho Ryu <jayr@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
---
 common/rc             | 23 ++++++++++++++++++++++-
 tests/generic/003     | 20 ++++++++------------
 tests/generic/135     | 19 +++++--------------
 tests/generic/169     | 20 ++++++--------------
 tests/generic/169.out |  6 ++----
 tests/generic/192     |  3 +--
 tests/generic/226     |  3 +--
 tests/generic/258     |  3 +--
 tests/generic/306     |  3 +--
 tests/generic/317     |  3 +--
 tests/generic/318     |  3 +--
 11 files changed, 49 insertions(+), 57 deletions(-)

diff --git a/common/rc b/common/rc
index 18d1a00..42415a7 100644
--- a/common/rc
+++ b/common/rc
@@ -329,10 +329,28 @@ _scratch_unmount()
 	esac
 }
 
+_scratch_remount()
+{
+    local opts="$1"
+
+    if test -n "$opts"; then
+	mount -o "remount,$opts" $SCRATCH_MNT
+    fi
+}
+
 _scratch_cycle_mount()
 {
+    local opts="$1"
+
+    if [ "$FSTYP" = tmpfs ]; then
+	_scratch_remount "$opts"
+	return
+    fi
+    if test -n "$opts"; then
+	opts="-o $opts"
+    fi
     _scratch_unmount
-    _scratch_mount
+    _scratch_mount "$opts"
 }
 
 _test_mount()
@@ -356,6 +374,9 @@ _test_unmount()
 
 _test_cycle_mount()
 {
+    if [ "$FSTYP" = tmpfs ]; then
+	return
+    fi
     _test_unmount
     _test_mount
 }
diff --git a/tests/generic/003 b/tests/generic/003
index 7ffd09a..710ffc8 100755
--- a/tests/generic/003
+++ b/tests/generic/003
@@ -107,9 +107,8 @@ file1_stat_after_second_access=`_stat $TPATH/dir1/file1`
 _compare_stat_times NNN "$file1_stat_after_first_access" \
 	"$file1_stat_after_second_access" "after accessing file1 second time"
 
-# Remounting with nodiratime option
-_scratch_unmount
-_scratch_mount "-o nodiratime"
+# Mounting with nodiratime option
+_scratch_cycle_mount "nodiratime"
 file1_stat_after_remount=`_stat $TPATH/dir1/file1`
 _compare_stat_times NNN "$file1_stat_after_second_access" \
 	"$file1_stat_after_remount" "for file1 after remount"
@@ -134,9 +133,8 @@ dir2_stat_after_file_access=`_stat $TPATH/dir2`
 _compare_stat_times NNN "$dir2_stat_after_file_creation" \
 	"$dir2_stat_after_file_access" "for dir2 after file access"
 
-# Remounting with noatime option, creating a file and accessing it
-_scratch_unmount
-_scratch_mount "-o noatime"
+# Mounting with noatime option, creating a file and accessing it
+_scratch_cycle_mount "noatime"
 echo "ccc" > $TPATH/dir2/file3
 file3_stat_before_first_access=`_stat $TPATH/dir2/file3`
 sleep 1
@@ -158,10 +156,9 @@ file1_stat_after_change=`_stat $TPATH/dir1/file1_renamed`
 _compare_stat_times NNY "$file1_stat_after_modify" \
 	"$file1_stat_after_change" "after changing file1"
 
-# Remounting with strictatime option and
+# Mounting with strictatime option and
 # accessing a previously created file twice
-_scratch_unmount
-_scratch_mount "-o strictatime"
+_scratch_cycle_mount "strictatime"
 cat $TPATH/dir2/file3 > /dev/null
 file3_stat_after_second_access=`_stat $TPATH/dir2/file3`
 _compare_stat_times YNN "$file3_stat_after_first_access" \
@@ -189,13 +186,12 @@ if [ "$FSTYP" = "btrfs" ]; then
 		"$file3_stat_readonly_after_access" "for file in readonly subvol"
 fi
 
-# Remounting read-only. Access time should never be updated, despite the
+# Mounting read-only. Access time should never be updated, despite the
 # strictatime mount option.
 sleep 1
 dir2_stat_before_ro_mount=`_stat $TPATH/dir2`
 file3_stat_before_ro_mount=`_stat $TPATH/dir2/file3`
-_scratch_unmount
-_scratch_mount "-o ro,strictatime"
+_scratch_cycle_mount "ro,strictatime"
 ls $TPATH/dir2 > /dev/null
 cat $TPATH/dir2/file3 > /dev/null
 dir2_stat_after_ro_mount=`_stat $TPATH/dir2`
diff --git a/tests/generic/135 b/tests/generic/135
index 4400672..52418f6 100755
--- a/tests/generic/135
+++ b/tests/generic/135
@@ -41,19 +41,8 @@ _supported_os Linux IRIX
 
 _require_odirect
 _require_scratch
-_scratch_mkfs >/dev/null 2>&1
-
-_umount_mount()
-{
-    CWD=`pwd`
-    cd /
-    # pipe error into /dev/null, in case not mounted (after _require_scratch)
-    _scratch_unmount 2>/dev/null
-    _scratch_mount
-    cd "$CWD"
-}
-
-_umount_mount
+_scratch_mkfs >/dev/null
+_scratch_mount
 
 cd $SCRATCH_MNT
 
@@ -71,7 +60,9 @@ $XFS_IO_PROG -f -c 'pwrite -b 4k -S 0x78 0 4k' trunc_file > /dev/null
 $XFS_IO_PROG -f -c 'truncate 2k' trunc_file > /dev/null
 $XFS_IO_PROG -c 'pwrite 1k 0 1k' trunc_file > /dev/null
 
-_umount_mount
+pushd / > /dev/null
+_scratch_cycle_mount
+popd > /dev/null
 
 # check file size and contents
 od -Ad -x async_file
diff --git a/tests/generic/169 b/tests/generic/169
index 839ff9d..f51f4d1 100755
--- a/tests/generic/169
+++ b/tests/generic/169
@@ -73,13 +73,9 @@ $XFS_IO_PROG -a -c "pwrite 0 5k" -c "fsync" \
 	$SCRATCH_MNT/testfile \
 	| _show_wrote_and_stat_only
 
-echo "# unmounting scratch"
-_scratch_unmount>>$seqres.full 2>&1 \
-    || _fail "unmount failed"
-
-echo "# mounting scratch"
-_scratch_mount >>$seqres.full 2>&1 \
-    || _fail "mount failed: $MOUNT_OPTIONS"
+echo "# remounting scratch"
+_scratch_cycle_mount >>$seqres.full 2>&1 \
+    || _fail "remount failed: $MOUNT_OPTIONS"
 
 echo "# stating file to confirm correct size"
 $XFS_IO_PROG -r -c "stat" $SCRATCH_MNT/testfile \
@@ -90,13 +86,9 @@ $XFS_IO_PROG -f -c "pwrite 0 5" -c s -c "pwrite 5 5" \
 	-c "stat" $SCRATCH_MNT/nextfile \
 	| _show_wrote_and_stat_only
 
-echo "# unmounting scratch"
-_scratch_unmount>>$seqres.full 2>&1 \
-    || _fail "unmount failed"
-
-echo "# mounting scratch"
-_scratch_mount >>$seqres.full 2>&1 \
-    || _fail "mount failed: $MOUNT_OPTIONS"
+echo "# remounting scratch"
+_scratch_cycle_mount >>$seqres.full 2>&1 \
+    || _fail "remount failed: $MOUNT_OPTIONS"
 
 echo "# stating file to confirm correct size"
 $XFS_IO_PROG -r -c "stat" $SCRATCH_MNT/nextfile \
diff --git a/tests/generic/169.out b/tests/generic/169.out
index 22a5b77..5f7df39 100644
--- a/tests/generic/169.out
+++ b/tests/generic/169.out
@@ -5,15 +5,13 @@ wrote 5120/5120 bytes at offset 0
 wrote 5120/5120 bytes at offset 5120
 wrote 5120/5120 bytes at offset 10240
 stat.size = 15360
-# unmounting scratch
-# mounting scratch
+# remounting scratch
 # stating file to confirm correct size
 stat.size = 15360
 # appending 10 bytes to new file, sync at 5 bytes
 wrote 5/5 bytes at offset 0
 wrote 5/5 bytes at offset 5
 stat.size = 10
-# unmounting scratch
-# mounting scratch
+# remounting scratch
 # stating file to confirm correct size
 stat.size = 10
diff --git a/tests/generic/192 b/tests/generic/192
index ebabea2..6bbc87c 100755
--- a/tests/generic/192
+++ b/tests/generic/192
@@ -78,8 +78,7 @@ cat $testfile
 time2=`_access_time $testfile | tee -a $seqres.full`
 
 cd /
-_test_unmount
-_test_mount
+_test_cycle_mount
 time3=`_access_time $testfile | tee -a $seqres.full`
 
 delta1=`expr $time2 - $time1`
diff --git a/tests/generic/226 b/tests/generic/226
index b12965a..a099ec6 100755
--- a/tests/generic/226
+++ b/tests/generic/226
@@ -61,8 +61,7 @@ for I in `seq 1 $loops`; do
 done
 
 echo
-_scratch_unmount
-_scratch_mount
+_scratch_cycle_mount
 
 echo "--> $loops direct 64m writes in a loop"
 for I in `seq 1 $loops`; do
diff --git a/tests/generic/258 b/tests/generic/258
index 285a422..d28437f 100755
--- a/tests/generic/258
+++ b/tests/generic/258
@@ -62,8 +62,7 @@ fi
 
 # unmount, remount, and check the timestamp
 echo "Remounting to flush cache"
-_test_unmount
-_test_mount
+_test_cycle_mount
 
 # Should yield -315593940 (prior to epoch)
 echo "Testing for negative seconds since epoch"
diff --git a/tests/generic/306 b/tests/generic/306
index 64d8cde..86fd829 100755
--- a/tests/generic/306
+++ b/tests/generic/306
@@ -67,8 +67,7 @@ touch $BINDFILE || _fail "Could not create bind mount file"
 touch $TARGET || _fail "Could not create symlink target"
 ln -s $TARGET $SYMLINK
 
-_scratch_unmount || _fail "Could not unmount scratch device"
-_scratch_mount -o ro || _fail "Could not mount scratch readonly"
+_scratch_remount ro || _fail "Could not remount scratch readonly"
 
 # We should be able to read & write to/from these devices even on an RO fs
 echo "== try to create new file"
diff --git a/tests/generic/317 b/tests/generic/317
index 68f231c..a5d8804 100755
--- a/tests/generic/317
+++ b/tests/generic/317
@@ -96,8 +96,7 @@ echo ""
 echo "*** Remounting ***"
 echo ""
 sync
-_scratch_unmount >>$seqres.full 2>&1
-_scratch_mount      >>$seqres.full 2>&1 || _fail "mount failed"
+_scratch_cycle_mount      >>$seqres.full 2>&1 || _fail "remount failed"
 
 _print_numeric_uid
 
diff --git a/tests/generic/318 b/tests/generic/318
index c730b50..f850a9b 100755
--- a/tests/generic/318
+++ b/tests/generic/318
@@ -109,8 +109,7 @@ _print_getfacls
 echo "*** Remounting ***"
 echo ""
 sync
-_scratch_unmount >>$seqres.full 2>&1
-_scratch_mount      >>$seqres.full 2>&1 || _fail "mount failed"
+_scratch_cycle_mount      >>$seqres.full 2>&1 || _fail "remount failed"
 
 _print_getfacls
 
-- 
2.5.0


  reply	other threads:[~2016-02-16  6:43 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-13 17:40 [PATCH-v3 00/16] tmpfs and other misc fixups for xfstests Theodore Ts'o
2016-02-13 17:40 ` [PATCH 01/16] ext4/001: add output variant for nodelalloc mounts Theodore Ts'o
2016-02-17  9:58   ` Christoph Hellwig
2016-02-13 17:40 ` [PATCH 02/16] check: avoid spurious complaints that tests/$FSTYP/group does not exist Theodore Ts'o
2016-02-17  9:59   ` Christoph Hellwig
2016-02-13 17:40 ` [PATCH 03/16] common: _scratch_mkfs_sized() for tmpfs Theodore Ts'o
2016-02-17  9:59   ` Christoph Hellwig
2016-02-13 17:40 ` [PATCH 04/16] generic: use mount point instead of device name Theodore Ts'o
2016-02-17 10:00   ` Christoph Hellwig
2016-02-13 17:40 ` [PATCH 05/16] generic: remove the generic/125 test Theodore Ts'o
2016-02-17 10:03   ` Christoph Hellwig
2016-02-21 21:52     ` Dave Chinner
2016-02-22  7:36       ` Christoph Hellwig
2016-02-13 17:40 ` [PATCH 06/16] generic: add _require_odirect to generic/113 and generic/214 Theodore Ts'o
2016-02-17 10:03   ` Christoph Hellwig
2016-02-13 17:41 ` [PATCH 07/16] Rename _scratch_mount to _scratch_cycle_mount Theodore Ts'o
2016-02-13 17:41 ` [PATCH 08/16] Rename _test_mount to _test_cycle_mount Theodore Ts'o
2016-02-13 17:41 ` [PATCH 09/16] xfstests: do not unmount tmpfs during remount Theodore Ts'o
2016-02-16  6:43   ` Theodore Ts'o [this message]
2016-02-17  3:05     ` [PATCH-v3b " Theodore Ts'o
2016-02-13 17:41 ` [PATCH 10/16] generic: do not unmount before calling _check_scratch_fs() Theodore Ts'o
2016-02-13 17:41 ` [PATCH 11/16] generic: require fiemap for generic/009 Theodore Ts'o
2016-02-17 10:04   ` Christoph Hellwig
2016-02-13 17:41 ` [PATCH 12/16] xfstests: remove dependency on /proc/partitions for generic/312 Theodore Ts'o
2016-02-17 10:06   ` Christoph Hellwig
2016-02-17 10:36     ` Eryu Guan
2016-02-13 17:41 ` [PATCH 13/16] xfstests: generic/079 and generic/277 requires chattr, not xattrs Theodore Ts'o
2016-02-17 10:06   ` Christoph Hellwig
2016-02-13 17:41 ` [PATCH 14/16] xfstests: add executable permission to tests Theodore Ts'o
2016-02-17 10:07   ` Christoph Hellwig
2016-02-13 17:41 ` [PATCH 15/16] xfstests: increase tmpfs memory size Theodore Ts'o
2016-02-17 10:08   ` Christoph Hellwig
2016-02-13 17:41 ` [PATCH 16/16] xfstests: remove _need_to_be_root Theodore Ts'o
2016-02-17 10:09   ` Christoph Hellwig
2016-02-17 12:22     ` Dave Chinner

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=20160216064348.GC3426@thunk.org \
    --to=tytso@mit.edu \
    --cc=fstests@vger.kernel.org \
    --cc=hughd@google.com \
    --cc=jayr@google.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.