ext2/3/4 was sign-extending times before the timestamp when read from disk on 64-bit systems. This was fixed by: 4d7bf11d649c72621ca31b8ea12b9c94af380e63 ext2/3/4: fix file date underflow on ext2 3 filesystems on 64 bit systems Here's a generic regression test. Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> --- diff --git a/257 b/257 new file mode 100644 index 0000000..e837bef --- /dev/null +++ b/257 @@ -0,0 +1,68 @@ +#! /bin/bash +# FS QA Test No. 257 +# +# Test timestamps prior to epoch +# On 64-bit, ext2/3/4 was sign-extending when read from disk +# See also commit 4d7bf11d649c72621ca31b8ea12b9c94af380e63 +# +#----------------------------------------------------------------------- +# Copyright (c) 2011 Red Hat, Inc. All Rights Reserved. +# +# 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=sandeen@xxxxxxxxxx + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc + +# real QA test starts here +_supported_fs generic +_supported_os Linux + +TESTFILE=$TEST_DIR/timestamp-test.txt + +# Create a file with a timestamp prior to the epoch +echo "Creating file with timestamp of Jan 1, 1960" +touch -t 196001010101 $TESTFILE +# Should yield -315593940 (prior to epoch) +echo -n "Stat of file yields: " +stat -c %X $TESTFILE + +# unmount, remount, and check the timestamp +echo "Remounting to flush cache" +umount $TEST_DEV +mount $TEST_DEV $TEST_DIR + +# Should yield -315593940 (prior to epoch) +echo -n "Stat of file yields: " +stat -c %X $TESTFILE + +status=0 ; exit diff --git a/257.out b/257.out new file mode 100644 index 0000000..c584b70 --- /dev/null +++ b/257.out @@ -0,0 +1,5 @@ +QA output created by 257 +Creating file with timestamp of Jan 1, 1960 +Stat of file yields: -315593940 +Remounting to flush cache +Stat of file yields: -315593940 diff --git a/group b/group index 0c746c8..84c45da 100644 --- a/group +++ b/group @@ -370,3 +370,4 @@ deprecated 254 auto quick 255 auto quick prealloc 256 auto quick +257 auto quick _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs