From nobody Fri Apr 26 15:43:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1490958848117770.7256308455119; Fri, 31 Mar 2017 04:14:08 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 798D531B316; Fri, 31 Mar 2017 11:14:05 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2B472B58C0; Fri, 31 Mar 2017 11:14:05 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id B631918523CC; Fri, 31 Mar 2017 11:14:03 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v2VBE1vD009989 for ; Fri, 31 Mar 2017 07:14:01 -0400 Received: by smtp.corp.redhat.com (Postfix) id E9D0918EC0; Fri, 31 Mar 2017 11:14:01 +0000 (UTC) Received: from moe.brq.redhat.com (dhcp129-131.brq.redhat.com [10.34.129.131]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7068518E4E for ; Fri, 31 Mar 2017 11:13:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 798D531B316 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 798D531B316 From: Michal Privoznik To: libvir-list@redhat.com Date: Fri, 31 Mar 2017 13:13:50 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/2] virDomainDiskDefForeachPath: Prefer virStorageSourceIsLocalStorage X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Fri, 31 Mar 2017 11:14:07 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Michal Privoznik --- src/conf/domain_conf.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 1b0a55b..01553b5 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -25342,10 +25342,8 @@ virDomainDiskDefForeachPath(virDomainDiskDefPtr di= sk, } =20 for (tmp =3D disk->src; tmp; tmp =3D tmp->backingStore) { - int actualType =3D virStorageSourceGetActualType(tmp); /* execute the callback only for local storage */ - if (actualType !=3D VIR_STORAGE_TYPE_NETWORK && - actualType !=3D VIR_STORAGE_TYPE_VOLUME && + if (virStorageSourceIsLocalStorage(tmp) && tmp->path) { if (iter(disk, tmp->path, depth, opaque) < 0) goto cleanup; --=20 2.10.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri Apr 26 15:43:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1490959261534727.6229578417036; Fri, 31 Mar 2017 04:21:01 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CCFB661D03; Fri, 31 Mar 2017 11:20:59 +0000 (UTC) Received: from colo-mx.corp.redhat.com (unknown [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 33CC184711; Fri, 31 Mar 2017 11:20:59 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id D276E5EC63; Fri, 31 Mar 2017 11:20:56 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v2VBE4Aq010000 for ; Fri, 31 Mar 2017 07:14:04 -0400 Received: by smtp.corp.redhat.com (Postfix) id CBE5318E43; Fri, 31 Mar 2017 11:14:04 +0000 (UTC) Received: from moe.brq.redhat.com (dhcp129-131.brq.redhat.com [10.34.129.131]) by smtp.corp.redhat.com (Postfix) with ESMTP id 45BB218E4E for ; Fri, 31 Mar 2017 11:14:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com CCFB661D03 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com CCFB661D03 From: Michal Privoznik To: libvir-list@redhat.com Date: Fri, 31 Mar 2017 13:13:51 +0200 Message-Id: <55c8d0cf49a87b1e52bcdc15bfea1aef15a1131c.1490958792.git.mprivozn@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 2/2] Introduce and use virDomainDiskZeroSource X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Fri, 31 Mar 2017 11:21:00 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Currently, if we want to zero out disk source (e,g, due to startupPolicy when starting up a domain) we use virDomainDiskSetSource(disk, NULL). This works well for file based storage (storage type file, dir, or block). But it doesn't work at all for other types like volume and network. So imagine that you have a domain that has a CDROM configured which source is a volume from an inactive pool. Because it is startupPolicy=3D'optional', the CDROM is empty when the domain starts. However, the source element is not cleared out in the status XML and thus when the daemon restarts and tries to reconnect to the domain it refreshes the disks (which fails - the storage pool is still not running) and thus the domain is killed. Signed-off-by: Michal Privoznik --- src/conf/domain_conf.c | 23 +++++++++++++++++++++++ src/conf/domain_conf.h | 1 + src/libvirt_private.syms | 1 + src/qemu/qemu_domain.c | 2 +- src/qemu/qemu_process.c | 2 +- src/vmx/vmx.c | 6 +++--- src/xenconfig/xen_xm.c | 2 +- 7 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 01553b5..a60a456 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1719,6 +1719,29 @@ virDomainDiskSetSource(virDomainDiskDefPtr def, cons= t char *src) } =20 =20 +void +virDomainDiskZeroSource(virDomainDiskDefPtr def) +{ + switch ((virStorageType) def->src->type) { + case VIR_STORAGE_TYPE_DIR: + case VIR_STORAGE_TYPE_FILE: + case VIR_STORAGE_TYPE_BLOCK: + VIR_FREE(def->src->path); + break; + case VIR_STORAGE_TYPE_NETWORK: + VIR_FREE(def->src->volume); + break; + case VIR_STORAGE_TYPE_VOLUME: + virStorageSourcePoolDefFree(def->src->srcpool); + def->src->srcpool =3D NULL; + break; + case VIR_STORAGE_TYPE_NONE: + case VIR_STORAGE_TYPE_LAST: + break; + } +} + + const char * virDomainDiskGetDriver(virDomainDiskDefPtr def) { diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 47eaace..05b544c 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2590,6 +2590,7 @@ void virDomainDiskSetType(virDomainDiskDefPtr def, in= t type); const char *virDomainDiskGetSource(virDomainDiskDef const *def); int virDomainDiskSetSource(virDomainDiskDefPtr def, const char *src) ATTRIBUTE_RETURN_CHECK; +void virDomainDiskZeroSource(virDomainDiskDefPtr def); const char *virDomainDiskGetDriver(virDomainDiskDefPtr def); int virDomainDiskSetDriver(virDomainDiskDefPtr def, const char *name) ATTRIBUTE_RETURN_CHECK; diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index b551cb8..60c90d1 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -324,6 +324,7 @@ virDomainDiskSetDriver; virDomainDiskSetFormat; virDomainDiskSetSource; virDomainDiskSetType; +virDomainDiskZeroSource; virDomainFSDefFree; virDomainFSDefNew; virDomainFSIndexByName; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 589eb18..a50b3aa 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4908,7 +4908,7 @@ qemuDomainCheckRemoveOptionalDisk(virQEMUDriverPtr dr= iver, event =3D virDomainEventDiskChangeNewFromObj(vm, src, NULL, disk->info.alias, VIR_DOMAIN_EVENT_DISK_C= HANGE_MISSING_ON_START); - ignore_value(virDomainDiskSetSource(disk, NULL)); + virDomainDiskZeroSource(disk); /* keeping the old startup policy would be invalid for new images = */ disk->startupPolicy =3D VIR_DOMAIN_STARTUP_POLICY_DEFAULT; } else { diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index a20beb1..6be0b51 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6804,7 +6804,7 @@ qemuProcessRefreshDisks(virQEMUDriverPtr driver, =20 if (info->removable) { if (info->empty) - ignore_value(virDomainDiskSetSource(disk, NULL)); + virDomainDiskZeroSource(disk); =20 if (info->tray) { if (info->tray_open) diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 31af2e9..5c833b8 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -2283,7 +2283,7 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOptio= nPtr xmlopt, virConfPtr con virDomainDiskSetType(*def, VIR_STORAGE_TYPE_BLOCK); =20 if (STRCASEEQ(fileName, "auto detect")) { - ignore_value(virDomainDiskSetSource(*def, NULL)); + virDomainDiskZeroSource(*def); (*def)->startupPolicy =3D VIR_DOMAIN_STARTUP_POLICY_OPTION= AL; } else if (virDomainDiskSetSource(*def, fileName) < 0) { goto cleanup; @@ -2294,7 +2294,7 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOptio= nPtr xmlopt, virConfPtr con virDomainDiskSetType(*def, VIR_STORAGE_TYPE_BLOCK); =20 if (STRCASEEQ(fileName, "auto detect")) { - ignore_value(virDomainDiskSetSource(*def, NULL)); + virDomainDiskZeroSource(*def); (*def)->startupPolicy =3D VIR_DOMAIN_STARTUP_POLICY_OPTION= AL; } else if (virDomainDiskSetSource(*def, fileName) < 0) { goto cleanup; @@ -2326,7 +2326,7 @@ virVMXParseDisk(virVMXContext *ctx, virDomainXMLOptio= nPtr xmlopt, virConfPtr con } =20 virDomainDiskSetType(*def, VIR_STORAGE_TYPE_FILE); - ignore_value(virDomainDiskSetSource(*def, NULL)); + virDomainDiskZeroSource(*def); } else { virReportError(VIR_ERR_INTERNAL_ERROR, _("Invalid or not yet handled value '%s' " diff --git a/src/xenconfig/xen_xm.c b/src/xenconfig/xen_xm.c index 8ef68bb..327cb65 100644 --- a/src/xenconfig/xen_xm.c +++ b/src/xenconfig/xen_xm.c @@ -140,7 +140,7 @@ xenParseXMDisk(virConfPtr conf, virDomainDefPtr def) =20 if (offset =3D=3D head) { /* No source file given, eg CDROM with no media */ - ignore_value(virDomainDiskSetSource(disk, NULL)); + virDomainDiskZeroSource(disk); } else { if (VIR_STRNDUP(tmp, head, offset - head) < 0) goto cleanup; --=20 2.10.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri Apr 26 15:43:33 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1490968951135404.7269643055147; Fri, 31 Mar 2017 07:02:31 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8B49467BA5; Fri, 31 Mar 2017 14:02:28 +0000 (UTC) Received: from colo-mx.corp.redhat.com (unknown [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5DB5F71D79; Fri, 31 Mar 2017 14:02:26 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id A33AB5EC60; Fri, 31 Mar 2017 14:02:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v2VE2Mad032012 for ; Fri, 31 Mar 2017 10:02:22 -0400 Received: by smtp.corp.redhat.com (Postfix) id 21EED81860; Fri, 31 Mar 2017 14:02:22 +0000 (UTC) Received: from moe.brq.redhat.com (dhcp129-131.brq.redhat.com [10.34.129.131]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9E4BE8186A for ; Fri, 31 Mar 2017 14:02:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 8B49467BA5 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 8B49467BA5 From: Michal Privoznik To: libvir-list@redhat.com Date: Fri, 31 Mar 2017 16:02:14 +0200 Message-Id: <408469e80702ecf6e992513e1c9b3ed677957db0.1490968826.git.mprivozn@redhat.com> In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 2/2] Introduce and use virDomainDiskEmptySource X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Fri, 31 Mar 2017 14:02:30 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Currently, if we want to zero out disk source (e,g, due to startupPolicy when starting up a domain) we use virDomainDiskSetSource(disk, NULL). This works well for file based storage (storage type file, dir, or block). But it doesn't work at all for other types like volume and network. So imagine that you have a domain that has a CDROM configured which source is a volume from an inactive pool. Because it is startupPolicy=3D'optional', the CDROM is empty when the domain starts. However, the source element is not cleared out in the status XML and thus when the daemon restarts and tries to reconnect to the domain it refreshes the disks (which fails - the storage pool is still not running) and thus the domain is killed. Signed-off-by: Michal Privoznik --- diff to v1: - Free more struct entries - Set disk type - Call the function less frequently src/conf/domain_conf.c | 33 +++++++++++++++++++++++++++++++++ src/conf/domain_conf.h | 1 + src/libvirt_private.syms | 1 + src/qemu/qemu_domain.c | 2 +- src/qemu/qemu_process.c | 2 +- 5 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 01553b5..f1f0b56 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1719,6 +1719,39 @@ virDomainDiskSetSource(virDomainDiskDefPtr def, cons= t char *src) } =20 =20 +void +virDomainDiskEmptySource(virDomainDiskDefPtr def) +{ + virStorageSourcePtr src =3D def->src; + + switch ((virStorageType) src->type) { + case VIR_STORAGE_TYPE_DIR: + case VIR_STORAGE_TYPE_FILE: + case VIR_STORAGE_TYPE_BLOCK: + VIR_FREE(src->path); + break; + case VIR_STORAGE_TYPE_NETWORK: + VIR_FREE(src->path); + VIR_FREE(src->volume); + virStorageNetHostDefFree(src->nhosts, src->hosts); + src->nhosts =3D 0; + src->hosts =3D NULL; + src->protocol =3D VIR_STORAGE_NET_PROTOCOL_NONE; + break; + case VIR_STORAGE_TYPE_VOLUME: + virStorageSourcePoolDefFree(src->srcpool); + src->srcpool =3D NULL; + break; + case VIR_STORAGE_TYPE_NONE: + case VIR_STORAGE_TYPE_LAST: + break; + } + + virStorageSourceBackingStoreClear(src); + src->type =3D VIR_STORAGE_TYPE_FILE; +} + + const char * virDomainDiskGetDriver(virDomainDiskDefPtr def) { diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 47eaace..26c0e6b 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2590,6 +2590,7 @@ void virDomainDiskSetType(virDomainDiskDefPtr def, in= t type); const char *virDomainDiskGetSource(virDomainDiskDef const *def); int virDomainDiskSetSource(virDomainDiskDefPtr def, const char *src) ATTRIBUTE_RETURN_CHECK; +void virDomainDiskEmptySource(virDomainDiskDefPtr def); const char *virDomainDiskGetDriver(virDomainDiskDefPtr def); int virDomainDiskSetDriver(virDomainDiskDefPtr def, const char *name) ATTRIBUTE_RETURN_CHECK; diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index b551cb8..92083e5 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -299,6 +299,7 @@ virDomainDiskDetectZeroesTypeFromString; virDomainDiskDetectZeroesTypeToString; virDomainDiskDeviceTypeToString; virDomainDiskDiscardTypeToString; +virDomainDiskEmptySource; virDomainDiskErrorPolicyTypeFromString; virDomainDiskErrorPolicyTypeToString; virDomainDiskFindByBusAndDst; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 589eb18..b733505 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4908,7 +4908,7 @@ qemuDomainCheckRemoveOptionalDisk(virQEMUDriverPtr dr= iver, event =3D virDomainEventDiskChangeNewFromObj(vm, src, NULL, disk->info.alias, VIR_DOMAIN_EVENT_DISK_C= HANGE_MISSING_ON_START); - ignore_value(virDomainDiskSetSource(disk, NULL)); + virDomainDiskEmptySource(disk); /* keeping the old startup policy would be invalid for new images = */ disk->startupPolicy =3D VIR_DOMAIN_STARTUP_POLICY_DEFAULT; } else { diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index a20beb1..e450d06 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6804,7 +6804,7 @@ qemuProcessRefreshDisks(virQEMUDriverPtr driver, =20 if (info->removable) { if (info->empty) - ignore_value(virDomainDiskSetSource(disk, NULL)); + virDomainDiskEmptySource(disk); =20 if (info->tray) { if (info->tray_open) --=20 2.10.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list