mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-23 20:02:21 +00:00
qemu: add VIR_DOMAIN_UNDEFINE_KEEP_NVRAM support
Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
This commit is contained in:
parent
bdf83c011d
commit
048e5c64f7
@ -7327,7 +7327,15 @@ qemuDomainUndefineFlags(virDomainPtr dom,
|
|||||||
|
|
||||||
virCheckFlags(VIR_DOMAIN_UNDEFINE_MANAGED_SAVE |
|
virCheckFlags(VIR_DOMAIN_UNDEFINE_MANAGED_SAVE |
|
||||||
VIR_DOMAIN_UNDEFINE_SNAPSHOTS_METADATA |
|
VIR_DOMAIN_UNDEFINE_SNAPSHOTS_METADATA |
|
||||||
VIR_DOMAIN_UNDEFINE_NVRAM, -1);
|
VIR_DOMAIN_UNDEFINE_NVRAM |
|
||||||
|
VIR_DOMAIN_UNDEFINE_KEEP_NVRAM, -1);
|
||||||
|
|
||||||
|
if ((flags & VIR_DOMAIN_UNDEFINE_NVRAM) &&
|
||||||
|
(flags & VIR_DOMAIN_UNDEFINE_KEEP_NVRAM)) {
|
||||||
|
virReportError(VIR_ERR_OPERATION_INVALID,
|
||||||
|
"%s", _("cannot both keep and delete nvram"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(vm = qemuDomObjFromDomain(dom)))
|
if (!(vm = qemuDomObjFromDomain(dom)))
|
||||||
return -1;
|
return -1;
|
||||||
@ -7379,18 +7387,18 @@ qemuDomainUndefineFlags(virDomainPtr dom,
|
|||||||
if (!virDomainObjIsActive(vm) &&
|
if (!virDomainObjIsActive(vm) &&
|
||||||
vm->def->os.loader && vm->def->os.loader->nvram &&
|
vm->def->os.loader && vm->def->os.loader->nvram &&
|
||||||
virFileExists(vm->def->os.loader->nvram)) {
|
virFileExists(vm->def->os.loader->nvram)) {
|
||||||
if (!(flags & VIR_DOMAIN_UNDEFINE_NVRAM)) {
|
if ((flags & VIR_DOMAIN_UNDEFINE_NVRAM)) {
|
||||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
|
||||||
_("cannot delete inactive domain with nvram"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (unlink(vm->def->os.loader->nvram) < 0) {
|
if (unlink(vm->def->os.loader->nvram) < 0) {
|
||||||
virReportSystemError(errno,
|
virReportSystemError(errno,
|
||||||
_("failed to remove nvram: %s"),
|
_("failed to remove nvram: %s"),
|
||||||
vm->def->os.loader->nvram);
|
vm->def->os.loader->nvram);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
} else if (!(flags & VIR_DOMAIN_UNDEFINE_KEEP_NVRAM)) {
|
||||||
|
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||||
|
_("cannot delete inactive domain with nvram"));
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm) < 0)
|
if (virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm) < 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user