From nobody Sat Apr 27 05:04:11 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.zohomail.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 1506003488730247.00524712732192; Thu, 21 Sep 2017 07:18:08 -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 24E25A34AE; Thu, 21 Sep 2017 14:18:05 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 22F2D6BF74; Thu, 21 Sep 2017 14:18:00 +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 0E30F3FAD1; Thu, 21 Sep 2017 14:17:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v8LDdmXH032028 for ; Thu, 21 Sep 2017 09:39:48 -0400 Received: by smtp.corp.redhat.com (Postfix) id DA0DA5EE0A; Thu, 21 Sep 2017 13:39:48 +0000 (UTC) Received: from mx1.redhat.com (ext-mx09.extmail.prod.ext.phx2.redhat.com [10.5.110.38]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D4AD75EDF2 for ; Thu, 21 Sep 2017 13:39:46 +0000 (UTC) Received: from relay.sw.ru (mailhub.sw.ru [195.214.232.25]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 532AF65980 for ; Thu, 21 Sep 2017 13:39:43 +0000 (UTC) Received: from dim-vz7.qa.sw.ru (msk-vpn.virtuozzo.com [195.214.232.6]) by relay.sw.ru (8.13.4/8.13.4) with ESMTP id v8LDde4k025773 for ; Thu, 21 Sep 2017 16:39:41 +0300 (MSK) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 24E25A34AE Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 24E25A34AE DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 532AF65980 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=virtuozzo.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=nshirokovskiy@virtuozzo.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 532AF65980 From: Nikolay Shirokovskiy To: libvir-list@redhat.com Date: Thu, 21 Sep 2017 16:39:38 +0300 Message-Id: <1506001179-562177-2-git-send-email-nshirokovskiy@virtuozzo.com> In-Reply-To: <1506001179-562177-1-git-send-email-nshirokovskiy@virtuozzo.com> References: <1506001179-562177-1-git-send-email-nshirokovskiy@virtuozzo.com> X-Greylist: Delayed for 25:40:43 by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 21 Sep 2017 13:39:45 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 21 Sep 2017 13:39:45 +0000 (UTC) for IP:'195.214.232.25' DOMAIN:'mailhub.sw.ru' HELO:'relay.sw.ru' FROM:'nshirokovskiy@virtuozzo.com' RCPT:'' X-RedHat-Spam-Score: -0.001 (SPF_PASS) 195.214.232.25 mailhub.sw.ru 195.214.232.25 mailhub.sw.ru X-Scanned-By: MIMEDefang 2.78 on 10.5.110.38 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/2] qemu: make explicit that formatting migratable imposes secure 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]); Thu, 21 Sep 2017 14:18:05 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" qemu code always set VIR_DOMAIN_XML_SECURE flags when VIR_DOMAIN_XML_MIGRAT= ABLE is set. At the same time qemu code itself does not analyse VIR_DOMAIN_XML_S= ECURE presense in any way. Thus we can just append secure flag conditionally down the stack before call to virDomainDefFormatInternal which actually che= cks secure flag. This drops a couple of adhoc macros also. I would even put appending secure flag if migratable is present into virDomainDefFormatConvertXMLFlags but not all hypervisors drivers agree on this point. --- src/qemu/qemu_domain.c | 27 ++++++++++++++------------- src/qemu/qemu_domain.h | 4 ---- src/qemu/qemu_driver.c | 5 ++--- src/qemu/qemu_migration.c | 4 +--- src/qemu/qemu_migration_cookie.c | 1 - 5 files changed, 17 insertions(+), 24 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 50b536e..6b458c1 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4682,6 +4682,9 @@ qemuDomainDefFormatBufInternal(virQEMUDriverPtr drive= r, } =20 format: + if (flags & VIR_DOMAIN_XML_MIGRATABLE) + flags |=3D VIR_DOMAIN_XML_SECURE; + ret =3D virDomainDefFormatInternal(def, caps, virDomainDefFormatConvertXMLFlags(fla= gs), buf); @@ -4762,10 +4765,10 @@ qemuDomainDefFormatLive(virQEMUDriverPtr driver, bool inactive, bool compatible) { - unsigned int flags =3D QEMU_DOMAIN_FORMAT_LIVE_FLAGS; + unsigned int flags =3D VIR_DOMAIN_XML_UPDATE_CPU; =20 if (inactive) - flags |=3D VIR_DOMAIN_XML_INACTIVE; + flags |=3D VIR_DOMAIN_XML_INACTIVE | VIR_DOMAIN_XML_SECURE; if (compatible) flags |=3D VIR_DOMAIN_XML_MIGRATABLE; =20 @@ -5212,8 +5215,8 @@ qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm, virUUIDFormat(vm->def->uuid, uuidstr); newxml =3D virDomainSnapshotDefFormat( uuidstr, snapshot->def, caps, xmlopt, - virDomainDefFormatConvertXMLFlags(QEMU_DOMAIN_FORMAT_LIVE_FLAGS), - 1); + virDomainDefFormatConvertXMLFlags(VIR_DOMAIN_XML_SECURE | + VIR_DOMAIN_XML_UPDATE_CPU), 1); if (newxml =3D=3D NULL) return -1; =20 @@ -6263,9 +6266,6 @@ qemuDomainMigratableDefCheckABIStability(virQEMUDrive= rPtr driver, } =20 =20 -#define COPY_FLAGS (VIR_DOMAIN_XML_SECURE | \ - VIR_DOMAIN_XML_MIGRATABLE) - bool qemuDomainDefCheckABIStability(virQEMUDriverPtr driver, virDomainDefPtr src, @@ -6275,8 +6275,10 @@ qemuDomainDefCheckABIStability(virQEMUDriverPtr driv= er, virDomainDefPtr migratableDefDst =3D NULL; bool ret =3D false; =20 - if (!(migratableDefSrc =3D qemuDomainDefCopy(driver, src, COPY_FLAGS))= || - !(migratableDefDst =3D qemuDomainDefCopy(driver, dst, COPY_FLAGS))) + if (!(migratableDefSrc =3D qemuDomainDefCopy(driver, src, + VIR_DOMAIN_XML_MIGRATABLE))= || + !(migratableDefDst =3D qemuDomainDefCopy(driver, dst, + VIR_DOMAIN_XML_MIGRATABLE))) goto cleanup; =20 ret =3D qemuDomainMigratableDefCheckABIStability(driver, @@ -6300,9 +6302,10 @@ qemuDomainCheckABIStability(virQEMUDriverPtr driver, char *xml =3D NULL; bool ret =3D false; =20 - if (!(xml =3D qemuDomainFormatXML(driver, vm, COPY_FLAGS)) || + if (!(xml =3D qemuDomainFormatXML(driver, vm, VIR_DOMAIN_XML_MIGRATABL= E)) || !(migratableSrc =3D qemuDomainDefFromXML(driver, xml)) || - !(migratableDst =3D qemuDomainDefCopy(driver, dst, COPY_FLAGS))) + !(migratableDst =3D qemuDomainDefCopy(driver, dst, + VIR_DOMAIN_XML_MIGRATABLE))) goto cleanup; =20 ret =3D qemuDomainMigratableDefCheckABIStability(driver, @@ -6316,8 +6319,6 @@ qemuDomainCheckABIStability(virQEMUDriverPtr driver, return ret; } =20 -#undef COPY_FLAGS - =20 bool qemuDomainAgentAvailable(virDomainObjPtr vm, diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index b291dc3..7c2f91a 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -39,10 +39,6 @@ # include "virobject.h" # include "logging/log_manager.h" =20 -# define QEMU_DOMAIN_FORMAT_LIVE_FLAGS \ - (VIR_DOMAIN_XML_SECURE | \ - VIR_DOMAIN_XML_UPDATE_CPU) - # if ULONG_MAX =3D=3D 4294967295 /* QEMU has a 64-bit limit, but we are limited by our historical choice of * representing bandwidth in a long instead of a 64-bit int. */ diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 9a21995..d9dff93 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -6282,7 +6282,7 @@ qemuDomainSaveImageUpdateDef(virQEMUDriverPtr driver, =20 if (!(newdef_migr =3D qemuDomainDefCopy(driver, newdef, - QEMU_DOMAIN_FORMAT_LIVE_FLAGS | + VIR_DOMAIN_XML_UPDATE_CPU | VIR_DOMAIN_XML_MIGRATABLE))) goto cleanup; =20 @@ -6789,7 +6789,6 @@ qemuDomainSaveImageDefineXML(virConnectPtr conn, cons= t char *path, =20 if (!(data->xml =3D qemuDomainDefFormatXML(driver, newdef, VIR_DOMAIN_XML_INACTIVE | - VIR_DOMAIN_XML_SECURE | VIR_DOMAIN_XML_MIGRATABLE))) goto cleanup; =20 @@ -6995,7 +6994,7 @@ static char goto cleanup; =20 if ((flags & VIR_DOMAIN_XML_MIGRATABLE)) - flags |=3D QEMU_DOMAIN_FORMAT_LIVE_FLAGS; + flags |=3D VIR_DOMAIN_XML_UPDATE_CPU; =20 ret =3D qemuDomainFormatXML(driver, vm, flags); =20 diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 492815b..db0b4c5 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2575,7 +2575,6 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, int hookret; =20 if (!(xml =3D qemuDomainDefFormatXML(driver, *def, - VIR_DOMAIN_XML_SECURE | VIR_DOMAIN_XML_MIGRATABLE))) goto cleanup; =20 @@ -3639,7 +3638,6 @@ qemuMigrationRun(virQEMUDriverPtr driver, } else { virDomainDefPtr def =3D vm->newDef ? vm->newDef : vm->def; if (!(persistDef =3D qemuDomainDefCopy(driver, def, - VIR_DOMAIN_XML_SECURE | VIR_DOMAIN_XML_MIGRATABLE= ))) goto cleanup; } @@ -4108,7 +4106,7 @@ static int doPeer2PeerMigrate2(virQEMUDriverPtr drive= r, * and pass it to Prepare2. */ if (!(dom_xml =3D qemuDomainFormatXML(driver, vm, - QEMU_DOMAIN_FORMAT_LIVE_FLAGS | + VIR_DOMAIN_XML_UPDATE_CPU | VIR_DOMAIN_XML_MIGRATABLE))) return -1; =20 diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_coo= kie.c index 4914c77..38213ae 100644 --- a/src/qemu/qemu_migration_cookie.c +++ b/src/qemu/qemu_migration_cookie.c @@ -738,7 +738,6 @@ qemuMigrationCookieXMLFormat(virQEMUDriverPtr driver, if (qemuDomainDefFormatBuf(driver, mig->persistent, VIR_DOMAIN_XML_INACTIVE | - VIR_DOMAIN_XML_SECURE | VIR_DOMAIN_XML_MIGRATABLE, buf) < 0) return -1; --=20 1.8.3.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sat Apr 27 05:04:11 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.zohomail.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 1506002570949611.8754586164774; Thu, 21 Sep 2017 07:02:50 -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 5897FC047B9A; Thu, 21 Sep 2017 14:02:49 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 01B575C8B2; Thu, 21 Sep 2017 14:02:49 +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 26EA73FAD0; Thu, 21 Sep 2017 14:02:48 +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 v8LDdlEV032015 for ; Thu, 21 Sep 2017 09:39:48 -0400 Received: by smtp.corp.redhat.com (Postfix) id C6D8E5D988; Thu, 21 Sep 2017 13:39:47 +0000 (UTC) Received: from mx1.redhat.com (ext-mx07.extmail.prod.ext.phx2.redhat.com [10.5.110.31]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C2F0A5D986 for ; Thu, 21 Sep 2017 13:39:45 +0000 (UTC) Received: from relay.sw.ru (mailhub.sw.ru [195.214.232.25]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 51DD1C0828AF for ; Thu, 21 Sep 2017 13:39:43 +0000 (UTC) Received: from dim-vz7.qa.sw.ru (msk-vpn.virtuozzo.com [195.214.232.6]) by relay.sw.ru (8.13.4/8.13.4) with ESMTP id v8LDde4l025773 for ; Thu, 21 Sep 2017 16:39:41 +0300 (MSK) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 5897FC047B9A Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 5897FC047B9A DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 51DD1C0828AF Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=virtuozzo.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=nshirokovskiy@virtuozzo.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 51DD1C0828AF From: Nikolay Shirokovskiy To: libvir-list@redhat.com Date: Thu, 21 Sep 2017 16:39:39 +0300 Message-Id: <1506001179-562177-3-git-send-email-nshirokovskiy@virtuozzo.com> In-Reply-To: <1506001179-562177-1-git-send-email-nshirokovskiy@virtuozzo.com> References: <1506001179-562177-1-git-send-email-nshirokovskiy@virtuozzo.com> X-Greylist: Delayed for 25:40:43 by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 21 Sep 2017 13:39:44 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 21 Sep 2017 13:39:44 +0000 (UTC) for IP:'195.214.232.25' DOMAIN:'mailhub.sw.ru' HELO:'relay.sw.ru' FROM:'nshirokovskiy@virtuozzo.com' RCPT:'' X-RedHat-Spam-Score: -0.001 (SPF_PASS) 195.214.232.25 mailhub.sw.ru 195.214.232.25 mailhub.sw.ru X-Scanned-By: MIMEDefang 2.78 on 10.5.110.31 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 2/2] qemu: don't update cpu unconditionally for migratable flag 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.31]); Thu, 21 Sep 2017 14:02:49 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Imagine if we use 'virsh dumpxml --migratable' for offline domain to get config to tweak before migration. Currenly cpu section will be expanded, host-cpu mode turns into custom and migration fails because of ABI check. Looks like ABI check does not make much sence for offline migration but we don't want host-cpu mode to turn into custom in the first place. Using --migratable is reasonable in this case because this flags makes changes for inactive configs too like removing automatically added parts that old versions can not handle. I suggest not to update cpu for inactive configs. This appoach is coherent with the way migration works for inactive configs in case it is not specified externally to migration: function qemuMigrationCookieXM= LFormat don't expand cpu too. Adding flag for active configs is useless because qemuDomainFormatXML will clear it in this case. Thus we can skip adding update flag altogether. --- I suppose next usage of libvirt in case one need to migrate with tweaked co= nfigs: inactive domain: virsh dumpxml DOM --migratable > dom.xml virsh migrate DOM --offline --persistent --xml dom.xml active domain: virsh dumpxml DOM --migratable > active.xml virsh dumpxml DOM --migratable --inactive > inactive.xml virsh migrate DOM --persistent --xml active.xml --persistent-xml inacti= ve.xml src/qemu/qemu_driver.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d9dff93..3223554 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -6993,9 +6993,6 @@ static char if (qemuDomainUpdateCurrentMemorySize(driver, vm) < 0) goto cleanup; =20 - if ((flags & VIR_DOMAIN_XML_MIGRATABLE)) - flags |=3D VIR_DOMAIN_XML_UPDATE_CPU; - ret =3D qemuDomainFormatXML(driver, vm, flags); =20 cleanup: --=20 1.8.3.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list