mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
generic/402: skip test if xfs_io can't parse the date value
If xfs_io's utimes command cannot interpret the arguments that are given to it, it will print out "Bad value for [am]time". Detect when this happens and drop the file out of the test entirely. This is particularly noticeable on 32-bit platforms and the largest timestamp seconds supported by the filesystem is INT_MAX. In this case, the maximum value we can cram into tv_sec is INT_MAX, and there is no way to actually test setting a timestamp of INT_MAX + 1 to test the clamping. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Amir Goldstein <amir73il@gmail.com> Reviewed-by: Zorro Lang <zlang@redhat.com> Signed-off-by: Eryu Guan <guaneryu@gmail.com>
This commit is contained in:
committed by
Eryu Guan
parent
a0b98ada02
commit
640c75ef96
+18
-2
@@ -63,10 +63,26 @@ run_test_individual()
|
|||||||
# check if the time needs update
|
# check if the time needs update
|
||||||
if [ $update_time -eq 1 ]; then
|
if [ $update_time -eq 1 ]; then
|
||||||
echo "Updating file: $file to timestamp $timestamp" >> $seqres.full
|
echo "Updating file: $file to timestamp $timestamp" >> $seqres.full
|
||||||
$XFS_IO_PROG -f -c "utimes $timestamp 0 $timestamp 0" $file
|
rm -f $tmp.utimes
|
||||||
if [ $? -ne 0 ]; then
|
$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
|
echo "Failed to update times on $file" | tee -a $seqres.full
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
if [ ! -f "$file" ]; then
|
||||||
|
echo "xfs_io did not create file for time value \"$timestamp\", skipping test." >> $seqres.full
|
||||||
|
return
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
tsclamp=$((timestamp<tsmin?tsmin:timestamp>tsmax?tsmax:timestamp))
|
tsclamp=$((timestamp<tsmin?tsmin:timestamp>tsmax?tsmax:timestamp))
|
||||||
|
|||||||
Reference in New Issue
Block a user