Still some cases where min rate checking will fail - how to fix?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux