Hang when ioengine=net and verify_backlog#1513
Hang when ioengine=net and verify_backlog#1513horshack-dpreview wants to merge 1 commit intoaxboe:masterfrom
Conversation
The net engine only supports uni-direction workloads. This means verify operations for write workloads aren't supported. There is already logic to prevent post-workload verifies but no logic to prevent the in-workload verifies performed when verify_backlog is enabled. The fix is to prevent in-workload verifies for FIO_UNIDIR engines. There are several options on where to place this conditional but I found an existing conditional that prevents the logging of writes to log_io_piece() when verify is disabled, and check_get_verify() already depends on this behavior to not perform in-workload verifies for other cases (it doesn't check if verify is disabled - it relies on the absence of entries in log_io_piece). So I placed the check for FIO_UNIDIR there. My grasp of these distributed, interdependent state checks across modules is tenuous so please review this fix carefully. Signed-off-by: Adam Horshack (horshack@live.com)
|
@vincentkfu, Is this check failure real and something I need to address? |
|
This is a real failure but it's not due to your patch. |
|
Instead of just failing silently it would be better the print an error message and fail the job because this is an invalid configuration. |
Hi @vincentkfu, With this fix the workload doesn't fail - it bypasses the configured verified operation. I modeled this from existing fio behavior, which seems to favor bypassing logic paths not supported for a given configuration operation rather than preemptively disallowing them. |
|
Fio can't satisfy the options provided and should notify the user right away about this problem and give him/her a chance to correct it instead of running to completion with a workload different from what the user specified. There are plenty of examples in BTW you can have git automatically add a sign-off to your commits with |
Thanks.The current implementation of FIO_UNIDIR already bypasses user-specified verify operations for write-only workloads (ie, not possible since only all-writes or all-reads are supported). My fix only corrects the implementation to handle a case it missed. Are you saying the original implementation of avoiding verifies for FIO_UNIDIR was misguided and needs to be corrected? |
|
@vincentkfu, If your answer to my above question is yes, here is an alternate fix that uses your suggestion to prevent the config from executing. As part of this change I also removed the existing check for |
|
Thanks for the explanation. I see two competing principles here:
A reasonable balance seems to be:
@axboe feel free to chime in if you feel differently. |
The net engine only supports uni-direction workloads. This means verify operations for write workloads aren't supported. There is already logic to prevent post-workload verifies but no logic to prevent the in-workload verifies performed when verify_backlog is enabled.
The fix is to prevent in-workload verifies for FIO_UNIDIR engines. There are several options on where to place this conditional but I found an existing conditional that prevents the logging of writes to log_io_piece() when verify is disabled, and check_get_verify() already depends on this behavior to not perform in-workload verifies for other cases (it doesn't check if verify is disabled - it relies on the absence of entries in log_io_piece). So I placed the check for FIO_UNIDIR there.
My grasp of these distributed, interdependent state checks across modules is tenuous so please review this fix carefully.
Signed-off-by: Adam Horshack (horshack@live.com)