Skip to content
  • Iurii Zaikin's avatar
    fs/ext4/inode-test: Fix inode test on 32 bit platforms. · 39101b22
    Iurii Zaikin authored
    
    
    Fixes the issue caused by the fact that in C in the expression
    of the form -1234L only 1234L is the actual literal, the unary
    minus is an operation applied to the literal. Which means that
    to express the lower bound for the type one has to negate the
    upper bound and subtract 1.
    
    Original error:
    Expected test_data[i].expected.tv_sec == timestamp.tv_sec, but
    test_data[i].expected.tv_sec == -2147483648
    timestamp.tv_sec == 2147483648
    1901-12-13 Lower bound of 32bit < 0 timestamp, no extra bits: msb:1
    lower_bound:1 extra_bits: 0
    Expected test_data[i].expected.tv_sec == timestamp.tv_sec, but
    test_data[i].expected.tv_sec == 2147483648
    timestamp.tv_sec == 6442450944
    2038-01-19 Lower bound of 32bit <0 timestamp, lo extra sec bit on:
    msb:1 lower_bound:1 extra_bits: 1
    Expected test_data[i].expected.tv_sec == timestamp.tv_sec, but
    test_data[i].expected.tv_sec == 6442450944
    timestamp.tv_sec == 10737418240
    2174-02-25 Lower bound of 32bit <0 timestamp, hi extra sec bit on:
    msb:1 lower_bound:1 extra_bits: 2
    not ok 1 - inode_test_xtimestamp_decoding
    not ok 1 - ext4_inode_test
    
    Reported-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: default avatarIurii Zaikin <yzaikin@google.com>
    Tested-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    Acked-by: default avatarBrendan Higgins <brendanhiggins@google.com>
    Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
    39101b22