提交 359b938b 编写于 作者: J Julio Faracco 提交者: Erik Skultety

qemu: Fix broken autostart symlink after renaming domain

If a domain is configured to start on boot, it has a symlink to the
domain definition inside the autostart directory. If you rename this
domain, the definition is renamed too. The symlink need to be pointed to
this renamed file. This commit recreates the symlink after renaming the
XML file.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1594985Signed-off-by: NJulio Faracco <jcfaracco@gmail.com>
Signed-off-by: NErik Skultety <eskultet@redhat.com>
上级 1bff5bbe
......@@ -20917,6 +20917,8 @@ qemuDomainRenameCallback(virDomainObjPtr vm,
char *old_dom_name = NULL;
char *new_dom_cfg_file = NULL;
char *old_dom_cfg_file = NULL;
char *new_dom_autostart_link = NULL;
char *old_dom_autostart_link = NULL;
virCheckFlags(0, ret);
......@@ -20937,6 +20939,21 @@ qemuDomainRenameCallback(virDomainObjPtr vm,
vm->def->name)))
goto cleanup;
if (vm->autostart) {
if (!(new_dom_autostart_link = virDomainConfigFile(cfg->autostartDir,
new_dom_name)) ||
!(old_dom_autostart_link = virDomainConfigFile(cfg->autostartDir,
vm->def->name)))
goto cleanup;
if (symlink(new_dom_cfg_file, new_dom_autostart_link) < 0) {
virReportSystemError(errno,
_("Failed to create symlink '%s to '%s'"),
new_dom_autostart_link, new_dom_cfg_file);
goto cleanup;
}
}
event_old = virDomainEventLifecycleNewFromObj(vm,
VIR_DOMAIN_EVENT_UNDEFINED,
VIR_DOMAIN_EVENT_UNDEFINED_RENAMED);
......@@ -20957,12 +20974,24 @@ qemuDomainRenameCallback(virDomainObjPtr vm,
goto rollback;
}
if (vm->autostart) {
if (virFileIsLink(old_dom_autostart_link) &&
unlink(old_dom_autostart_link) < 0) {
virReportSystemError(errno,
_("Failed to delete symlink '%s'"),
old_dom_autostart_link);
goto rollback;
}
}
event_new = virDomainEventLifecycleNewFromObj(vm,
VIR_DOMAIN_EVENT_DEFINED,
VIR_DOMAIN_EVENT_DEFINED_RENAMED);
ret = 0;
cleanup:
VIR_FREE(old_dom_autostart_link);
VIR_FREE(new_dom_autostart_link);
VIR_FREE(old_dom_cfg_file);
VIR_FREE(new_dom_cfg_file);
VIR_FREE(old_dom_name);
......@@ -20982,6 +21011,10 @@ qemuDomainRenameCallback(virDomainObjPtr vm,
if (virFileExists(new_dom_cfg_file))
unlink(new_dom_cfg_file);
if (vm->autostart &&
virFileExists(new_dom_autostart_link))
unlink(new_dom_autostart_link);
goto cleanup;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册