Skip to contentSkip to conversation

xfstests: test timestamps before the epoch

PATCH In review Eric Sandeen 3 participants 8 messages Sep 19, 2011 – Sep 26, 2011

lore
Share & tools
lore
#0 lore raw

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
new file mode 100644
index 0000000..e837bef
@@ -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
new file mode 100644
index 0000000..c584b70
@@ -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
index 0c746c8..84c45da 100644
@@ -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

Reviewed-by on v1 1/1
#1 lore raw
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 systems

Here's a generic regression test.

Looks good,

_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs

Reviewed-by on v1 1/1
#2 lore raw
In reply to Eric Sandeen
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 systems

Here's a generic regression test.

Looks good.

_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs

#3 lore raw
In reply to Eric Sandeen

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

#4 lore raw
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

#5 lore raw
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

#6 lore raw
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

#7 lore raw
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: -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.

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