• S
    libqos: use microseconds instead of iterations for virtio timeout · 70556264
    Stefan Hajnoczi 提交于
    Some hosts are slow or overloaded so test execution takes a long time.
    Test cases use timeouts to protect against an infinite loop stalling the
    test forever (especially important in automated test setups).
    
    Commit 6cd14054 ("libqos virtio:
    Increase ISR timeout") increased the clock_step() value in an attempt to
    lengthen the virtio interrupt wait timeout, but timeout failures are
    still occuring on the Travis automated testing platform.
    
    This is because clock_step() only affects the guest's virtual time.
    Virtio requests can be bottlenecked on host disk I/O latency - which
    cannot be improved by stepping the clock, so the fix was ineffective.
    
    This patch changes the qvirtio_wait_queue_isr() and
    qvirtio_wait_config_isr() timeout mechanism from loop iterations to
    microseconds.  This way the test case can specify an absolute 30 second
    timeout.  Number of loop iterations is not a reliable timeout mechanism
    since the speed depends on many factors including host performance.
    
    Tests should no longer timeout on overloaded Travis instances.
    
    Cc: Marc Marí <marc.mari.barcelo@gmail.com>
    Reported-by: NPeter Maydell <peter.maydell@linaro.org>
    Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
    70556264
virtio-blk-test.c 18.7 KB