xfs: test mount vs superblock shrinker races
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
@@ -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
@@ -0,0 +1,2 @@ +QA output created by 451 +Silence is golden
tests/xfs/group +1 -0
@@ -443,3 +443,4 @@ 444 auto quick 445 auto quick filestreams 450 auto quick +451 auto mount
Signature · 1 line
2.17.0
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.
Signed-off-by Dave Chinner <[email protected]>--- 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.outtests/xfs/451 new file +72
-0@@ -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 +exittests/xfs/451.out new file +2
-0@@ -0,0 +1,2 @@ +QA output created by 451 +Silence is goldentests/xfs/group +0
-0
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.
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.
Signed-off-by Dave Chinner <[email protected]> ---
...
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]