From: Peter Krempa <[email protected]> We don't actually look at any of the information in 'backing-image' field so we can ask qemu not to send it to us.
Signed-off-by: Peter Krempa <[email protected]> --- src/qemu/qemu_monitor.c | 1 + src/qemu/qemu_monitor_json.c | 12 ++++++++++-- src/qemu/qemu_monitor_priv.h | 3 +++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 1434da7f70..ffd8a281b9 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -585,6 +585,7 @@ qemuMonitorOpenInternal(virDomainObj *vm, if (priv) { mon->blockjobMaskProtocol = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKJOB_BACKING_MASK_PROTOCOL); + mon->queryBlockFlat = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_QUERY_BLOCK_FLAT); } if (virSetCloseExec(mon->fd) < 0) { diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 971e8dd63f..6eff95f44a 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -2243,7 +2243,9 @@ qemuMonitorJSONQueryNamedBlockNodes(qemuMonitor *mon) * @mon: Monitor pointer * * This helper will attempt to make a "query-block" call and check for - * errors before returning with the reply. + * errors before returning with the reply. If qemu supports 'flat' mode + * (which ommits 'backing-image' field in the reply objects) we will enable + * it as no callers need that information. * * Returns: NULL on error, reply on success */ @@ -2252,8 +2254,14 @@ qemuMonitorJSONQueryBlock(qemuMonitor *mon) { g_autoptr(virJSONValue) cmd = NULL; g_autoptr(virJSONValue) reply = NULL; + virTristateBool flat = VIR_TRISTATE_BOOL_ABSENT; + + if (mon->queryBlockFlat) + flat = VIR_TRISTATE_BOOL_YES; - if (!(cmd = qemuMonitorJSONMakeCommand("query-block", NULL))) + if (!(cmd = qemuMonitorJSONMakeCommand("query-block", + "T:flat", flat, + NULL))) return NULL; if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0 || diff --git a/src/qemu/qemu_monitor_priv.h b/src/qemu/qemu_monitor_priv.h index 198105007e..ee644123ca 100644 --- a/src/qemu/qemu_monitor_priv.h +++ b/src/qemu/qemu_monitor_priv.h @@ -90,6 +90,9 @@ struct _qemuMonitor { /* use the backing-mask-protocol flag of block-commit/stream */ bool blockjobMaskProtocol; + + /* 'query-block' supports flat mode */ + bool queryBlockFlat; }; -- 2.53.0
