Skip to contentSkip to conversation

xfs: test mount vs superblock shrinker races

PATCH In review Dave Chinner 2 participants 3 messages May 11, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 xfs: test mount vs superblock shrinker races

From: Dave Chinner <[email protected]>

Test case for superblock shrinkers running while the filesystem is being set up and/or torn down and tripping over inconsistent state.

---
 tests/xfs/451     | 72 +++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/451.out |  2 ++
 tests/xfs/group   |  1 +
 3 files changed, 75 insertions(+)
 create mode 100755 tests/xfs/451
 create mode 100644 tests/xfs/451.out
tests/xfs/451 new file +72 -0
new file mode 100755
index 000000000000..d8a4a5b93bf3
@@ -0,0 +1,72 @@
+#! /bin/bash
+# FS QA Test 451
+#
+# Exercise mount vs superblock shrinker races.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2018 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.*
+	echo 0 > /sys/fs/xfs/debug/mount_delay
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# remove previous $seqres.full before test
+rm -f $seqres.full
+
+# real QA test starts here
+
+_supported_fs xfs
+_supported_os Linux
+
+_require_scratch
+_require_xfs_sysfs debug/mount_delay
+
+echo "Silence is golden"
+
+_scratch_mkfs > $seqres.full 2>&1
+_scratch_mount
+
+$XFS_IO_PROG -fxc "pwrite 0 4k" -c fsync \
+		-c "shutdown" $SCRATCH_MNT/foo 2>&1 > /dev_null
+
+_scratch_unmount
+
+echo 30 > /sys/fs/xfs/debug/mount_delay
+_scratch_mount
+echo 0 > /sys/fs/xfs/debug/mount_delay
+_scratch_unmount
+
+# success, all done
+status=0
+exit
tests/xfs/451.out new file +2 -0
new file mode 100644
index 000000000000..db924411b72f
@@ -0,0 +1,2 @@
+QA output created by 451
+Silence is golden
tests/xfs/group +1 -0
index 2a7f5eb68e82..72f65b6aff0a 100644
@@ -443,3 +443,4 @@
 444 auto quick
 445 auto quick filestreams
 450 auto quick
+451 auto mount
Signature · 1 line
2.17.0
#1 lore raw
Quoted 105 lines · Dave Chinner

From: Dave Chinner <[email protected]>

Test case for superblock shrinkers running while the filesystem is being set up and/or torn down and tripping over inconsistent state.

---
 tests/xfs/451     | 72 +++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/451.out |  2 ++
 tests/xfs/group   |  1 +
 3 files changed, 75 insertions(+)
 create mode 100755 tests/xfs/451
 create mode 100644 tests/xfs/451.out
tests/xfs/451 new file +72 -0
new file mode 100755
index 000000000000..d8a4a5b93bf3
@@ -0,0 +1,72 @@
+#! /bin/bash
+# FS QA Test 451
+#
+# Exercise mount vs superblock shrinker races.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2018 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.*
+       echo 0 > /sys/fs/xfs/debug/mount_delay
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# remove previous $seqres.full before test
+rm -f $seqres.full
+
+# real QA test starts here
+
+_supported_fs xfs
+_supported_os Linux
+
+_require_scratch
+_require_xfs_sysfs debug/mount_delay
+
+echo "Silence is golden"
+
+_scratch_mkfs > $seqres.full 2>&1
+_scratch_mount
+
+$XFS_IO_PROG -fxc "pwrite 0 4k" -c fsync \
+               -c "shutdown" $SCRATCH_MNT/foo 2>&1 > /dev_null
+
+_scratch_unmount
+
+echo 30 > /sys/fs/xfs/debug/mount_delay
+_scratch_mount
+echo 0 > /sys/fs/xfs/debug/mount_delay
+_scratch_unmount
+
+# success, all done
+status=0
+exit
tests/xfs/451.out new file +2 -0
new file mode 100644
index 000000000000..db924411b72f
@@ -0,0 +1,2 @@
+QA output created by 451
+Silence is golden
tests/xfs/group +0 -0
index 2a7f5eb68e82..72f65b6aff0a 100644

tests/xfs/group line 446

Quoted 4 lines
tests/xfs/group +1 -0
@@ -443,3 +443,4 @@
 444 auto quick
 445 auto quick filestreams
 450 auto quick
+451 auto mount

Isn't it dangerous for the time being? Your fix commit message says you got reports of OOPS.
Not sure what should be the authoritative condition to remove dangerous point kernel release with a fix??

Thanks,
Amir.

#2 lore raw
Quoted 9 lines · Amir Goldstein
Quoted 7 lines · Dave Chinner

From: Dave Chinner <[email protected]>

Test case for superblock shrinkers running while the filesystem is being set up and/or torn down and tripping over inconsistent state.

...

Quoted 3 lines

Isn't it dangerous for the time being? Your fix commit message says you got reports of OOPS.

If you have a kernel with the mount_delay sysfs option, you will have a kernel with the fix. If you don't have mount_delay, the test won't run.

Quoted 2 lines

Not sure what should be the authoritative condition to remove dangerous point kernel release with a fix??

I'm not going to add "dangerous" to new regression tests that have a fix pending anymore because nobody is doing maintenance tasks like sweeping out tests that aren't dangerous to upstream. Tagging new regression tests as dangerous just creates unnecessary technical debt.

Cheers,

Dave.

Signature · 2 lines
Dave Chinner
[email protected]