From: Max Reitz <mreitz@redhat.com>
To: qemu-block@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>
Subject: [Qemu-devel] [PATCH 2/2] iotests: Test quitting with job on throttled node
Date: Thu, 13 Jun 2019 00:08:39 +0200 [thread overview]
Message-ID: <20190612220839.1374-3-mreitz@redhat.com> (raw)
In-Reply-To: <20190612220839.1374-1-mreitz@redhat.com>
When qemu quits, all throttling should be ignored. That means, if there
is a mirror job running from a throttled node, it should be cancelled
immediately and qemu close without blocking.
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
tests/qemu-iotests/218 | 55 ++++++++++++++++++++++++++++++++++++--
tests/qemu-iotests/218.out | 4 +++
2 files changed, 57 insertions(+), 2 deletions(-)
diff --git a/tests/qemu-iotests/218 b/tests/qemu-iotests/218
index 92c331b6fb..2554d84581 100755
--- a/tests/qemu-iotests/218
+++ b/tests/qemu-iotests/218
@@ -27,9 +27,9 @@
# Creator/Owner: Max Reitz <mreitz@redhat.com>
import iotests
-from iotests import log
+from iotests import log, qemu_img, qemu_io_silent
-iotests.verify_platform(['linux'])
+iotests.verify_image_format(supported_fmts=['qcow2', 'raw'])
# Launches the VM, adds two null-co nodes (source and target), and
@@ -136,3 +136,54 @@ with iotests.VM() as vm:
log(vm.event_wait('BLOCK_JOB_CANCELLED'),
filters=[iotests.filter_qmp_event])
+
+log('')
+log('=== Cancel mirror job from throttled node by quitting ===')
+log('')
+
+with iotests.VM() as vm, \
+ iotests.FilePath('src.img') as src_img_path:
+
+ assert qemu_img('create', '-f', iotests.imgfmt, src_img_path, '64M') == 0
+ assert qemu_io_silent('-f', iotests.imgfmt, src_img_path,
+ '-c', 'write -P 42 0M 64M') == 0
+
+ vm.launch()
+
+ ret = vm.qmp('object-add', qom_type='throttle-group', id='tg',
+ props={'x-bps-read': 4096})
+ assert ret['return'] == {}
+
+ ret = vm.qmp('blockdev-add',
+ node_name='source',
+ driver=iotests.imgfmt,
+ file={
+ 'driver': 'file',
+ 'filename': src_img_path
+ })
+ assert ret['return'] == {}
+
+ ret = vm.qmp('blockdev-add',
+ node_name='throttled-source',
+ driver='throttle',
+ throttle_group='tg',
+ file='source')
+ assert ret['return'] == {}
+
+ ret = vm.qmp('blockdev-add',
+ node_name='target',
+ driver='null-co',
+ size=(64 * 1048576))
+ assert ret['return'] == {}
+
+ ret = vm.qmp('blockdev-mirror',
+ job_id='mirror',
+ device='throttled-source',
+ target='target',
+ sync='full')
+ assert ret['return'] == {}
+
+ log(vm.qmp('quit'))
+
+ with iotests.Timeout(5, 'Timeout waiting for VM to quit'):
+ vm.shutdown(has_quit=True)
diff --git a/tests/qemu-iotests/218.out b/tests/qemu-iotests/218.out
index 825a657081..5a86a97550 100644
--- a/tests/qemu-iotests/218.out
+++ b/tests/qemu-iotests/218.out
@@ -28,3 +28,7 @@ Cancelling job
Cancelling job
{"return": {}}
{"data": {"device": "mirror", "len": 1048576, "offset": 1048576, "speed": 0, "type": "mirror"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
+
+=== Cancel mirror job from throttled node by quitting ===
+
+{"return": {}}
--
2.21.0
next prev parent reply other threads:[~2019-06-12 22:11 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-12 22:08 [Qemu-devel] [PATCH 0/2] vl: Drain before (block) job cancel when quitting Max Reitz
2019-06-12 22:08 ` [Qemu-devel] [PATCH 1/2] " Max Reitz
[not found] ` <b110b753-8546-0d34-f6ef-06c5726766ce@virtuozzo.com>
[not found] ` <c1fbf12a-77af-d939-4266-67b822e5a923@redhat.com>
[not found] ` <57ae7f82-ae02-a382-74f6-cb96672b2058@virtuozzo.com>
2019-06-13 16:03 ` Max Reitz
2019-06-14 9:22 ` Vladimir Sementsov-Ogievskiy
2019-06-19 19:40 ` Max Reitz
2019-07-16 7:00 ` Philippe Mathieu-Daudé
2019-06-12 22:08 ` Max Reitz [this message]
2019-06-12 22:31 ` [Qemu-devel] [PATCH 0/2] " Max Reitz
2019-07-19 13:26 ` Kevin Wolf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190612220839.1374-3-mreitz@redhat.com \
--to=mreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).