Christoph Hellwig wrote:
> Check that we correctly update the timestamps when writing to a file
> through an mmap mapping. Currently fails for XFS due a VFS bug but
> succeeds for many other filesystems.
>
>
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Test seems mostly ok, but aren't you missing 215.out in the patch?
couple comments below
> Index: xfstests-dev/215
> ===================================================================
> --- /dev/null 1970-01-01 00:00:00.000000000 +0000
> +++ xfstests-dev/215 2009-07-04 18:25:43.000000000 +0000
> @@ -0,0 +1,87 @@
> +#! /bin/sh
> +# FS QA Test No. 215
> +#
> +# Test out c/mtime updates after mapped writes.
> +#
> +# Based on the testcase in http://bugzilla.kernel.org/show_bug.cgi?id=2645
> +#
> +#-----------------------------------------------------------------------
> +# Copyright (c) 2009 Christoph Hellwig.
> +#
> +# 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
> +#-----------------------------------------------------------------------
> +#
> +# creator
> +owner=hch@xxxxxx
> +
> +seq=`basename $0`
> +echo "QA output created by $seq"
> +
> +_cleanup()
> +{
> + cd /
> + rm -f $testfile
> +}
> +
> +here=`pwd`
> +tmp=/tmp/$$
> +status=1 # failure is the default!
> +trap "_cleanup; exit \$status" 0 1 2 3 15
> +
> +# get standard environment, filters and checks
> +. ./common.rc
> +. ./common.filter
> +
> +# real QA test starts here
> +_supported_fs generic
> +_supported_os Linux
> +
> +testfile=$TEST_DIR/tst.mmap
> +
> +echo
> +echo "creating test file"
> +dd if=/dev/zero of=$testfile count=4096
> +
> +mtime1=`stat --printf="%Y" $testfile`
> +ctime1=`stat --printf="%Z" $testfile`
> +
> +sleep 1
Is there any slight chance a sleep 1 won't catch it? Would sleep 2 do
better to be sure?
> +echo
> +echo "writing via mmap"
> +$XFS_IO_PROG -F -f \
> + -c 'mmap 0 4096' \
> + -c 'mwrite 0 4096' \
> + $testfile | _filter_xfs_io_unique
> +
> +mtime2=`stat --printf="%Y" $testfile`
> +ctime2=`stat --printf="%Z" $testfile`
> +
> +let mtime_diff=$mtime2-$mtime1
> +let ctime_diff=$ctime2-$ctime1
> +
> +if [ "$mtime_diff" -eq "0" ]; then
> + echo "FAIL: mtime not update after mapped write"
> + status=1
> +fi
> +
> +if [ "$ctime_diff" -eq "0" ]; then
> + echo "FAIL: ctime not update after mapped write"
> + status=1
> +fi
Should these just be _fail calls? Otherwise...
> +# success, all done
> +echo "*** done"
> +rm -f $seq.full
> +status=0
don't you always exit w/ status 0 and remove the full output?
I guess i'm not sure when to use _fail and when to let the golden output
difference kill the test, I suppose it doesn't much matter, it should
pass & fail correctly either way.
-Eric
> Index: xfstests-dev/group
> ===================================================================
> --- xfstests-dev.orig/group 2009-07-04 18:07:40.000000000 +0000
> +++ xfstests-dev/group 2009-07-04 18:07:55.000000000 +0000
> @@ -323,3 +323,4 @@
> 212 auto aio quick
> 213 rw auto prealloc quick
> 214 rw auto prealloc quick
> +215 auto metadata quick
>
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs
>
|