From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> 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@xxxxxxxxxx> --- tests/generic/402 | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/generic/402 b/tests/generic/402 index 2a34d127..32988866 100755 --- a/tests/generic/402 +++ b/tests/generic/402 @@ -63,10 +63,19 @@ run_test_individual() # check if the time needs update if [ $update_time -eq 1 ]; then echo "Updating file: $file to timestamp $timestamp" >> $seqres.full - $XFS_IO_PROG -f -c "utimes $timestamp 0 $timestamp 0" $file + $XFS_IO_PROG -f -c "utimes $timestamp 0 $timestamp 0" $file >> $tmp.utimes 2>&1 + cat $tmp.utimes >> $seqres.full + if grep -q "Bad value" "$tmp.utimes"; then + rm -f $file $tmp.utimes + return + fi + cat $tmp.utimes + rm $tmp.utimes if [ $? -ne 0 ]; then echo "Failed to update times on $file" | tee -a $seqres.full fi + else + test -f $file || return fi tsclamp=$((timestamp<tsmin?tsmin:timestamp>tsmax?tsmax:timestamp))