On Wed, Aug 25, 2021 at 11:26:30AM +0800, Murphy Zhou wrote: > And followed by a rw mount. After log recovery by these 2 mounts, the > filesystem should be in a consistent state. > > Suggested-by: Donald Douwsma <ddouwsma@xxxxxxxxxx> > Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> > Signed-off-by: Murphy Zhou <xzhou@xxxxxxxxxx> > --- > > Thanks for reviewing! It seems my last several replies from gmail got > rejected by the list. > > v2: > Add explanation of the issue > add xfs_force_bdev data $SCRATCH_MNT > use DF_PROG > Re numbered this test > v3: > Add _require_scratch_shutdown > Use _get_available_space > Explain why does not use _scratch_mount > v4: > Add to recoveryloop group > Move to generic as there is no xfs specific operations > Remove all operations after 2 cycle mounts, let the fsck in fstests to check the filesystem consistency > Use _scratch_shutdown, MOUNT_PROG > Remove unnecessary comments > v5: > Make _xfs_force_bdev xfs only > Use _scratch_mount, it's still reproducible Ok, seems fine now. --D > > > tests/generic/999 | 42 ++++++++++++++++++++++++++++++++++++++++++ > tests/generic/999.out | 2 ++ > 2 files changed, 44 insertions(+) > create mode 100755 tests/generic/999 > create mode 100644 tests/generic/999.out > > diff --git a/tests/generic/999 b/tests/generic/999 > new file mode 100755 > index 00000000..60e0ce59 > --- /dev/null > +++ b/tests/generic/999 > @@ -0,0 +1,42 @@ > +#! /bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (c) 2021 RedHat All Rights Reserved. > +# > +# FS QA Test 999 > +# > +# Testcase for kernel commit: > +# 50d25484bebe xfs: sync lazy sb accounting on quiesce of read-only mounts > +# > +# After shutdown and readonly mount, a following read-write mount would > +# get wrong number of available blocks. This is caused by unmounting the log > +# on a readonly filesystem doesn't log the sb counters. > +# > +. ./common/preamble > +_begin_fstest auto quick recoveryloop shutdown > + > +# real QA test starts here > + > +_require_scratch > +_require_scratch_shutdown > +_scratch_mkfs > $seqres.full 2>&1 > + > +_scratch_mount > +[ "$FSTYP" == "xfs" ] && _xfs_force_bdev data $SCRATCH_MNT > + > +echo Testing > $SCRATCH_MNT/testfile > + > +# -f is required to reproduce the original issue > +_scratch_shutdown -f > + > +_scratch_cycle_mount ro > +_scratch_cycle_mount > + > +# These two mounts should have the log fully recovered. Exit here and let the > +# fsck operation of xfstests to check the consistence of the tested filesystem. > +# On the buggy kernel, this testcase reports filesystem is inconsistent. > +# On the fixed kernel, testcase pass. > + > +# success, all done > +echo "Silence is golden" > +status=0 > +exit > diff --git a/tests/generic/999.out b/tests/generic/999.out > new file mode 100644 > index 00000000..3b276ca8 > --- /dev/null > +++ b/tests/generic/999.out > @@ -0,0 +1,2 @@ > +QA output created by 999 > +Silence is golden > -- > 2.20.1 >