xfs
[Top] [All Lists]

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

To: xfs@xxxxxxxxxxx
Subject: [PATCH] xfstests: add test 215: c/mtime updates through mapped writes
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Sat, 4 Jul 2009 14:27:42 -0400
User-agent: Mutt/1.5.18 (2008-05-17)
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>

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
+
+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
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
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

<Prev in Thread] Current Thread [Next in Thread>