[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 10/13] iotests/030: Unthrottle parallel jobs in reverse
From: |
Kevin Wolf |
Subject: |
[PULL 10/13] iotests/030: Unthrottle parallel jobs in reverse |
Date: |
Mon, 15 Nov 2021 15:54:06 +0100 |
From: Hanna Reitz <hreitz@redhat.com>
See the comment for why this is necessary.
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
Message-Id: <20211111120829.81329-11-hreitz@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
tests/qemu-iotests/030 | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030
index 5fb65b4bef..567bf1da67 100755
--- a/tests/qemu-iotests/030
+++ b/tests/qemu-iotests/030
@@ -251,7 +251,16 @@ class TestParallelOps(iotests.QMPTestCase):
speed=1024)
self.assert_qmp(result, 'return', {})
- for job in pending_jobs:
+ # Do this in reverse: After unthrottling them, some jobs may finish
+ # before we have unthrottled all of them. This will drain their
+ # subgraph, and this will make jobs above them advance (despite those
+ # jobs on top being throttled). In the worst case, all jobs below the
+ # top one are finished before we can unthrottle it, and this makes it
+ # advance so far that it completes before we can unthrottle it - which
+ # results in an error.
+ # Starting from the top (i.e. in reverse) does not have this problem:
+ # When a job finishes, the ones below it are not advanced.
+ for job in reversed(pending_jobs):
result = self.vm.qmp('block-job-set-speed', device=job, speed=0)
self.assert_qmp(result, 'return', {})
--
2.31.1
- [PULL 00/13] Block layer patches, Kevin Wolf, 2021/11/15
- [PULL 01/13] stream: Traverse graph after modification, Kevin Wolf, 2021/11/15
- [PULL 04/13] block: Drop detached child from ignore list, Kevin Wolf, 2021/11/15
- [PULL 02/13] block: Manipulate children list in .attach/.detach, Kevin Wolf, 2021/11/15
- [PULL 03/13] block: Unite remove_empty_child and child_free, Kevin Wolf, 2021/11/15
- [PULL 05/13] block: Pass BdrvChild ** to replace_child_noperm, Kevin Wolf, 2021/11/15
- [PULL 06/13] block: Restructure remove_file_or_backing_child(), Kevin Wolf, 2021/11/15
- [PULL 08/13] block: Let replace_child_tran keep indirect pointer, Kevin Wolf, 2021/11/15
- [PULL 11/13] docs: Deprecate incorrectly typed device_add arguments, Kevin Wolf, 2021/11/15
- [PULL 12/13] file-posix: Fix alignment after reopen changing O_DIRECT, Kevin Wolf, 2021/11/15
- [PULL 10/13] iotests/030: Unthrottle parallel jobs in reverse,
Kevin Wolf <=
- [PULL 09/13] block: Let replace_child_noperm free children, Kevin Wolf, 2021/11/15
- [PULL 13/13] softmmu/qdev-monitor: fix use-after-free in qdev_set_id(), Kevin Wolf, 2021/11/15
- [PULL 07/13] transactions: Invoke clean() after everything else, Kevin Wolf, 2021/11/15
- Re: [PULL 00/13] Block layer patches, Richard Henderson, 2021/11/15
- Re: [PULL 00/13] Block layer patches, Philippe Mathieu-Daudé, 2021/11/15