[PATCH] xfstests: add test 215: c/mtime updates through mapped writes

Eric Sandeen sandeen at sandeen.net
Mon Jul 6 23:01:16 CDT 2009


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 at lst.de>

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 at lst.de
> +
> +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 at oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs
> 




More information about the xfs mailing list