If we are using -blockdev, then node names are always available
(because we set them). But when not using it, we were scraping node
names after reconnecting a new libvirtd to an existing guest (see
qemuProcessReconnect), and after any block job that may have changed
the set of node names we care about, but forgot to scrape the names
when first starting a guest. Do so now in order to allow the
checkpoint code to always have access to a node name without having to
repeat a node name scrape itself.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
Grepping for use of qemuBlockNodeNamesDetect, I see that
qemuDomainSetBlockThreshold is still scraping names, and that hotplug
and cdrom disk changes do not appear to scrape names. Either of these
situations could interfere with checkpoints; perhaps they should also
be addressed here...
---
src/qemu/qemu_process.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 75205bc121..53b8ff36f6 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -7060,6 +7060,8 @@ qemuProcessRefreshState(virQEMUDriverPtr driver,
virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob)
{
+ qemuDomainObjPrivatePtr priv = vm->privateData;
+
VIR_DEBUG("Fetching list of active devices");
if (qemuDomainUpdateDeviceList(driver, vm, asyncJob) < 0)
return -1;
@@ -7075,6 +7077,9 @@ qemuProcessRefreshState(virQEMUDriverPtr driver,
VIR_DEBUG("Updating disk data");
if (qemuProcessRefreshDisks(driver, vm, asyncJob) < 0)
return -1;
+ if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV) &&
+ qemuBlockNodeNamesDetect(driver, vm, asyncJob) < 0)
+ return -1;
return 0;
}
--
2.20.1