diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 9a13076236..135cb248ea 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -1046,7 +1046,8 @@ bhyveDomainSetMetadata(virDomainPtr dom, goto cleanup; ret = virDomainObjSetMetadata(vm, type, metadata, key, uri, caps, - privconn->xmlopt, BHYVE_CONFIG_DIR, flags); + privconn->xmlopt, BHYVE_STATE_DIR, + BHYVE_CONFIG_DIR, flags); cleanup: virObjectUnref(caps); diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index d8d1fe7585..1fecf9bb54 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -18140,6 +18140,9 @@ virDomainSaveXML(const char *configDir, char *configFile = NULL; int ret = -1; + if (!configDir) + return 0; + if ((configFile = virDomainConfigFile(configDir, def->name)) == NULL) goto cleanup; @@ -19770,6 +19773,7 @@ virDomainObjSetMetadata(virDomainObjPtr vm, const char *uri, virCapsPtr caps, virDomainXMLOptionPtr xmlopt, + const char *stateDir, const char *configDir, unsigned int flags) { @@ -19782,12 +19786,17 @@ virDomainObjSetMetadata(virDomainObjPtr vm, &persistentDef) < 0) return -1; - if (flags & VIR_DOMAIN_AFFECT_LIVE) + if (flags & VIR_DOMAIN_AFFECT_LIVE) { if (virDomainDefSetMetadata(vm->def, type, metadata, key, uri) < 0) return -1; + if (virDomainSaveStatus(xmlopt, stateDir, vm) < 0) + return -1; + } + if (flags & VIR_DOMAIN_AFFECT_CONFIG) { - if (virDomainDefSetMetadata(persistentDef, type, metadata, key, uri) < 0) + if (virDomainDefSetMetadata(persistentDef, type, metadata, key, + uri) < 0) return -1; if (virDomainSaveConfig(configDir, persistentDef) < 0) diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 45c8552ce7..d79ef9b2d4 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2664,6 +2664,7 @@ int virDomainObjSetMetadata(virDomainObjPtr vm, const char *uri, virCapsPtr caps, virDomainXMLOptionPtr xmlopt, + const char *stateDir, const char *configDir, unsigned int flags); diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index f094f86b0e..05d10b4ade 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -5600,7 +5600,8 @@ lxcDomainSetMetadata(virDomainPtr dom, goto cleanup; ret = virDomainObjSetMetadata(vm, type, metadata, key, uri, caps, - driver->xmlopt, cfg->configDir, flags); + driver->xmlopt, cfg->stateDir, + cfg->configDir, flags); cleanup: virObjectUnlock(vm); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index b85d9098e9..26db4e9225 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -16118,7 +16118,8 @@ qemuDomainSetMetadata(virDomainPtr dom, goto cleanup; ret = virDomainObjSetMetadata(vm, type, metadata, key, uri, caps, - driver->xmlopt, cfg->configDir, flags); + driver->xmlopt, cfg->stateDir, + cfg->configDir, flags); cleanup: virObjectUnlock(vm); diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 67f637d9ef..3b22cf6546 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -3042,7 +3042,7 @@ static int testDomainSetMetadata(virDomainPtr dom, ret = virDomainObjSetMetadata(privdom, type, metadata, key, uri, privconn->caps, privconn->xmlopt, - NULL, flags); + NULL, NULL, flags); cleanup: if (privdom)