On Tue, Aug 24, 2021 at 01:04:36PM +0800, Murphy Zhou wrote: > And followed by a rw mount. > > Suggested-by: Donald Douwsma <ddouwsma@xxxxxxxxxx> > Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> > Signed-off-by: Murphy Zhou <xzhou@xxxxxxxxxx> > --- > > Thanks Darrick very much for reviewing! > > v2: > Add explaination 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 > > tests/xfs/999 | 65 +++++++++++++++++++++++++++++++++++++++++++++++ > tests/xfs/999.out | 2 ++ > 2 files changed, 67 insertions(+) > create mode 100755 tests/xfs/999 > create mode 100644 tests/xfs/999.out > > diff --git a/tests/xfs/999 b/tests/xfs/999 > new file mode 100755 > index 00000000..0ce9989b > --- /dev/null > +++ b/tests/xfs/999 > @@ -0,0 +1,65 @@ > +#! /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 shutdown auto quick Is this also a 'recoveryloop' test that excrises shutdown & log recovery? > + > +# real QA test starts here > + > +_supported_fs xfs > +_require_scratch > +_require_scratch_shutdown > + > +_scratch_mkfs > $seqres.full 2>&1 > +# Don't use _scratch_mount because we need to mount without SELinux context > +# to reproduce this issue. If we mount with SELinux context, this testcase > +# is not reproducing the original issue. > +mount $SCRATCH_DEV $SCRATCH_MNT $MOUNT_PROG > +_xfs_force_bdev data $SCRATCH_MNT > + > +# Write test file > +ls > $SCRATCH_MNT/testfile I'd like write something into file explicitly, the output of ls command may change in subtle way, e.g. iif we decide to run fstests with an empty dir as $PWD in the future, then we write nothing into the file. > +$DF_PROG $SCRATCH_MNT >> $seqres.full 2>&1 > + > +# Shutdown > +$XFS_IO_PROG -x -c "shutdown -f" $SCRATCH_MNT Does '_scratch_shutdown -f' work here? > + > +# Mount ReadOnly > +_scratch_unmount > +_scratch_mount -oro _scratch_cycle_mount ro > +$DF_PROG $SCRATCH_MNT >> $seqres.full 2>&1 > +# Umount and mount rw > +_scratch_unmount > +_scratch_mount _scratch_cycle_mount > + > +# Get fdblocks before repair > +fdb1=$(_get_available_space $SCRATCH_MNT) > +_scratch_unmount > + > +# Repair I find these "Mount ReadOnly" "Umount and mount rw" "Repair" comments don't really help, they just describe what we're doing (which are obvious in this test) not why we're doing it. It's better to describe the reason of doing this repair. Thanks, Eryu > +_repair_scratch_fs >> $seqres.full 2>&1 > + > +# Re-mount > +_scratch_mount > + > +# Get fdblocks after repair > +fdb2=$(_get_available_space $SCRATCH_MNT) > + > +echo fdb1 $fdb1 fdb2 $fdb2 >> $seqres.full 2>&1 > + > +[ $fdb1 -ne $fdb2 ] && echo Wrong fdblocks: $fdb1 and $fdb2 > + > +# success, all done > +echo "Silence is golden" > +status=0 > +exit > diff --git a/tests/xfs/999.out b/tests/xfs/999.out > new file mode 100644 > index 00000000..3b276ca8 > --- /dev/null > +++ b/tests/xfs/999.out > @@ -0,0 +1,2 @@ > +QA output created by 999 > +Silence is golden > -- > 2.20.1