Addition of fs-specific timestamp range checking was added
in 188d20bcd1eb ("vfs: Add file timestamp range support").

Add a check for whether the kernel supports the limits check
before running the associated test.

ext4 has been chosen to test for the presence of kernel support
for this feature. If there is a concern that ext4 could be built
out of the kernel, I can include a _require_ext4() along the
lines of _require_ext2().

Suggested-by: Amir Goldstein <amir7...@gmail.com>
Signed-off-by: Deepa Dinamani <deepa.ker...@gmail.com>
---
* Changes since v1:
  used loopback device instead of mkfs scratch dev

 common/rc         | 26 ++++++++++++++++++++++++++
 tests/generic/402 |  3 +++
 2 files changed, 29 insertions(+)

diff --git a/common/rc b/common/rc
index 816588d6..6248adf7 100644
--- a/common/rc
+++ b/common/rc
@@ -1981,6 +1981,32 @@ _run_aiodio()
     return $status
 }
 
+_require_kernel_timestamp_range()
+{
+       LOOP_FILE=$SCRATCH_MNT/loop_file
+       LOOP_MNT=$SCRATCH_MNT/loop_mnt
+
+       dd if=/dev/zero of=$LOOP_FILE bs=1M count=2 2>&1 | _filter_dd || _fail 
"loopback prep failed"
+
+       # Use ext4 with 128-byte inodes, which do not have room for extended 
timestamp
+       FSTYP=ext4 MKFS_OPTIONS=-I128 \
+       _mkfs_dev $LOOP_FILE >> $seqres.full 2>&1 || _fail "ext4 mkfs failed"
+
+       LOOP_DEV=$(_create_loop_device $LOOP_FILE)
+       mkdir -p $LOOP_MNT >> $seqres.full 2>&1 || _fail "failed to create 
$LOOP_MNT"
+       mount -t ext4 ${LOOP_DEV} ${LOOP_MNT} >> $seqres.full 2>&1 || _fail 
"ext4 mount failed"
+       notrun=false
+       _check_dmesg_for "ext4 filesystem being mounted at ${LOOP_MNT} supports 
timestamps until 2038" || \
+               notrun=true
+
+       umount ${LOOP_MNT} >> $seqres.full 2>&1 ||_fail "failed to umount 
$LOOP_MNT"
+       _destroy_loop_device ${LOOP_DEV} >> $seqres.full 2>&1
+
+       if $notrun; then
+               _notrun "Kernel does not support timestamp limits"
+       fi
+}
+
 _require_timestamp_range()
 {
        local device=${1:-$TEST_DEV}
diff --git a/tests/generic/402 b/tests/generic/402
index 0392c258..2be94c54 100755
--- a/tests/generic/402
+++ b/tests/generic/402
@@ -30,6 +30,7 @@ rm -f $seqres.full
 _supported_fs generic
 _supported_os Linux
 _require_scratch
+_require_check_dmesg
 _require_xfs_io_command utimes
 
 # Compare file timestamps obtained from stat
@@ -79,6 +80,8 @@ run_test()
        done
 }
 
+_require_kernel_timestamp_range
+
 _scratch_mkfs &>> $seqres.full 2>&1 || _fail "mkfs failed"
 _require_timestamp_range $SCRATCH_DEV
 
-- 
2.17.1

_______________________________________________
Y2038 mailing list
Y2038@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/y2038

Reply via email to