• Mike Snitzer's avatar
    dm stats: fix too short end duration_ns when using precise_timestamps · 0cdb90f0
    Mike Snitzer authored
    dm_stats_account_io()'s STAT_PRECISE_TIMESTAMPS support doesn't handle
    the fact that with commit b879f915 ("dm: properly fix redundant
    bio-based IO accounting") io->start_time _may_ be in the past (meaning
    the start_io_acct() was deferred until later).
    
    Add a new dm_stats_recalc_precise_timestamps() helper that will
    set/clear a new 'precise_timestamps' flag in the dm_stats struct based
    on whether any configured stats enable STAT_PRECISE_TIMESTAMPS.
    And update DM core's alloc_io() to use dm_stats_record_start() to set
    stats_aux.duration_ns if stats->precise_timestamps is true.
    
    Also, remove unused 'last_sector' and 'last_rw' members from the
    dm_stats struct.
    
    Fixes: b879f915 ("dm: properly fix redundant bio-based IO accounting")
    Cc: stable@vger.kernel.org
    Co-developed-by: default avatarMikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    0cdb90f0
dm-stats.c 29.7 KB