aboutsummaryrefslogtreecommitdiff
path: root/tests/qtest
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2023-05-16 06:24:33 -0700
committerRichard Henderson <richard.henderson@linaro.org>2023-05-16 06:24:33 -0700
commit3d8ff94e59770ec7f5effe509c94246b2cbe9ce0 (patch)
tree32ba366af79ebe5b822a0e531af0a7f436a3f3b6 /tests/qtest
parentab4c44d657aeca7e1da6d6dcb1741c8e7d357b8b (diff)
parentbfa72590df14e4c94c03d2464f3abe18bf2e5dac (diff)
downloadqemu-3d8ff94e59770ec7f5effe509c94246b2cbe9ce0.zip
qemu-3d8ff94e59770ec7f5effe509c94246b2cbe9ce0.tar.gz
qemu-3d8ff94e59770ec7f5effe509c94246b2cbe9ce0.tar.bz2
Merge tag 'pull-request-2023-05-15v2' of https://gitlab.com/thuth/qemu into staging
* Various small test updates * Some small doc updates * Introduce replacement for -async-teardown that shows up in the QAPI * Make machine-qmp-cmds.c and xilinx_ethlite.c target-independent * Fix s390x LDER instruction * Fix s390x EXECUTE instruction with relative branches # -----BEGIN PGP SIGNATURE----- # # iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmRjagURHHRodXRoQHJl # ZGhhdC5jb20ACgkQLtnXdP5wLbVyPxAAhlqIbVWir264DQkpLKM/4CVWPxVPwBxh # OPvSG42wM7+uCNefnIWYr4qT1+Iz14w8OYBCEON2u8Pwfgxrjf2ZkS2C79iL3FHG # 37NsFGkxhLLeexzYyCpSg3FNikZql+RNg9I9um4NRPH0lgu4L3aQk58WyXFyBHU2 # mxvbAEOyiSbGr8bp6ZcU7k1UryRZ6qQoBUzFvMQpUD7jlo88MVUu5D+4xZclH6EV # R6WerbyKUWnfY0rFWxA8RGt785aUVq9iD8tIkPkPhQ/UjvzZKosCHIpjF0qCkd6P # 42Ahz6kP7Ce/XlTcS/Q3gIEzKViCFJtZiZIG/N2sBAWqisTkaSKDeQMrM6vAmmBr # ju44CUk2tupZSG20G/Gz7a09ZKr3S7+6BpJ+tUdnK2W9PSU7CycesZ6s9hqKJL8W # QUOMKyEMF/+W+pubdfYJNvUha6hYPoaR9vTNAhC50NiahhhIxIRcyRtpteVgsjwW # lxHMeIz8PUHxp+tvl3CzLZyDWF0maq5/JzhkCoUhvzVUAh+tDYAfWOKxIxEVNPVt # E1Igj6N4TYvkrXltSyxMxs9uHWhNi4ObETbB+7greYOWFVhtKhphnG78wt0uu81O # iZIqdLzWFeqaH5/Li3VnuVhLDnhSfpDiWUNqaVvWu6V5WrXDuIGQoe7pxAhRvZTB # zsOUpGdprPo= # =sWOT # -----END PGP SIGNATURE----- # gpg: Signature made Tue 16 May 2023 04:33:25 AM PDT # gpg: using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5 # gpg: issuer "thuth@redhat.com" # gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [undefined] # gpg: aka "Thomas Huth <thuth@redhat.com>" [undefined] # gpg: aka "Thomas Huth <th.huth@posteo.de>" [unknown] # gpg: aka "Thomas Huth <huth@tuxfamily.org>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 27B8 8847 EEE0 2501 18F3 EAB9 2ED9 D774 FE70 2DB5 * tag 'pull-request-2023-05-15v2' of https://gitlab.com/thuth/qemu: (21 commits) tests/tcg/s390x: Test EXECUTE of relative branches target/s390x: Fix EXECUTE of relative branches tests/tcg/s390x: Enable the multiarch system tests tests/tcg/multiarch: Make the system memory test work on big-endian s390x/tcg: Fix LDER instruction format hw/net: Move xilinx_ethlite.c to the target-independent source set hw/core: Move machine-qmp-cmds.c into the target independent source set cpu: Introduce a wrapper for being able to use TARGET_NAME in common code hw/core: Use a callback for target specific query-cpus-fast information docs/about/emulation: fix typo docs/devel: remind developers to run CI container pipeline when updating images s390x/pv: Fix spurious warning with asynchronous teardown util/async-teardown: wire up query-command-line-options tests/lcitool: Add mtools and xorriso and remove genisoimage as dependencies tests: libvirt-ci: Update to commit 'c8971e90ac' to pull in mformat and xorriso Add information how to fix common build error on Windows in symlink-install-tree hw/pci-bridge: Fix release ordering by embedding PCIBridgeWindows within PCIBridge tests/qtest: replace qmp_discard_response with qtest_qmp_assert_success net: stream: test reconnect option with an unix socket sysemu/kvm: Remove unused headers ... Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'tests/qtest')
-rw-r--r--tests/qtest/ahci-test.c31
-rw-r--r--tests/qtest/boot-order-test.c5
-rw-r--r--tests/qtest/cdrom-test.c14
-rw-r--r--tests/qtest/fdc-test.c15
-rw-r--r--tests/qtest/ide-test.c5
-rw-r--r--tests/qtest/migration-test.c5
-rw-r--r--tests/qtest/netdev-socket.c39
-rw-r--r--tests/qtest/test-filter-mirror.c5
-rw-r--r--tests/qtest/test-filter-redirector.c7
-rw-r--r--tests/qtest/virtio-blk-test.c24
10 files changed, 65 insertions, 85 deletions
diff --git a/tests/qtest/ahci-test.c b/tests/qtest/ahci-test.c
index 1967cd5..abab761 100644
--- a/tests/qtest/ahci-test.c
+++ b/tests/qtest/ahci-test.c
@@ -36,9 +36,6 @@
#include "hw/pci/pci_ids.h"
#include "hw/pci/pci_regs.h"
-/* TODO actually test the results and get rid of this */
-#define qmp_discard_response(s, ...) qobject_unref(qtest_qmp(s, __VA_ARGS__))
-
/* Test images sizes in MB */
#define TEST_IMAGE_SIZE_MB_LARGE (200 * 1024)
#define TEST_IMAGE_SIZE_MB_SMALL 64
@@ -1595,9 +1592,9 @@ static void test_atapi_tray(void)
rsp = qtest_qmp_receive(ahci->parent->qts);
qobject_unref(rsp);
- qmp_discard_response(ahci->parent->qts,
- "{'execute': 'blockdev-remove-medium', "
- "'arguments': {'id': 'cd0'}}");
+ qtest_qmp_assert_success(ahci->parent->qts,
+ "{'execute': 'blockdev-remove-medium', "
+ "'arguments': {'id': 'cd0'}}");
/* Test the tray without a medium */
ahci_atapi_load(ahci, port);
@@ -1607,16 +1604,18 @@ static void test_atapi_tray(void)
atapi_wait_tray(ahci, true);
/* Re-insert media */
- qmp_discard_response(ahci->parent->qts,
- "{'execute': 'blockdev-add', "
- "'arguments': {'node-name': 'node0', "
- "'driver': 'raw', "
- "'file': { 'driver': 'file', "
- "'filename': %s }}}", iso);
- qmp_discard_response(ahci->parent->qts,
- "{'execute': 'blockdev-insert-medium',"
- "'arguments': { 'id': 'cd0', "
- "'node-name': 'node0' }}");
+ qtest_qmp_assert_success(
+ ahci->parent->qts,
+ "{'execute': 'blockdev-add', "
+ "'arguments': {'node-name': 'node0', "
+ "'driver': 'raw', "
+ "'file': { 'driver': 'file', "
+ "'filename': %s }}}", iso);
+ qtest_qmp_assert_success(
+ ahci->parent->qts,
+ "{'execute': 'blockdev-insert-medium',"
+ "'arguments': { 'id': 'cd0', "
+ "'node-name': 'node0' }}");
/* Again, the event shows up first */
qtest_qmp_send(ahci->parent->qts, "{'execute': 'blockdev-close-tray', "
diff --git a/tests/qtest/boot-order-test.c b/tests/qtest/boot-order-test.c
index 0680d79..8f2b6ef 100644
--- a/tests/qtest/boot-order-test.c
+++ b/tests/qtest/boot-order-test.c
@@ -16,9 +16,6 @@
#include "qapi/qmp/qdict.h"
#include "standard-headers/linux/qemu_fw_cfg.h"
-/* TODO actually test the results and get rid of this */
-#define qmp_discard_response(qs, ...) qobject_unref(qtest_qmp(qs, __VA_ARGS__))
-
typedef struct {
const char *args;
uint64_t expected_boot;
@@ -43,7 +40,7 @@ static void test_a_boot_order(const char *machine,
machine ?: "", test_args);
actual = read_boot_order(qts);
g_assert_cmphex(actual, ==, expected_boot);
- qmp_discard_response(qts, "{ 'execute': 'system_reset' }");
+ qtest_qmp_assert_success(qts, "{ 'execute': 'system_reset' }");
/*
* system_reset only requests reset. We get a RESET event after
* the actual reset completes. Need to wait for that.
diff --git a/tests/qtest/cdrom-test.c b/tests/qtest/cdrom-test.c
index 31d3bac..2b7e10d 100644
--- a/tests/qtest/cdrom-test.c
+++ b/tests/qtest/cdrom-test.c
@@ -17,7 +17,7 @@
static char isoimage[] = "cdrom-boot-iso-XXXXXX";
-static int exec_genisoimg(const char **args)
+static int exec_xorrisofs(const char **args)
{
gchar *out_err = NULL;
gint exit_status = -1;
@@ -43,7 +43,7 @@ static int prepare_image(const char *arch, char *isoimage)
char *codefile = NULL;
int ifh, ret = -1;
const char *args[] = {
- "genisoimage", "-quiet", "-l", "-no-emul-boot",
+ "xorrisofs", "-quiet", "-l", "-no-emul-boot",
"-b", NULL, "-o", isoimage, srcdir, NULL
};
@@ -75,9 +75,9 @@ static int prepare_image(const char *arch, char *isoimage)
}
args[5] = strchr(codefile, '/') + 1;
- ret = exec_genisoimg(args);
+ ret = exec_xorrisofs(args);
if (ret) {
- fprintf(stderr, "genisoimage failed: %i\n", ret);
+ fprintf(stderr, "xorrisofs failed: %i\n", ret);
}
unlink(codefile);
@@ -211,12 +211,12 @@ int main(int argc, char **argv)
{
int ret;
const char *arch = qtest_get_arch();
- const char *genisocheck[] = { "genisoimage", "-version", NULL };
+ const char *xorrisocheck[] = { "xorrisofs", "-version", NULL };
g_test_init(&argc, &argv, NULL);
- if (exec_genisoimg(genisocheck)) {
- /* genisoimage not available - so can't run tests */
+ if (exec_xorrisofs(xorrisocheck)) {
+ /* xorrisofs not available - so can't run tests */
return g_test_run();
}
diff --git a/tests/qtest/fdc-test.c b/tests/qtest/fdc-test.c
index 1f9b99a..5e8fbda 100644
--- a/tests/qtest/fdc-test.c
+++ b/tests/qtest/fdc-test.c
@@ -28,9 +28,6 @@
#include "libqtest-single.h"
#include "qapi/qmp/qdict.h"
-/* TODO actually test the results and get rid of this */
-#define qmp_discard_response(...) qobject_unref(qmp(__VA_ARGS__))
-
#define DRIVE_FLOPPY_BLANK \
"-drive if=floppy,file=null-co://,file.read-zeroes=on,format=raw,size=1440k"
@@ -304,9 +301,10 @@ static void test_media_insert(void)
/* Insert media in drive. DSKCHK should not be reset until a step pulse
* is sent. */
- qmp_discard_response("{'execute':'blockdev-change-medium', 'arguments':{"
- " 'id':'floppy0', 'filename': %s, 'format': 'raw' }}",
- test_image);
+ qtest_qmp_assert_success(global_qtest,
+ "{'execute':'blockdev-change-medium', 'arguments':{"
+ " 'id':'floppy0', 'filename': %s, 'format': 'raw' }}",
+ test_image);
dir = inb(FLOPPY_BASE + reg_dir);
assert_bit_set(dir, DSKCHG);
@@ -335,8 +333,9 @@ static void test_media_change(void)
/* Eject the floppy and check that DSKCHG is set. Reading it out doesn't
* reset the bit. */
- qmp_discard_response("{'execute':'eject', 'arguments':{"
- " 'id':'floppy0' }}");
+ qtest_qmp_assert_success(global_qtest,
+ "{'execute':'eject', 'arguments':{"
+ " 'id':'floppy0' }}");
dir = inb(FLOPPY_BASE + reg_dir);
assert_bit_set(dir, DSKCHG);
diff --git a/tests/qtest/ide-test.c b/tests/qtest/ide-test.c
index dcb050b..d6b4f6e 100644
--- a/tests/qtest/ide-test.c
+++ b/tests/qtest/ide-test.c
@@ -34,9 +34,6 @@
#include "hw/pci/pci_ids.h"
#include "hw/pci/pci_regs.h"
-/* TODO actually test the results and get rid of this */
-#define qmp_discard_response(q, ...) qobject_unref(qtest_qmp(q, __VA_ARGS__))
-
#define TEST_IMAGE_SIZE 64 * 1024 * 1024
#define IDE_PCI_DEV 1
@@ -766,7 +763,7 @@ static void test_pci_retry_flush(void)
qtest_qmp_eventwait(qts, "STOP");
/* Complete the command */
- qmp_discard_response(qts, "{'execute':'cont' }");
+ qtest_qmp_assert_success(qts, "{'execute':'cont' }");
/* Check registers */
data = qpci_io_readb(dev, ide_bar, reg_device);
diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index 8a5df84..b99b49a 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -40,9 +40,6 @@
#include "linux/kvm.h"
#endif
-/* TODO actually test the results and get rid of this */
-#define qtest_qmp_discard_response(...) qobject_unref(qtest_qmp(__VA_ARGS__))
-
unsigned start_address;
unsigned end_address;
static bool uffd_feature_thread_id;
@@ -766,7 +763,7 @@ static void test_migrate_end(QTestState *from, QTestState *to, bool test_dest)
usleep(1000 * 10);
} while (dest_byte_a == dest_byte_b);
- qtest_qmp_discard_response(to, "{ 'execute' : 'stop'}");
+ qtest_qmp_assert_success(to, "{ 'execute' : 'stop'}");
/* With it stopped, check nothing changes */
qtest_memread(to, start_address, &dest_byte_c, 1);
diff --git a/tests/qtest/netdev-socket.c b/tests/qtest/netdev-socket.c
index 9cf1b06..097abc0 100644
--- a/tests/qtest/netdev-socket.c
+++ b/tests/qtest/netdev-socket.c
@@ -189,28 +189,26 @@ static void wait_stream_disconnected(QTestState *qts, const char *id)
qobject_unref(resp);
}
-static void test_stream_inet_reconnect(void)
+static void test_stream_unix_reconnect(void)
{
QTestState *qts0, *qts1;
- int port;
SocketAddress *addr;
+ gchar *path;
- port = inet_get_free_port(false);
+ path = g_strconcat(tmpdir, "/stream_unix_reconnect", NULL);
qts0 = qtest_initf("-nodefaults -M none "
- "-netdev stream,id=st0,server=true,addr.type=inet,"
- "addr.ipv4=on,addr.ipv6=off,"
- "addr.host=127.0.0.1,addr.port=%d", port);
+ "-netdev stream,id=st0,server=true,addr.type=unix,"
+ "addr.path=%s", path);
EXPECT_STATE(qts0, "st0: index=0,type=stream,\r\n", 0);
qts1 = qtest_initf("-nodefaults -M none "
- "-netdev stream,server=false,id=st0,addr.type=inet,"
- "addr.ipv4=on,addr.ipv6=off,reconnect=1,"
- "addr.host=127.0.0.1,addr.port=%d", port);
+ "-netdev stream,server=false,id=st0,addr.type=unix,"
+ "addr.path=%s,reconnect=1", path);
wait_stream_connected(qts0, "st0", &addr);
- g_assert_cmpint(addr->type, ==, SOCKET_ADDRESS_TYPE_INET);
- g_assert_cmpstr(addr->u.inet.host, ==, "127.0.0.1");
+ g_assert_cmpint(addr->type, ==, SOCKET_ADDRESS_TYPE_UNIX);
+ g_assert_cmpstr(addr->u.q_unix.path, ==, path);
qapi_free_SocketAddress(addr);
/* kill server */
@@ -221,24 +219,23 @@ static void test_stream_inet_reconnect(void)
/* restart server */
qts0 = qtest_initf("-nodefaults -M none "
- "-netdev stream,id=st0,server=true,addr.type=inet,"
- "addr.ipv4=on,addr.ipv6=off,"
- "addr.host=127.0.0.1,addr.port=%d", port);
+ "-netdev stream,id=st0,server=true,addr.type=unix,"
+ "addr.path=%s", path);
/* wait connection events*/
wait_stream_connected(qts0, "st0", &addr);
- g_assert_cmpint(addr->type, ==, SOCKET_ADDRESS_TYPE_INET);
- g_assert_cmpstr(addr->u.inet.host, ==, "127.0.0.1");
+ g_assert_cmpint(addr->type, ==, SOCKET_ADDRESS_TYPE_UNIX);
+ g_assert_cmpstr(addr->u.q_unix.path, ==, path);
qapi_free_SocketAddress(addr);
wait_stream_connected(qts1, "st0", &addr);
- g_assert_cmpint(addr->type, ==, SOCKET_ADDRESS_TYPE_INET);
- g_assert_cmpstr(addr->u.inet.host, ==, "127.0.0.1");
- g_assert_cmpint(atoi(addr->u.inet.port), ==, port);
+ g_assert_cmpint(addr->type, ==, SOCKET_ADDRESS_TYPE_UNIX);
+ g_assert_cmpstr(addr->u.q_unix.path, ==, path);
qapi_free_SocketAddress(addr);
qtest_quit(qts1);
qtest_quit(qts0);
+ g_free(path);
}
static void test_stream_inet_ipv6(void)
@@ -517,8 +514,6 @@ int main(int argc, char **argv)
#ifndef _WIN32
qtest_add_func("/netdev/dgram/mcast", test_dgram_mcast);
#endif
- qtest_add_func("/netdev/stream/inet/reconnect",
- test_stream_inet_reconnect);
}
if (has_ipv6) {
qtest_add_func("/netdev/stream/inet/ipv6", test_stream_inet_ipv6);
@@ -530,6 +525,8 @@ int main(int argc, char **argv)
qtest_add_func("/netdev/dgram/unix", test_dgram_unix);
#endif
qtest_add_func("/netdev/stream/unix", test_stream_unix);
+ qtest_add_func("/netdev/stream/unix/reconnect",
+ test_stream_unix_reconnect);
#ifdef CONFIG_LINUX
qtest_add_func("/netdev/stream/unix/abstract",
test_stream_unix_abstract);
diff --git a/tests/qtest/test-filter-mirror.c b/tests/qtest/test-filter-mirror.c
index 248fc88..adeada3 100644
--- a/tests/qtest/test-filter-mirror.c
+++ b/tests/qtest/test-filter-mirror.c
@@ -16,9 +16,6 @@
#include "qemu/error-report.h"
#include "qemu/main-loop.h"
-/* TODO actually test the results and get rid of this */
-#define qmp_discard_response(qs, ...) qobject_unref(qtest_qmp(qs, __VA_ARGS__))
-
static void test_mirror(void)
{
int send_sock[2], recv_sock[2];
@@ -52,7 +49,7 @@ static void test_mirror(void)
};
/* send a qmp command to guarantee that 'connected' is setting to true. */
- qmp_discard_response(qts, "{ 'execute' : 'query-status'}");
+ qtest_qmp_assert_success(qts, "{ 'execute' : 'query-status'}");
ret = iov_send(send_sock[0], iov, 2, 0, sizeof(size) + sizeof(send_buf));
g_assert_cmpint(ret, ==, sizeof(send_buf) + sizeof(size));
close(send_sock[0]);
diff --git a/tests/qtest/test-filter-redirector.c b/tests/qtest/test-filter-redirector.c
index 24ca928..e72e3b7 100644
--- a/tests/qtest/test-filter-redirector.c
+++ b/tests/qtest/test-filter-redirector.c
@@ -58,9 +58,6 @@
#include "qemu/error-report.h"
#include "qemu/main-loop.h"
-/* TODO actually test the results and get rid of this */
-#define qmp_discard_response(qs, ...) qobject_unref(qtest_qmp(qs, __VA_ARGS__))
-
static void test_redirector_tx(void)
{
int backend_sock[2], recv_sock;
@@ -98,7 +95,7 @@ static void test_redirector_tx(void)
g_assert_cmpint(recv_sock, !=, -1);
/* send a qmp command to guarantee that 'connected' is setting to true. */
- qmp_discard_response(qts, "{ 'execute' : 'query-status'}");
+ qtest_qmp_assert_success(qts, "{ 'execute' : 'query-status'}");
struct iovec iov[] = {
{
@@ -176,7 +173,7 @@ static void test_redirector_rx(void)
send_sock = unix_connect(sock_path1, NULL);
g_assert_cmpint(send_sock, !=, -1);
/* send a qmp command to guarantee that 'connected' is setting to true. */
- qmp_discard_response(qts, "{ 'execute' : 'query-status'}");
+ qtest_qmp_assert_success(qts, "{ 'execute' : 'query-status'}");
ret = iov_send(send_sock, iov, 2, 0, sizeof(size) + sizeof(send_buf));
g_assert_cmpint(ret, ==, sizeof(send_buf) + sizeof(size));
diff --git a/tests/qtest/virtio-blk-test.c b/tests/qtest/virtio-blk-test.c
index 19c01f8..98c906e 100644
--- a/tests/qtest/virtio-blk-test.c
+++ b/tests/qtest/virtio-blk-test.c
@@ -17,9 +17,6 @@
#include "libqos/qgraph.h"
#include "libqos/virtio-blk.h"
-/* TODO actually test the results and get rid of this */
-#define qmp_discard_response(...) qobject_unref(qmp(__VA_ARGS__))
-
#define TEST_IMAGE_SIZE (64 * 1024 * 1024)
#define QVIRTIO_BLK_TIMEOUT_US (30 * 1000 * 1000)
#define PCI_SLOT_HP 0x06
@@ -453,9 +450,10 @@ static void config(void *obj, void *data, QGuestAllocator *t_alloc)
qvirtio_set_driver_ok(dev);
- qmp_discard_response("{ 'execute': 'block_resize', "
- " 'arguments': { 'device': 'drive0', "
- " 'size': %d } }", n_size);
+ qtest_qmp_assert_success(global_qtest,
+ "{ 'execute': 'block_resize', "
+ " 'arguments': { 'device': 'drive0', "
+ " 'size': %d } }", n_size);
qvirtio_wait_config_isr(dev, QVIRTIO_BLK_TIMEOUT_US);
capacity = qvirtio_config_readq(dev, 0);
@@ -502,9 +500,10 @@ static void msix(void *obj, void *u_data, QGuestAllocator *t_alloc)
qvirtio_set_driver_ok(dev);
- qmp_discard_response("{ 'execute': 'block_resize', "
- " 'arguments': { 'device': 'drive0', "
- " 'size': %d } }", n_size);
+ qtest_qmp_assert_success(global_qtest,
+ "{ 'execute': 'block_resize', "
+ " 'arguments': { 'device': 'drive0', "
+ " 'size': %d } }", n_size);
qvirtio_wait_config_isr(dev, QVIRTIO_BLK_TIMEOUT_US);
@@ -758,9 +757,10 @@ static void resize(void *obj, void *data, QGuestAllocator *t_alloc)
vq = test_basic(dev, t_alloc);
- qmp_discard_response("{ 'execute': 'block_resize', "
- " 'arguments': { 'device': 'drive0', "
- " 'size': %d } }", n_size);
+ qtest_qmp_assert_success(global_qtest,
+ "{ 'execute': 'block_resize', "
+ " 'arguments': { 'device': 'drive0', "
+ " 'size': %d } }", n_size);
qvirtio_wait_queue_isr(qts, dev, vq, QVIRTIO_BLK_TIMEOUT_US);