• Tina Ruchandani's avatar
    ocfs2: use 64bit variables to track heartbeat time · 40476b82
    Tina Ruchandani authored
    o2hb_elapsed_msecs computes the time taken for a disk heartbeat.
    'struct timeval' variables are used to store start and end times.  On
    32-bit systems, the 'tv_sec' component of 'struct timeval' will overflow
    in year 2038 and beyond.
    
    This patch solves the overflow with the following:
    
    1. Replace o2hb_elapsed_msecs using 'ktime_t' values to measure start
       and end time, and built-in function 'ktime_ms_delta' to compute the
       elapsed time.  ktime_get_real() is used since the code prints out the
       wallclock time.
    
    2. Changes format string to print time as a single 64-bit nanoseconds
       value ("%lld") instead of seconds and microseconds.  This simplifies
       the code since converting ktime_t to that format would need expensive
       computation.  However, the debug log string is less readable than the
       previous format.
    Signed-off-by: default avatarTina Ruchandani <ruchandani.tina@gmail.com>
    Suggested by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: default avatarMark Fasheh <mfasheh@suse.de>
    Cc: Joel Becker <jlbec@evilplan.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    40476b82
heartbeat.c 68.4 KB