On 5/23/19 11:33 AM, Daniel P. Berrangé wrote:
The various steps involved in reconnecting to a domain may cause
updates
to the virDomainObj struct that need to be reflected in the saved status
file.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
Reviewed-by: Laine Stump <laine(a)laine.org>
---
src/libxl/libxl_driver.c | 3 +++
src/lxc/lxc_process.c | 5 +++++
2 files changed, 8 insertions(+)
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index e2819eb0cc..2adb604f0f 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -454,6 +454,9 @@ libxlReconnectDomain(virDomainObjPtr vm,
libxlReconnectNotifyNets(vm->def);
+ if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, cfg->caps) <
0)
+ VIR_WARN("Cannot update XML for running Xen guest %s",
vm->def->name);
+
/* now that we know it's reconnected call the hook if present */
if (virHookPresent(VIR_HOOK_DRIVER_LIBXL) &&
STRNEQ("Domain-0", vm->def->name)) {
diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
index b59cbbaba5..714eef20c8 100644
--- a/src/lxc/lxc_process.c
+++ b/src/lxc/lxc_process.c
@@ -1680,6 +1680,7 @@ virLXCProcessReconnectDomain(virDomainObjPtr vm,
{
virLXCDriverPtr driver = opaque;
virLXCDomainObjPrivatePtr priv;
+ virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver);
int ret = -1;
virObjectLock(vm);
@@ -1722,6 +1723,9 @@ virLXCProcessReconnectDomain(virDomainObjPtr vm,
virLXCProcessReconnectNotifyNets(vm->def);
+ if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm,
driver->caps) < 0)
+ VIR_WARN("Cannot update XML for running LXC guest %s",
vm->def->name);
+
/* now that we know it's reconnected call the hook if present */
if (virHookPresent(VIR_HOOK_DRIVER_LXC)) {
char *xml = virDomainDefFormat(vm->def, driver->caps, 0);
@@ -1742,6 +1746,7 @@ virLXCProcessReconnectDomain(virDomainObjPtr vm,
ret = 0;
cleanup:
+ virObjectUnref(cfg);
virObjectUnlock(vm);
return ret;