generic/402: Drop useless fail message
[xfstests-dev.git] / tests / generic / 402
index f742feddc85f13af8d620f32b67e28565518af10..ddaadf6d7b91f8146cddc76f5aa7e77dba3bd3d3 100755 (executable)
@@ -4,15 +4,10 @@
 #
 # FS QA Test 402
 #
-# Tests to verify policy for filesystem timestamps for
-# supported ranges:
-# 1. Verify filesystem rw mount according to sysctl
-# timestamp_supported.
-# 2. Verify timestamp clamping for timestamps beyond max
-# timestamp supported.
+# Test to verify filesystem timestamps for supported ranges.
 #
-# Exit status 1: either or both tests above fail.
-# Exit status 0: both the above tests pass.
+# Exit status 1: test failed.
+# Exit status 0: test passed.
 #
 seq=`basename $0`
 seqres=$RESULT_DIR/$seq
@@ -21,7 +16,13 @@ echo "QA output created by $seq"
 here=`pwd`
 tmp=/tmp/$$
 status=1       # failure is the default!
-trap "exit \$status" 0 1 2 3 15
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+       cd /
+       rm -f $tmp.*
+}
 
 # Get standard environment, filters and checks.
 . ./common/rc
@@ -33,8 +34,8 @@ rm -f $seqres.full
 
 # Prerequisites for the test run.
 _supported_fs generic
-_supported_os Linux
 _require_scratch
+_require_check_dmesg
 _require_xfs_io_command utimes
 
 # Compare file timestamps obtained from stat
@@ -60,15 +61,31 @@ run_test_individual()
 
        # check if the time needs update
        if [ $update_time -eq 1 ]; then
-               echo "Updating file: $file to timestamp `date -d @$timestamp`"  >> $seqres.full
-               $XFS_IO_PROG -f -c "utimes $timestamp 0 $timestamp 0" $file
-               if [ $? -ne 0 ]; then
+               echo "Updating file: $file to timestamp $timestamp"  >> $seqres.full
+               rm -f $tmp.utimes
+               $XFS_IO_PROG -f -c "utimes $timestamp 0 $timestamp 0" $file > $tmp.utimes 2>&1
+               local res=$?
+
+               cat $tmp.utimes >> $seqres.full
+               if [ "$timestamp" -ne 0 ] && grep -q "Bad value" "$tmp.utimes"; then
+                       echo "xfs_io could not interpret time value \"$timestamp\", skipping \"$file\" test." >> $seqres.full
+                       rm -f $file $tmp.utimes
+                       return
+               fi
+               cat $tmp.utimes
+               rm -f $tmp.utimes
+               if [ $res -ne 0 ]; then
                        echo "Failed to update times on $file" | tee -a $seqres.full
                fi
+       else
+               if [ ! -f "$file" ]; then
+                       echo "xfs_io did not create file for time value \"$timestamp\", skipping test." >> $seqres.full
+                       return
+               fi
        fi
 
-       tsclamp=$(($timestamp>$tsmax?$tsmax:$timestamp))
-       echo "Checking file: $file Updated timestamp is `date -d @$tsclamp`"  >> $seqres.full
+       tsclamp=$((timestamp<tsmin?tsmin:timestamp>tsmax?tsmax:timestamp))
+       echo "Checking file: $file Updated timestamp is $tsclamp"  >> $seqres.full
        check_stat $file $tsclamp
 }
 
@@ -85,11 +102,13 @@ run_test()
 }
 
 _scratch_mkfs &>> $seqres.full 2>&1 || _fail "mkfs failed"
-_require_y2038 $SCRATCH_DEV
+_scratch_mount
+
+_require_timestamp_range $SCRATCH_DEV
 
 read tsmin tsmax <<<$(_filesystem_timestamp_range $SCRATCH_DEV)
-echo min supported timestamp $tsmin $(date --date=@$tsmin) >> $seqres.full
-echo max supported timestamp $tsmax $(date --date=@$tsmax) >> $seqres.full
+echo min supported timestamp $tsmin >> $seqres.full
+echo max supported timestamp $tsmax >> $seqres.full
 
 # Test timestamps array
 
@@ -97,45 +116,11 @@ declare -a TIMESTAMPS=(
        $tsmin
        0
        $tsmax
+       $((tsmax/2))
        $((tsmax+1))
-       4294967295
-       8589934591
-       34359738367
 )
 
-# Max timestamp is hardcoded to Mon Jan 18 19:14:07 PST 2038
-sys_tsmax=2147483647
-echo "max timestamp that needs to be supported by fs for rw mount is" \
-       "$((sys_tsmax+1)) $(date --date=@$((sys_tsmax+1)))" >> $seqres.full
-
-read ts_check <<<$(cat /proc/sys/fs/fs-timestamp-check-on)
-
-_scratch_mount
-result=$?
-
-if [ $ts_check -ne 0 ]; then
-       echo "sysctl filesystem timestamp check is on" >> $seqres.full
-       # check for mount failure if the minimum requirement for max timestamp
-       # supported is not met.
-       if [ $sys_tsmax -ge $tsmax ]; then
-               if [ $result -eq 0 ]; then
-                       echo "mount test failed"  | tee -a $seqres.full
-                       exit
-               fi
-       else
-               if [ $result -ne 0 ]; then
-                       echo "failed to mount $SCRATCH_DEV"  | tee -a $seqres.full
-                       exit
-               fi
-       fi
-else
-       # if sysctl switch is off then mount should succeed always.
-       echo "sysctl filesystem timestamp check is off" >> $seqres.full
-       if [ $result -ne 0 ]; then
-               echo "failed to mount $SCRATCH_DEV and timestamp check is off"  >> $seqres.full
-               exit
-       fi
-fi
+status=0
 
 # Begin test case 1
 echo "In memory timestamps update test start" >> $seqres.full
@@ -166,8 +151,5 @@ run_test $update_time
 
 echo "On disk timestamps update test complete" >> $seqres.full
 
-echo "y2038 inode timestamp tests completed successfully"
-
-# success, all done
-status=0
+echo Silence is golden
 exit