On Mon, Apr 20, 2020 at 07:33:27AM -0400, Jeff Layton wrote: > 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... > I'm not sure there's a rule for when to use it or not (it's probably just up to Eryu's preference), but yeah, it's probably overkill for a test that's only writing a handful of pages. Brian > > > + > > > +# 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> >