From 5ea24bbb54f51ede24423396bc8a3daf1b3a4eba Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Mon, 21 Jan 2019 12:28:25 +0100 Subject: [PATCH] qemu: Don't reject making domain persistent if block copy is running MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add documentation that the 'VIR_DOMAIN_BLOCK_COPY_TRANSIENT_JOB' flag is auto-assumed if the block copy job is started while the VM is transient and remove the restriction to define the domain when copy is running. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- src/libvirt-domain.c | 13 ++----------- src/qemu/qemu_driver.c | 6 ------ 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index b04929a6ed..163f879163 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -6133,11 +6133,6 @@ virDomainGetBlockInfo(virDomainPtr domain, const char *disk, * virDomainUndefine(). A previous definition for this domain would be * overridden if it already exists. * - * Some hypervisors may prevent this operation if there is a current - * block copy operation on a transient domain with the same id as the - * domain being defined; in that case, use virDomainBlockJobAbort() to - * stop the block copy first. - * * virDomainFree should be used to free the resources after the * domain object is no longer needed. * @@ -6181,11 +6176,6 @@ virDomainDefineXML(virConnectPtr conn, const char *xml) * virDomainUndefine(). A previous definition for this domain would be * overridden if it already exists. * - * Some hypervisors may prevent this operation if there is a current - * block copy operation on a transient domain with the same id as the - * domain being defined; in that case, use virDomainBlockJobAbort() to - * stop the block copy first. - * * virDomainFree should be used to free the resources after the * domain object is no longer needed. * @@ -10312,7 +10302,8 @@ virDomainBlockRebase(virDomainPtr dom, const char *disk, * * If @flags contains VIR_DOMAIN_BLOCK_COPY_TRANSIENT_JOB the job will not be * recoverable if the VM is turned off while job is active. This flag will - * remove the restriction of copy jobs to transient domains. + * remove the restriction of copy jobs to transient domains. Note that this flag + * is automatically implied if the VM is transient at the time it's started. * * The @disk parameter is either an unambiguous source name of the * block device (the sub-element, such as diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index f6fba3a6ad..26edbf799f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -7709,12 +7709,6 @@ qemuDomainDefineXMLFlags(virConnectPtr conn, goto cleanup; def = NULL; - if (qemuDomainHasBlockjob(vm, true)) { - virReportError(VIR_ERR_BLOCK_COPY_ACTIVE, "%s", - _("domain has active block job")); - virDomainObjAssignDef(vm, NULL, false, NULL); - goto cleanup; - } vm->persistent = 1; if (virDomainSaveConfig(cfg->configDir, driver->caps,