From nobody Wed May 14 12:56:46 2025 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; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1523780547581859.8442591253317; Sun, 15 Apr 2018 01:22:27 -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 20B123135B14; Sun, 15 Apr 2018 08:22:26 +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 CFB6880F90; Sun, 15 Apr 2018 08:22:25 +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 603F55BBF3; Sun, 15 Apr 2018 08:22:25 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w3BEgFBh008752 for ; Wed, 11 Apr 2018 10:42:15 -0400 Received: by smtp.corp.redhat.com (Postfix) id 49C0B215CDCB; Wed, 11 Apr 2018 14:42:15 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0CC38215CDAF for ; Wed, 11 Apr 2018 14:42:15 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 757FB100A75; Wed, 11 Apr 2018 16:42:10 +0200 (CEST) From: Jiri Denemark To: libvir-list@redhat.com Date: Wed, 11 Apr 2018 16:41:22 +0200 Message-Id: <032c2abc17010bf2bb45da2b0d8ced695fc043d5.1523456480.git.jdenemar@redhat.com> In-Reply-To: References: In-Reply-To: References: Mail-Followup-To: libvir-list@redhat.com X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 32/73] qemu: Move ParamsCheck closer to ParamsApply on Src side 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.46]); Sun, 15 Apr 2018 08:22:26 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" We reached the point when qemuMigrationParamsApply is the only API which sends migration parameters and capabilities to QEMU. Thus all but the TLS parameters can be set before we ask QEMU for the current values of all parameters in qemuMigrationParamsCheck. Supported migration capabilities are queried as soon as libvirt connects to QEMU monitor so we can check them anytime. Signed-off-by: Jiri Denemark Reviewed-by: J=EF=BF=BDn Tomko --- src/qemu/qemu_migration.c | 67 +++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index c97911039d..3f443a756b 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3335,6 +3335,34 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, if (qemuMigrationSrcGraphicsRelocate(driver, vm, mig, graphicsuri) < 0) VIR_WARN("unable to provide data for graphics client relocation"); =20 + if (qemuMigrationParamsSetCompression(vm, compression, migParams) < 0) + goto error; + + if (qemuMigrationParamsSetCapability(vm, + QEMU_MONITOR_MIGRATION_CAPS_AUTO_= CONVERGE, + flags & VIR_MIGRATE_AUTO_CONVERGE, + migParams) < 0) + goto error; + + if (qemuMigrationParamsSetCapability(vm, + QEMU_MONITOR_MIGRATION_CAPS_RDMA_= PIN_ALL, + flags & VIR_MIGRATE_RDMA_PIN_ALL, + migParams) < 0) + goto error; + + if (qemuMigrationParamsSetPostCopy(vm, flags & VIR_MIGRATE_POSTCOPY, + migParams) < 0) + goto error; + + if (qemuMigrationCapsGet(vm, QEMU_MONITOR_MIGRATION_CAPS_PAUSE_BEFORE_= SWITCHOVER) && + qemuMigrationParamsSetCapability(vm, + QEMU_MONITOR_MIGRATION_CAPS_PAUSE= _BEFORE_SWITCHOVER, + true, migParams) < 0) + goto error; + + if (qemuMigrationParamsCheck(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT)= < 0) + goto error; + if (flags & VIR_MIGRATE_TLS) { const char *hostname =3D NULL; =20 @@ -3354,6 +3382,10 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, goto error; } =20 + if (qemuMigrationParamsApply(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT, + migParams) < 0) + goto error; + if (migrate_flags & (QEMU_MONITOR_MIGRATE_NON_SHARED_DISK | QEMU_MONITOR_MIGRATE_NON_SHARED_INC)) { if (mig->nbd) { @@ -3382,35 +3414,6 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, goto error; } =20 - if (qemuMigrationParamsSetCompression(vm, compression, migParams) < 0) - goto error; - - if (qemuMigrationParamsSetCapability(vm, - QEMU_MONITOR_MIGRATION_CAPS_AUTO_= CONVERGE, - flags & VIR_MIGRATE_AUTO_CONVERGE, - migParams) < 0) - goto error; - - if (qemuMigrationParamsSetCapability(vm, - QEMU_MONITOR_MIGRATION_CAPS_RDMA_= PIN_ALL, - flags & VIR_MIGRATE_RDMA_PIN_ALL, - migParams) < 0) - goto error; - - if (qemuMigrationParamsSetPostCopy(vm, flags & VIR_MIGRATE_POSTCOPY, - migParams) < 0) - goto error; - - if (qemuMigrationCapsGet(vm, QEMU_MONITOR_MIGRATION_CAPS_PAUSE_BEFORE_= SWITCHOVER) && - qemuMigrationParamsSetCapability(vm, - QEMU_MONITOR_MIGRATION_CAPS_PAUSE= _BEFORE_SWITCHOVER, - true, migParams) < 0) - goto error; - - if (qemuMigrationParamsApply(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT, - migParams) < 0) - goto error; - if (qemuDomainObjEnterMonitorAsync(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) goto error; @@ -4508,9 +4511,6 @@ qemuMigrationSrcPerformJob(virQEMUDriverPtr driver, =20 qemuMigrationSrcStoreDomainState(vm); =20 - if (qemuMigrationParamsCheck(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT)= < 0) - goto endjob; - if ((flags & (VIR_MIGRATE_TUNNELLED | VIR_MIGRATE_PEER2PEER))) { ret =3D qemuMigrationSrcPerformPeer2Peer(driver, conn, vm, xmlin, = persist_xml, dconnuri, uri, graphicsuri,= listenAddress, @@ -4616,9 +4616,6 @@ qemuMigrationSrcPerformPhase(virQEMUDriverPtr driver, virCloseCallbacksUnset(driver->closeCallbacks, vm, qemuMigrationSrcCleanup); =20 - if (qemuMigrationParamsCheck(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT)= < 0) - goto endjob; - ret =3D qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri, co= okiein, cookieinlen, cookieout, cookieoutlen, flags, resource, NULL, graphicsuri, --=20 2.17.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list