I recently submitted a PR that was merged to call fio_gettime in do_io in the IO_MODE_OFFLOAD case because comp_time was uninitialized in that case and so the minimum rate checking didn't work, and would sometimes assert b/c we were dealing with a time that was uninitialized: https://github.com/axboe/fio/commit/5b28b75b8cca843d616d2d54a77fdb5797c00f54 After fixing this, I noticed I was still getting intermittent asserts for the same reason in the non-offload (e.g. regular) case. Indeed, the calls made in do_io in the non-offload case are to io_queue_event and wait_for_completions. But it is possible that wait_for_completions is not called and both io_queue_event and wait_for_completions do not always fill out comp_time. So the same problem can still happen. Once comp_time is filled out for the first time, asserts will not happen, so an easy fix is to initialize comp_time to now at the beginning of do_io, but I have no idea if that is actually the correct fix. To fix properly I need to understand the idea behind what comp_time is supposed to represent and why it is not filled out sometimes by calls to io_queue_event. Should we just always be calling it when doing rate checking before we call check_min_rate, or is there some reason we don't want to do that? Was it ok to always call it in the offload case? Thanks, Nick