xfstests: test timestamps before the epoch
PATCH 1/1 xfstests: test timestamps before the epoch
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.
---
257 new file +68 -0
@@ -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 [email protected] + +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
257.out new file +5 -0
@@ -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
group +1 -0
@@ -370,3 +370,4 @@ deprecated 254 auto quick 255 auto quick prealloc 256 auto quick +257 auto quick
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 9 lines · Eric Sandeen
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 systemsHere's a generic regression test.
Signed-off-by Eric Sandeen <[email protected]>
Looks good,
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 9 lines · Eric Sandeen
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 systemsHere's a generic regression test.
Signed-off-by Eric Sandeen <[email protected]>
Looks good.
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
This one actually ends up failing on XFS for me:
@@ -1,5 +1,5 @@
QA output created by 258
Creating file with timestamp of Jan 1, 1960
-Stat of file yields: -315593940
+Stat of file yields: -315615540
Remounting to flush cache
-Stat of file yields: -315593940
+Stat of file yields: -315615540
Note that we still get the same for both, it just seems XFS rounds it a bit different.
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 11 lines · Christoph Hellwig
This one actually ends up failing on XFS for me:
(quoted diff) +0
-0@@ -1,5 +1,5 @@ QA output created by 258 Creating file with timestamp of Jan 1, 1960 -Stat of file yields: -315593940 +Stat of file yields: -315615540 Remounting to flush cache-Stat of file yields: -315593940
+Stat of file yields: -315615540
Quoted 2 lines
Note that we still get the same for both, it just seems XFS rounds it a bit different.
I haven't seen this one fail. Must have to do with some FS configuration options (like blocksize or something).
-Alex
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 12 lines · Alex Elder
Quoted 11 lines · Christoph Hellwig
This one actually ends up failing on XFS for me:
(quoted diff) +0
-0@@ -1,5 +1,5 @@ QA output created by 258 Creating file with timestamp of Jan 1, 1960 -Stat of file yields: -315593940 +Stat of file yields: -315615540 Remounting to flush cache-Stat of file yields: -315593940
+Stat of file yields: -315615540
Quoted 2 lines
Quoted 2 lines
Note that we still get the same for both, it just seems XFS rounds it a bit different.
Hrm. Should we just test to be sure the timestamp is negative? The sign extension is the real error, so as long as it's not positive it's probably OK.
-Eric
Quoted 7 lines
I haven't seen this one fail. Must have to do with some FS configuration options (like blocksize or something).
-Alex
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 13 lines · Eric Sandeen
Quoted 12 lines · Alex Elder
Quoted 11 lines · Christoph Hellwig
This one actually ends up failing on XFS for me:
(quoted diff) +0
-0@@ -1,5 +1,5 @@ QA output created by 258 Creating file with timestamp of Jan 1, 1960 -Stat of file yields: -315593940 +Stat of file yields: -315615540 Remounting to flush cache-Stat of file yields: -315593940
+Stat of file yields: -315615540
Quoted 6 lines
Quoted 2 lines
Quoted 2 lines
Note that we still get the same for both, it just seems XFS rounds it a bit different.
Hrm. Should we just test to be sure the timestamp is negative? The sign extension is the real error, so as long as it's not positive it's probably OK.
Probably. This is on a 32-bit userspae, I guess that's why I see different results from Alex.
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 21 lines · Christoph Hellwig
Quoted 13 lines · Eric Sandeen
Quoted 12 lines · Alex Elder
Quoted 11 lines · Christoph Hellwig
This one actually ends up failing on XFS for me:
(quoted diff) +0
-0@@ -1,5 +1,5 @@ QA output created by 258 Creating file with timestamp of Jan 1, 1960 -Stat of file yields: -315593940 +Stat of file yields: -315615540 Remounting to flush cache-Stat of file yields: -315593940
+Stat of file yields: -315615540Quoted 6 lines
Quoted 2 lines
Quoted 2 lines
Note that we still get the same for both, it just seems XFS rounds it a bit different.
Hrm. Should we just test to be sure the timestamp is negative? The sign extension is the real error, so as long as it's not positive it's probably OK.
Quoted 3 lines
Probably. This is on a 32-bit userspae, I guess that's why I see different results from Alex.
could it be kernel clock resolution?
Anyway, I'll see about changing it to just check for negative nrs.
-Eric
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs