run_test() arms the next device reset with

        while (completed > next_reset)
                next_reset += completed;

next_reset starts at reset_n, but each rearm advances the threshold by
the absolute completion count instead of the configured interval, so
the reset cadence stretches after every reset: with reset_n == 16 the
resets fire at completions 17, 34, 68, 136, ... instead of every 16
completions, and only a handful of resets happen over the whole run.

Advance next_reset by reset_n so resets stay evenly spaced, matching
the --reset=<n> option meaning.

Fixes: 264ee5aa81ec ("tools/virtio: Add --reset")
Signed-off-by: Gu Bin <[email protected]>
---
 tools/virtio/virtio_test.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/virtio/virtio_test.c b/tools/virtio/virtio_test.c
index 028f54e6854a..b8deca893f12 100644
--- a/tools/virtio/virtio_test.c
+++ b/tools/virtio/virtio_test.c
@@ -250,7 +250,7 @@ static void run_test(struct vdev_info *dev, struct vq_info 
*vq,
 
                                started = completed;
                                while (completed > next_reset)
-                                       next_reset += completed;
+                                       next_reset += reset_n;
                        }
                } while (r == 0);
                if (completed == completed_before && started == started_before)
-- 
2.55.0.windows.3




Reply via email to