On Fri, 2020-04-17 at 11:36 -0400, Brian Foster wrote: > On Tue, Apr 14, 2020 at 08:07:40AM -0400, Jeff Layton wrote: > > From: Jeff Layton <jlayton@xxxxxxxxxx> > > > > Add a test for new syncfs error reporting behavior. When an inode fails > > to be written back, ensure that a subsequent call to syncfs() will also > > report an error. > > > > Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> > > --- > > tests/generic/999 | 98 +++++++++++++++++++++++++++++++++++++++++++ > > tests/generic/999.out | 8 ++++ > > tests/generic/group | 1 + > > 3 files changed, 107 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 000000000000..7383ce24c8fd > > --- /dev/null > > +++ b/tests/generic/999 > > @@ -0,0 +1,98 @@ > > +#! /bin/bash > > +# FS QA Test No. 999 > > +# > > +# Open a file and write to it and fsync. Then, flip the data device to throw > > +# errors, write to it again and do an fdatasync. Then open an O_RDONLY fd on > > +# the same file and call syncfs against it and ensure that an error is reported. > > +# Then call syncfs again and ensure that no error is reported. Finally, repeat > > +# the open and syncfs and ensure that there is no error reported. > > +# > > +#----------------------------------------------------------------------- > > +# Copyright (c) 2020, Jeff Layton <jlayton@xxxxxxxxxx> > > +# > > +# 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 > > +#----------------------------------------------------------------------- > > I think the big copyright hunk has been replaced with the > SPDX-License-Identifier thing (see other tests for reference). > Thanks. Will fix. > > + > > +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.* > > + _dmerror_cleanup > > +} > > + > > +# get standard environment, filters and checks > > +. ./common/rc > > +. ./common/filter > > +. ./common/dmerror > > + > > +# real QA test starts here > > +_supported_os Linux > > +_require_scratch_nocheck > > +# This test uses "dm" without taking into account the data could be on > > +# realtime subvolume, thus the test will fail with rtinherit=1 > > +_require_no_rtinherit > > +_require_dm_target error > > + > > +rm -f $seqres.full > > + > > +echo "Format and mount" > > +_scratch_mkfs > $seqres.full 2>&1 > > +_dmerror_init > > +_dmerror_mount > > + > > +datalen=65536 > > +_require_fs_space $SCRATCH_MNT $datalen > > That seems unnecessary for such a small value. BTW, any reason this > needs to write more than a page? > No reason for that size. I think I just copied that from generic/487 since I started with that one as a template. I'll cut it down to a page. Should I not bother calling _require_fs_space here since it's so small? I wasn't sure how strict that was... > > + > > +# use fd 5 to hold file open > > +testfile=$SCRATCH_MNT/syncfs-reports-errors > > +exec 5>$testfile > > + > > Also what's the reason for holding an fd on the test file like this? > Does this affect error reporting behavior in some way? Otherwise the > rest looks reasonable to me. > Again, copied from 487. It's not necessary for this test. I'll switch that to just "touch testfile" at the start and get rid of the follow-on close. Thanks for the review! -- Jeff Layton <jlayton@xxxxxxxxxx>