From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196313; cv=none; d=zohomail.com; s=zohoarc; b=XeBJlBLjEfxfKr4w2rnW7JzLl5XAodeSxS3gg8P0IbpdO/fWbc513O4GAAuRjq3nv8/LYwO+K7lvIwzwt6lkDCWOTwr/jDj8IbOuMSXY8JoSzAlZmTUd/ka5wrDHvfWXjGqvy7vIZRo5ZKeLATiH5kOlc8fPIXm00y4ldr47fUw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196313; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=H5/xDK44rWKOajJUNVif7NiHpzEsvJRUviQ4Kx1eke8=; b=V83a9Nb+cfXXCwwpDYt17gFSphXgOgVD1T0U/olVmVqecWGzzxGwXrWtMF4SsoHLGCp2zN156uON0bHSf/fsGZzS6a5Mnk8mQ5qfulIESlKGHNHbiVXs6EwjNV1YRJhcoOPrFy2stDIlYf11PQLPf9PJYrLwXQZ4YFeuIovUXx8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196313044829.593887680979; Tue, 10 May 2022 08:25:13 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-47-ariL9pkmMX6Do6Tsac9Pcw-1; Tue, 10 May 2022 11:23:22 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id ACAE180B3F9; Tue, 10 May 2022 15:22:08 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 65FB940E7F0C; Tue, 10 May 2022 15:22:08 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 9C258194036E; Tue, 10 May 2022 15:21:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D060E1947055 for ; Tue, 10 May 2022 15:21:44 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id AA9E0407DECB; Tue, 10 May 2022 15:21:44 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8AF18407DEC6 for ; Tue, 10 May 2022 15:21:44 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 721C124016C; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196311; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=H5/xDK44rWKOajJUNVif7NiHpzEsvJRUviQ4Kx1eke8=; b=BkW1/7zdEDIAolmvAuD1iiMZwc2ctKSEqzesjKaTCmp9RREKrsd/kx+eA1S6rYZrkapBYB EVoZKmNpWbnJ1tDO66BdOtVbwbWFGWRxcLOc5yjzalEuygctk8Ivv62D3DVmvdMUowYjb0 dstZpADLHUA8ZxxWIBEenXUlFY6Tb9g= X-MC-Unique: ariL9pkmMX6Do6Tsac9Pcw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 01/80] qemu: Add debug messages to job recovery code Date: Tue, 10 May 2022 17:20:22 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196314375100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_process.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index b0b00eb0a2..1925559fad 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3445,6 +3445,9 @@ qemuProcessRecoverMigrationIn(virQEMUDriver *driver, (state =3D=3D VIR_DOMAIN_RUNNING && reason =3D=3D VIR_DOMAIN_RUNNING_POSTCOPY); =20 + VIR_DEBUG("Active incoming migration in phase %s", + qemuMigrationJobPhaseTypeToString(job->phase)); + switch ((qemuMigrationJobPhase) job->phase) { case QEMU_MIGRATION_PHASE_NONE: case QEMU_MIGRATION_PHASE_PERFORM2: @@ -3506,6 +3509,9 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *driver, reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY_FAILED); bool resume =3D false; =20 + VIR_DEBUG("Active outgoing migration in phase %s", + qemuMigrationJobPhaseTypeToString(job->phase)); + switch ((qemuMigrationJobPhase) job->phase) { case QEMU_MIGRATION_PHASE_NONE: case QEMU_MIGRATION_PHASE_PREPARE: @@ -3601,6 +3607,13 @@ qemuProcessRecoverJob(virQEMUDriver *driver, =20 state =3D virDomainObjGetState(vm, &reason); =20 + VIR_DEBUG("Recovering job for domain %s, state=3D%s(%s), async=3D%s, j= ob=3D%s", + vm->def->name, + virDomainStateTypeToString(state), + virDomainStateReasonToString(state, reason), + virDomainAsyncJobTypeToString(job->asyncJob), + virDomainJobTypeToString(job->active)); + switch (job->asyncJob) { case VIR_ASYNC_JOB_MIGRATION_OUT: if (qemuProcessRecoverMigrationOut(driver, vm, job, --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196126; cv=none; d=zohomail.com; s=zohoarc; b=fGkE2kP6ooNt05CwSr9jfggU6Mt+R4q9fYYoJgld3CBAh23JUgZFAbL0LdSNEnkfqlowIXmaBBb7dgW9wyhjMupGG+7YNv78zJ62KhU2oTDMceVOPjMVMlyYuhYAPtyrNsO+f8tTaZpY6nBRyuXS7dYO+KsErk7n+WLSlqLMYeU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196126; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6nR/F6Mr8ybLguGrDi5LMdHxGGZJGioLzWkw0JiijKs=; b=WM425aRhIdQe5xivQ23Z6wO5XtCskTNFToQU2dSZwLOzFuzPGYF/RKXfWud9yAdIYiMbP4OO8E8qEFpmVKxcOOmfHBepUjxwhBVSRpQZdbABP/YBq9y2KmhKXP6Dn6UxsoMpgAkd/451Rmmi/V4PD4stJae9I4X5Eti5oFmS1Ng= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196126381903.2386655488548; Tue, 10 May 2022 08:22:06 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-269-a6cKeWCiPLiCDP32ViGwgA-1; Tue, 10 May 2022 11:21:58 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C1F273C7B13F; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id A7B58463E1C; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 614F21947055; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D054C194704D for ; Tue, 10 May 2022 15:21:44 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id AAA16407DECC; Tue, 10 May 2022 15:21:44 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8AD7F407DEC3 for ; Tue, 10 May 2022 15:21:44 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 73E742445E6; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196124; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=6nR/F6Mr8ybLguGrDi5LMdHxGGZJGioLzWkw0JiijKs=; b=QCQ9y3YRyFo6Hrq8EmruHK/oA5BWOydbfW8HwMGmw52hvsuPNw8S1nsaLBAjLXO78zhZct ZRFSRoMJ+Eqr0i+J75cK2RTO6JhoQ0+S+xDW3mupuBkWU1XQEnfNRE3R/5t65ked/Gp00J r5YvGojmN261cpZtwGTb5szBM06ThK8= X-MC-Unique: a6cKeWCiPLiCDP32ViGwgA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 02/80] qemumonitorjsontest: Test more migration capabilities Date: Tue, 10 May 2022 17:20:23 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196128477100003 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- tests/qemumonitorjsontest.c | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c index 278d7ba765..99198de0ed 100644 --- a/tests/qemumonitorjsontest.c +++ b/tests/qemumonitorjsontest.c @@ -2047,7 +2047,7 @@ testQemuMonitorJSONqemuMonitorJSONGetMigrationCapabil= ities(const void *opaque) { const testGenericData *data =3D opaque; virDomainXMLOption *xmlopt =3D data->xmlopt; - const char *cap; + size_t cap; g_auto(GStrv) caps =3D NULL; g_autoptr(virBitmap) bitmap =3D NULL; g_autoptr(virJSONValue) json =3D NULL; @@ -2057,6 +2057,10 @@ testQemuMonitorJSONqemuMonitorJSONGetMigrationCapabi= lities(const void *opaque) " {" " \"state\": false," " \"capability\": \"xbzrle\"" + " }," + " {" + " \"state\": true," + " \"capability\": \"events\"" " }" " ]," " \"id\": \"libvirt-22\"" @@ -2075,11 +2079,25 @@ testQemuMonitorJSONqemuMonitorJSONGetMigrationCapab= ilities(const void *opaque) &caps) < 0) return -1; =20 - cap =3D qemuMigrationCapabilityTypeToString(QEMU_MIGRATION_CAP_XBZRLE); - if (!g_strv_contains((const char **) caps, cap)) { - virReportError(VIR_ERR_INTERNAL_ERROR, - "Expected capability %s is missing", cap); - return -1; + for (cap =3D 0; cap < QEMU_MIGRATION_CAP_LAST; cap++) { + const char *capStr =3D qemuMigrationCapabilityTypeToString(cap); + bool present =3D g_strv_contains((const char **) caps, capStr); + + switch (cap) { + case QEMU_MIGRATION_CAP_XBZRLE: + case QEMU_MIGRATION_CAP_EVENTS: + if (!present) { + VIR_TEST_VERBOSE("Expected capability %s is missing", capS= tr); + return -1; + } + break; + + default: + if (present) { + VIR_TEST_VERBOSE("Unexpected capability %s found", capStr); + return -1; + } + } } =20 bitmap =3D virBitmapNew(QEMU_MIGRATION_CAP_LAST); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196274; cv=none; d=zohomail.com; s=zohoarc; b=iNefbrA9i2+lpYLiEPVhoQySqxSuadaA2fJOFx8O4+pbcpcEkkY+o1Do19ivq93Am4iAjhZKmIvoj6hndR3VCNPt2XTiDth4u7OZWJxSe5mb+PMkTFKStIGvG3TsoJT834/wKw8Z+9YQKXs4ALEU2Q/rd4nVj40Ej3mp8AeE0Kw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196274; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rY2JkpZP7NMeXkmCtE1NtJPsRLtnTlgiW/Si7MwtE7E=; b=OI4bwLNZ56t3DDIg94Aa3UjQVE0lPKoMmAJKGdVTbWLaNck0C8m4ZIRDco5sAPqaLXaP9Owf++6/rIS52n//kGasYtHfBKdADEEEohFycRdV5BCYyJllmXrPfXTYUnph8GZXbddBMcfwmsznv4edgMBPu1geuoQUD3tEw0O9wEg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196274262132.45997489091246; Tue, 10 May 2022 08:24:34 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-29-HRnXaoGzNPCxxlAcy1nG4Q-1; Tue, 10 May 2022 11:23:21 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 829F81C06ECF; Tue, 10 May 2022 15:22:11 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6FEF215088B0; Tue, 10 May 2022 15:22:11 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4E83E194F4BF; Tue, 10 May 2022 15:22:01 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 1042E1947079 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id E581E111E412; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A97D1111E411 for ; Tue, 10 May 2022 15:21:44 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 75A562445E7; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196273; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=rY2JkpZP7NMeXkmCtE1NtJPsRLtnTlgiW/Si7MwtE7E=; b=Ia02bgllxjvEDor+gqj5R73KeHxwZCNTwhESi0Sidlst2ykcIpgz+76VrY6lxWwzBZHPvx E2VJL2kex5raq+q0L4Nw3mdjSSW8tFAlx041okGPm1hipkk5yM9bWyQguSr6eY4xEWVVCB wKrPzyoI8Ni4ig8YlFJXoJdmXW57gSs= X-MC-Unique: HRnXaoGzNPCxxlAcy1nG4Q-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 03/80] qemu: Return state from qemuMonitorGetMigrationCapabilities Date: Tue, 10 May 2022 17:20:24 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196275251100001 Content-Type: text/plain; charset="utf-8" The function can now optionally return a bitmap describing the current state of each migration capability. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_capabilities.c | 2 +- src/qemu/qemu_migration_params.c | 2 +- src/qemu/qemu_monitor.c | 5 +++-- src/qemu/qemu_monitor.h | 3 ++- src/qemu/qemu_monitor_json.c | 18 +++++++++++++++++- src/qemu/qemu_monitor_json.h | 3 ++- tests/qemumonitorjsontest.c | 12 +++++++++++- 7 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 1ed4cda7f0..cd13847918 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3347,7 +3347,7 @@ virQEMUCapsProbeQMPMigrationCapabilities(virQEMUCaps = *qemuCaps, { g_auto(GStrv) caps =3D NULL; =20 - if (qemuMonitorGetMigrationCapabilities(mon, &caps) < 0) + if (qemuMonitorGetMigrationCapabilities(mon, &caps, NULL) < 0) return -1; =20 virQEMUCapsProcessStringFlags(qemuCaps, diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_par= ams.c index df2384b213..34416f89be 100644 --- a/src/qemu/qemu_migration_params.c +++ b/src/qemu/qemu_migration_params.c @@ -1397,7 +1397,7 @@ qemuMigrationCapsCheck(virQEMUDriver *driver, if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0) return -1; =20 - rc =3D qemuMonitorGetMigrationCapabilities(priv->mon, &caps); + rc =3D qemuMonitorGetMigrationCapabilities(priv->mon, &caps, NULL); =20 qemuDomainObjExitMonitor(vm); if (rc < 0) diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 316cff5b9b..98cf1c949e 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -3636,11 +3636,12 @@ qemuMonitorGetTargetArch(qemuMonitor *mon) =20 int qemuMonitorGetMigrationCapabilities(qemuMonitor *mon, - char ***capabilities) + char ***capabilities, + virBitmap **state) { QEMU_CHECK_MONITOR(mon); =20 - return qemuMonitorJSONGetMigrationCapabilities(mon, capabilities); + return qemuMonitorJSONGetMigrationCapabilities(mon, capabilities, stat= e); } =20 =20 diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 5c2a749282..abc29eaf4c 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -890,7 +890,8 @@ int qemuMonitorGetMigrationStats(qemuMonitor *mon, char **error); =20 int qemuMonitorGetMigrationCapabilities(qemuMonitor *mon, - char ***capabilities); + char ***capabilities, + virBitmap **state); int qemuMonitorSetMigrationCapabilities(qemuMonitor *mon, virJSONValue **caps); =20 diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 9e611e93e8..532aad348e 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6210,12 +6210,14 @@ qemuMonitorJSONGetTargetArch(qemuMonitor *mon) =20 int qemuMonitorJSONGetMigrationCapabilities(qemuMonitor *mon, - char ***capabilities) + char ***capabilities, + virBitmap **state) { g_autoptr(virJSONValue) cmd =3D NULL; g_autoptr(virJSONValue) reply =3D NULL; virJSONValue *caps; g_auto(GStrv) list =3D NULL; + g_autoptr(virBitmap) bitmap =3D NULL; size_t i; size_t n; =20 @@ -6235,10 +6237,12 @@ qemuMonitorJSONGetMigrationCapabilities(qemuMonitor= *mon, n =3D virJSONValueArraySize(caps); =20 list =3D g_new0(char *, n + 1); + bitmap =3D virBitmapNew(n); =20 for (i =3D 0; i < n; i++) { virJSONValue *cap =3D virJSONValueArrayGet(caps, i); const char *name; + bool enabled =3D false; =20 if (!cap || virJSONValueGetType(cap) !=3D VIR_JSON_TYPE_OBJECT) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -6252,10 +6256,22 @@ qemuMonitorJSONGetMigrationCapabilities(qemuMonitor= *mon, return -1; } =20 + if (virJSONValueObjectGetBoolean(cap, "state", &enabled) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("missing migration capability state")); + return -1; + } + list[i] =3D g_strdup(name); + + if (enabled) + ignore_value(virBitmapSetBit(bitmap, i)); } =20 *capabilities =3D g_steal_pointer(&list); + if (state) + *state =3D g_steal_pointer(&bitmap); + return n; } =20 diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index 982fbad44e..afd100f653 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -182,7 +182,8 @@ qemuMonitorJSONGetMigrationStats(qemuMonitor *mon, =20 int qemuMonitorJSONGetMigrationCapabilities(qemuMonitor *mon, - char ***capabilities); + char ***capabilities, + virBitmap **state); int qemuMonitorJSONSetMigrationCapabilities(qemuMonitor *mon, virJSONValue **caps); diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c index 99198de0ed..8ce96885e3 100644 --- a/tests/qemumonitorjsontest.c +++ b/tests/qemumonitorjsontest.c @@ -2051,6 +2051,9 @@ testQemuMonitorJSONqemuMonitorJSONGetMigrationCapabil= ities(const void *opaque) g_auto(GStrv) caps =3D NULL; g_autoptr(virBitmap) bitmap =3D NULL; g_autoptr(virJSONValue) json =3D NULL; + g_autoptr(virBitmap) state =3D NULL; + g_autofree char *stateActual =3D NULL; + const char *stateExpected =3D "1"; const char *reply =3D "{" " \"return\": [" @@ -2076,7 +2079,7 @@ testQemuMonitorJSONqemuMonitorJSONGetMigrationCapabil= ities(const void *opaque) return -1; =20 if (qemuMonitorGetMigrationCapabilities(qemuMonitorTestGetMonitor(test= ), - &caps) < 0) + &caps, &state) < 0) return -1; =20 for (cap =3D 0; cap < QEMU_MIGRATION_CAP_LAST; cap++) { @@ -2100,6 +2103,13 @@ testQemuMonitorJSONqemuMonitorJSONGetMigrationCapabi= lities(const void *opaque) } } =20 + stateActual =3D virBitmapFormat(state); + if (STRNEQ_NULLABLE(stateExpected, stateActual)) { + VIR_TEST_VERBOSE("Excepted capabilities state: '%s', got: '%s'", + NULLSTR(stateExpected), NULLSTR(stateActual)); + return -1; + } + bitmap =3D virBitmapNew(QEMU_MIGRATION_CAP_LAST); ignore_value(virBitmapSetBit(bitmap, QEMU_MIGRATION_CAP_XBZRLE)); if (!(json =3D qemuMigrationCapsToJSON(bitmap, bitmap))) --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196128; cv=none; d=zohomail.com; s=zohoarc; b=PFmNboXR/ecJ6leAMUhRRsbMwv3hBdZZR52mbahyx0D6JxDGOoAvo1af4k5KleM2yUVsvxaeOKbh/nHVSOBTXaJ15IxVcujb7rTtazpvmoq7P0VIiIESleKUGlKYFRuxzO21gGLd4EKMme/ElQSoIfuB2fvl8JKrR5iwZUo46Z4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196128; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=pUJZ5HSK8zN5hO3O5f03vm6O4/LP3pNfcHnJkjGUfYg=; b=PRKpsPGY7ewxwewZJ6mJ/hMzGJ3aE+Cein3hjHrPwWKG7PiJj+ef9+RbxOXi4yG3I+HoHmJiY9fLFmby9ROB9gffg3LA4KPL4e9jLvpvbKF9EmgMIJjVO7TJjZW8nKuxmmSoOK1quAFofwiUfTfQ3lM80bBjDztwb+STlR8wrGo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196128485424.2694659968255; Tue, 10 May 2022 08:22:08 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-271-8FkmZURsMUipab5cJg3m3A-1; Tue, 10 May 2022 11:21:55 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 06C122919EB3; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id DD4E714E09E0; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 91089194706D; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id B8A9C194704D for ; Tue, 10 May 2022 15:21:44 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id A9A69463EDE; Tue, 10 May 2022 15:21:44 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8A5F3463E1C for ; Tue, 10 May 2022 15:21:44 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 76EEB2445E8; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196127; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=pUJZ5HSK8zN5hO3O5f03vm6O4/LP3pNfcHnJkjGUfYg=; b=hS107TSQfU3CiUD9DrsEbivBUl+QcC6Qp3Vid/5a6zfUljaSjeP9b0Z07jv4IhAIgmc5zC DCi7aYUOSg7ZNnM46OdneYXgbVgSSk8cp3v4N9Fr+ZckzY5/Aw3vXokgDOAhzcf7k6DeeX k43jcZW/YZnns71ZNR2hOLg6w+/X4ow= X-MC-Unique: 8FkmZURsMUipab5cJg3m3A-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 04/80] qemu: Enable migration events only when disabled Date: Tue, 10 May 2022 17:20:25 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196130514100007 Content-Type: text/plain; charset="utf-8" When connecting to a QEMU monitor, we always try to enable migration events, but this is an invalid operation during migration. Thus reconnecting to a domain with active migration would fail. Let's check the state of migration events capability and only try to enable it when it is disabled. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration_params.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_par= ams.c index 34416f89be..ed2d9ac103 100644 --- a/src/qemu/qemu_migration_params.c +++ b/src/qemu/qemu_migration_params.c @@ -1391,13 +1391,16 @@ qemuMigrationCapsCheck(virQEMUDriver *driver, g_autoptr(virBitmap) migEvent =3D NULL; g_autoptr(virJSONValue) json =3D NULL; g_auto(GStrv) caps =3D NULL; + g_autoptr(virBitmap) capState =3D NULL; + g_autoptr(virBitmap) enabled =3D virBitmapNew(QEMU_MIGRATION_CAP_LAST); char **capStr; + size_t i; int rc; =20 if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0) return -1; =20 - rc =3D qemuMonitorGetMigrationCapabilities(priv->mon, &caps, NULL); + rc =3D qemuMonitorGetMigrationCapabilities(priv->mon, &caps, &capState= ); =20 qemuDomainObjExitMonitor(vm); if (rc < 0) @@ -1408,7 +1411,7 @@ qemuMigrationCapsCheck(virQEMUDriver *driver, =20 priv->migrationCaps =3D virBitmapNew(QEMU_MIGRATION_CAP_LAST); =20 - for (capStr =3D caps; *capStr; capStr++) { + for (i =3D 0, capStr =3D caps; *capStr; capStr++, i++) { int cap =3D qemuMigrationCapabilityTypeFromString(*capStr); =20 if (cap < 0) { @@ -1416,10 +1419,20 @@ qemuMigrationCapsCheck(virQEMUDriver *driver, } else { ignore_value(virBitmapSetBit(priv->migrationCaps, cap)); VIR_DEBUG("Found migration capability: '%s'", *capStr); + + if (virBitmapIsBitSet(capState, i)) + ignore_value(virBitmapSetBit(enabled, cap)); } } =20 - if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_EVENT)) { + if (virBitmapIsBitSet(enabled, QEMU_MIGRATION_CAP_EVENTS)) { + if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_EVENT)) { + VIR_DEBUG("Migration events already enabled"); + } else { + VIR_DEBUG("Migration events enabled; setting capability"); + virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_MIGRATION_EVENT); + } + } else if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_EVENT)) { migEvent =3D virBitmapNew(QEMU_MIGRATION_CAP_LAST); =20 ignore_value(virBitmapSetBit(migEvent, QEMU_MIGRATION_CAP_EVENTS)); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196126; cv=none; d=zohomail.com; s=zohoarc; b=ZqjuCpxnsx4M+xaiy1jb31NxVW6BZEIUGB5yQvf3LfonjtUtIVmyndO30hRh+BsMp6gFfK9fTAXQ4U7dv7DiaTVWGUgfzTkspo5VoRbYo0NDeBeCIWK7yH/k55l8CA4JqOg8pAgNoumJNmBiFbejlHkhuT0vD5Idvw+MpcvuKkc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196126; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=z+bW71M9ACFv3h7FiM5ZSwjqUIhwC8NMiEj5CR9t4d8=; b=YZpKU7ztX9MHNUCD6+p6BT+s1giyXgHKCqnK848GB18TWDzZYWdu0A4uVsFJcju4kF9w+xW8ryJzNjw0AwHjPZ67Ae42wrBA9k87xMMV4T9G69jOlhiOgCgNFwd816eGvXz578I/SKXc0VCuDW9/WP+Nm9n3N5sS2HW0shKIdcQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196126069933.6584387941081; Tue, 10 May 2022 08:22:06 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-30-vFdiqA6qN1qqIO_jwCVlSQ-1; Tue, 10 May 2022 11:21:58 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4C19CA18EE2; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3592854B072; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id E1C8F194706E; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id EFE521947078 for ; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id E598514E09E6; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A9E3B14E09E8 for ; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 788102445E9; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196125; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=z+bW71M9ACFv3h7FiM5ZSwjqUIhwC8NMiEj5CR9t4d8=; b=dyNhgz7mdczQkF2XupZjP01ca5uT25dQ9Ou7Mk89nkEVYEqCuol73UuZ+gqSKb5cu7cI5d RdMVxdC/2dt3VqNo90MpgvqWdeXljC3+1CTSqgt/Dl1p3zJvc5mtbFAEBsk7h8S9jfRB50 I/fN0qFSbmNbrDezliLf3Io/hOZt6Hc= X-MC-Unique: vFdiqA6qN1qqIO_jwCVlSQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 05/80] Introduce VIR_DOMAIN_RUNNING_POSTCOPY_FAILED Date: Tue, 10 May 2022 17:20:26 +0200 Message-Id: <652423e31bcf2222925047c526b16fc9cb50b64c.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196126471100001 Content-Type: text/plain; charset="utf-8" This new "post-copy failed" reason for the running state will be used on the destination host when post-copy migration fails while the domain is already running there. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- examples/c/misc/event-test.c | 3 +++ include/libvirt/libvirt-domain.h | 2 ++ src/conf/domain_conf.c | 1 + src/libvirt-domain.c | 15 ++++++++++----- src/qemu/qemu_domain.c | 3 +++ tools/virsh-domain-event.c | 3 ++- tools/virsh-domain-monitor.c | 1 + 7 files changed, 22 insertions(+), 6 deletions(-) diff --git a/examples/c/misc/event-test.c b/examples/c/misc/event-test.c index 1165469a65..64652b0153 100644 --- a/examples/c/misc/event-test.c +++ b/examples/c/misc/event-test.c @@ -196,6 +196,9 @@ eventDetailToString(int event, case VIR_DOMAIN_EVENT_RESUMED_POSTCOPY: return "Post-copy"; =20 + case VIR_DOMAIN_EVENT_RESUMED_POSTCOPY_FAILED: + return "Post-copy Error"; + case VIR_DOMAIN_EVENT_RESUMED_LAST: break; } diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index cf9d9efd51..34b8adc2bf 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -108,6 +108,7 @@ typedef enum { wakeup event (Since: 0.9.11= ) */ VIR_DOMAIN_RUNNING_CRASHED =3D 9, /* resumed from crashed (Sin= ce: 1.1.1) */ VIR_DOMAIN_RUNNING_POSTCOPY =3D 10, /* running in post-copy migr= ation mode (Since: 1.3.3) */ + VIR_DOMAIN_RUNNING_POSTCOPY_FAILED =3D 11, /* running in failed post-c= opy migration (Since: 8.4.0) */ =20 # ifdef VIR_ENUM_SENTINELS VIR_DOMAIN_RUNNING_LAST /* (Since: 0.9.10) */ @@ -3801,6 +3802,7 @@ typedef enum { VIR_DOMAIN_EVENT_RESUMED_FROM_SNAPSHOT =3D 2, /* Resumed from snapshot= (Since: 0.9.5) */ VIR_DOMAIN_EVENT_RESUMED_POSTCOPY =3D 3, /* Resumed, but migration i= s still running in post-copy mode = (Since: 1.3.3) */ + VIR_DOMAIN_EVENT_RESUMED_POSTCOPY_FAILED =3D 4, /* Running, but migrat= ion failed in post-copy (Since: 8.4.0) */ =20 # ifdef VIR_ENUM_SENTINELS VIR_DOMAIN_EVENT_RESUMED_LAST /* (Since: 0.9.10) */ diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index bd2884088c..f8c6b78c92 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1102,6 +1102,7 @@ VIR_ENUM_IMPL(virDomainRunningReason, "wakeup", "crashed", "post-copy", + "post-copy failed", ); =20 VIR_ENUM_IMPL(virDomainBlockedReason, diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index d1d62daa71..2e39687e27 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -9753,10 +9753,14 @@ virDomainMigrateGetMaxSpeed(virDomainPtr domain, * at most once no matter how fast it changes. On the other hand once the * guest is running on the destination host, the migration can no longer be * rolled back because none of the hosts has complete state. If this happe= ns, - * libvirt will leave the domain paused on both hosts with - * VIR_DOMAIN_PAUSED_POSTCOPY_FAILED reason. It's up to the upper layer to - * decide what to do in such case. Because of this, libvirt will refuse to - * cancel post-copy migration via virDomainAbortJob. + * libvirt will leave the domain paused on the source host with + * VIR_DOMAIN_PAUSED_POSTCOPY_FAILED reason. The domain on the destination= host + * will remain running, but the reason will change to + * VIR_DOMAIN_RUNNING_POSTCOPY_FAILED. Even though the virtual CPUs remain + * running, individual tasks in the guest may be blocked waiting for a pag= e that + * has not been migrated yet. It's up to the upper layer to decide what to= do + * in such case. Because of this, libvirt will refuse to cancel post-copy + * migration via virDomainAbortJob. * * The following domain life cycle events are emitted during post-copy * migration: @@ -9770,7 +9774,8 @@ virDomainMigrateGetMaxSpeed(virDomainPtr domain, * VIR_DOMAIN_EVENT_RESUMED_MIGRATED (on the destination), * VIR_DOMAIN_EVENT_STOPPED_MIGRATED (on the source) -- migration finished * successfully and the destination host holds a complete guest state. - * VIR_DOMAIN_EVENT_SUSPENDED_POSTCOPY_FAILED (on the destination) -- emi= tted + * VIR_DOMAIN_EVENT_SUSPENDED_POSTCOPY_FAILED (on the source), + * VIR_DOMAIN_EVENT_RESUMED_POSTCOPY_FAILED (on the destination) -- emitt= ed * when migration fails in post-copy mode and it's unclear whether any * of the hosts has a complete guest state. * diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 7974cdb00b..51236b19f2 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -11105,6 +11105,9 @@ qemuDomainRunningReasonToResumeEvent(virDomainRunni= ngReason reason) case VIR_DOMAIN_RUNNING_POSTCOPY: return VIR_DOMAIN_EVENT_RESUMED_POSTCOPY; =20 + case VIR_DOMAIN_RUNNING_POSTCOPY_FAILED: + return VIR_DOMAIN_EVENT_RESUMED_POSTCOPY_FAILED; + case VIR_DOMAIN_RUNNING_UNKNOWN: case VIR_DOMAIN_RUNNING_SAVE_CANCELED: case VIR_DOMAIN_RUNNING_BOOTED: diff --git a/tools/virsh-domain-event.c b/tools/virsh-domain-event.c index 6dbb64a655..2d6db5f881 100644 --- a/tools/virsh-domain-event.c +++ b/tools/virsh-domain-event.c @@ -93,7 +93,8 @@ VIR_ENUM_IMPL(virshDomainEventResumed, N_("Unpaused"), N_("Migrated"), N_("Snapshot"), - N_("Post-copy")); + N_("Post-copy"), + N_("Post-copy Error")); =20 VIR_ENUM_DECL(virshDomainEventStopped); VIR_ENUM_IMPL(virshDomainEventStopped, diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c index 246e8a16c0..dc5fe13e49 100644 --- a/tools/virsh-domain-monitor.c +++ b/tools/virsh-domain-monitor.c @@ -166,6 +166,7 @@ VIR_ENUM_IMPL(virshDomainRunningReason, N_("event wakeup"), N_("crashed"), N_("post-copy"), + N_("post-copy failed"), ); =20 VIR_ENUM_DECL(virshDomainBlockedReason); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196127; cv=none; d=zohomail.com; s=zohoarc; b=BbU/28rbtkfzXztBkSpYzzBVb3T+mw7egGDidIiH/M9j+ocafRixKAczPeA2yvaZ3dJXvBpkCoNT9/9cNTOMm+tGefhRRQyEt6N79CKv6umq+nVm7z+loFz9ZOAOd0heMU1XRR8HcvE0rhSnciSlqZdRUsBcNP+jOHu44Zt3Fjs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196127; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HXnlV4luoTiaGCX1MnJyU9f1pSFC9LAScoglPNJTCNQ=; b=ONqzeVQKnUvnzxoyjzcLET97eNRw5pknioeee6s8d81kEZ63TmzZgXCyaZMBi5UWBun+6KugnReKSfAASP60JyeN3c+FM3SYDNSyvkDoQmMmTLVUq4pEM7MOue00tPd+J4msn1ZYcJNEls4cgU97EcRiMAve+bQEVP30w7pG/5w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196127879542.8720361749948; Tue, 10 May 2022 08:22:07 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-341-_RFdKTFlPhS0Xp_QdLg5Vg-1; Tue, 10 May 2022 11:22:02 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3DB4D811E9B; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 28B4A14E0B4C; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 9962C1947B81; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 0E0F2194705F for ; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id E617D463E1A; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A8E92463EC9 for ; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 79D012445EA; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196127; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=HXnlV4luoTiaGCX1MnJyU9f1pSFC9LAScoglPNJTCNQ=; b=E6DAytMW7Nck+HYqKJAm8Gncs0Oy7YGv6qAxVNtVME0mNYQrF/vgUk9oFanYxrMFwR9H48 aMVixQjDEU1YnLFmyqoJQuGFvA6UN62+YsZEBPq745SAzqorKWhIKqbJgYYSChB/SZ68fH aayrk7H7vJwhC8YMNb4/rhGpVAlz7Jg= X-MC-Unique: _RFdKTFlPhS0Xp_QdLg5Vg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 06/80] qemu: Keep domain running on dst on failed post-copy migration Date: Tue, 10 May 2022 17:20:27 +0200 Message-Id: <18096ee34e3abfb4fbb0df4cb4327189702d53ee.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196128480100004 Content-Type: text/plain; charset="utf-8" There's no need to artificially pause a domain when post-copy fails. The virtual CPUs may continue running, only the guest tasks that decide to read a page which has not been migrated yet will get blocked. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 37 +++++++++++++++++++++++++++++++++---- src/qemu/qemu_migration.h | 6 ++++-- src/qemu/qemu_process.c | 8 ++++---- 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index b735bdb391..a5c7a27124 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -1577,14 +1577,19 @@ qemuMigrationSrcIsSafe(virDomainDef *def, =20 =20 void -qemuMigrationAnyPostcopyFailed(virQEMUDriver *driver, - virDomainObj *vm) +qemuMigrationSrcPostcopyFailed(virDomainObj *vm) { + qemuDomainObjPrivate *priv =3D vm->privateData; + virQEMUDriver *driver =3D priv->driver; virDomainState state; int reason; =20 state =3D virDomainObjGetState(vm, &reason); =20 + VIR_DEBUG("%s/%s", + virDomainStateTypeToString(state), + virDomainStateReasonToString(state, reason)); + if (state !=3D VIR_DOMAIN_PAUSED && state !=3D VIR_DOMAIN_RUNNING) return; @@ -1608,6 +1613,30 @@ qemuMigrationAnyPostcopyFailed(virQEMUDriver *driver, } =20 =20 +void +qemuMigrationDstPostcopyFailed(virDomainObj *vm) +{ + virDomainState state; + int reason; + + state =3D virDomainObjGetState(vm, &reason); + + VIR_DEBUG("%s/%s", + virDomainStateTypeToString(state), + virDomainStateReasonToString(state, reason)); + + if (state !=3D VIR_DOMAIN_RUNNING || + reason =3D=3D VIR_DOMAIN_RUNNING_POSTCOPY_FAILED) + return; + + VIR_WARN("Incoming migration of domain %s failed during post-copy; " + "leaving the domain running in a degraded mode", vm->def->nam= e); + + virDomainObjSetState(vm, VIR_DOMAIN_RUNNING, + VIR_DOMAIN_RUNNING_POSTCOPY_FAILED); +} + + static int qemuMigrationSrcWaitForSpice(virDomainObj *vm) { @@ -3470,7 +3499,7 @@ qemuMigrationSrcConfirmPhase(virQEMUDriver *driver, =20 if (virDomainObjGetState(vm, &reason) =3D=3D VIR_DOMAIN_PAUSED && reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY) - qemuMigrationAnyPostcopyFailed(driver, vm); + qemuMigrationSrcPostcopyFailed(vm); else qemuMigrationSrcRestoreDomainState(driver, vm); =20 @@ -5847,7 +5876,7 @@ qemuMigrationDstFinish(virQEMUDriver *driver, VIR_DOMAIN_EVENT_STOPPED_FAILED); virObjectEventStateQueue(driver->domainEventState, event); } else { - qemuMigrationAnyPostcopyFailed(driver, vm); + qemuMigrationDstPostcopyFailed(vm); } } =20 diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index a8afa66119..c4e4228282 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -251,8 +251,10 @@ qemuMigrationDstRun(virQEMUDriver *driver, virDomainAsyncJob asyncJob); =20 void -qemuMigrationAnyPostcopyFailed(virQEMUDriver *driver, - virDomainObj *vm); +qemuMigrationSrcPostcopyFailed(virDomainObj *vm); + +void +qemuMigrationDstPostcopyFailed(virDomainObj *vm); =20 int qemuMigrationSrcFetchMirrorStats(virQEMUDriver *driver, diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 1925559fad..a3192a7196 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3482,7 +3482,7 @@ qemuProcessRecoverMigrationIn(virQEMUDriver *driver, * confirm success or failure yet; killing it seems safest unless * we already started guest CPUs or we were in post-copy mode */ if (postcopy) { - qemuMigrationAnyPostcopyFailed(driver, vm); + qemuMigrationDstPostcopyFailed(vm); } else if (state !=3D VIR_DOMAIN_RUNNING) { VIR_DEBUG("Killing migrated domain %s", vm->def->name); return -1; @@ -3533,7 +3533,7 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *driver, * post-copy mode */ if (postcopy) { - qemuMigrationAnyPostcopyFailed(driver, vm); + qemuMigrationSrcPostcopyFailed(vm); } else { VIR_DEBUG("Cancelling unfinished migration of domain %s", vm->def->name); @@ -3551,7 +3551,7 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *driver, * post-copy mode we can use PAUSED_POSTCOPY_FAILED state for this */ if (postcopy) - qemuMigrationAnyPostcopyFailed(driver, vm); + qemuMigrationSrcPostcopyFailed(vm); break; =20 case QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED: @@ -3560,7 +3560,7 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *driver, * as broken in that case */ if (postcopy) { - qemuMigrationAnyPostcopyFailed(driver, vm); + qemuMigrationSrcPostcopyFailed(vm); } else { VIR_DEBUG("Resuming domain %s after failed migration", vm->def->name); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196180; cv=none; d=zohomail.com; s=zohoarc; b=PQlDH0a9Y+1Dg0pwxQ2wh/e4bJ35lXjujRKhTxuv6KcI/5w/PkzGMP4eWXj64LAcS7IHNJgnGGQCw7BW7/gLuB/xODQSb/HU/TZ4GJ58ZsHT1/lmqou5yDYffSG+bHcQrf0Re33VZU8PUPLAK8ZEoVaPRIhF7zvHM54I42uVW1Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196180; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=o8mIGuhzmrGh53sfVB5H10E8QEdGZ+VxJdLJz2DfUUE=; b=j2wJMqK/GcnKAeU20XYtFxqzy/3DxcwdTEy5aMpFCTtBn/Oo+n+bODo1F4hnnzni8UWN892tOZeGXTzMP5BSdWxJFMgZBcHL5m8anfKT7VeNB4iwT2dBXz9qKQfWllkp1Rg5ENXEBTzQuChpQ+wQmiwlFmw5s3Z8gvsZcK49U78= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196180843684.8746209814369; Tue, 10 May 2022 08:23:00 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-237-FGWkAa6eOtCzT_qFy00ThQ-1; Tue, 10 May 2022 11:22:34 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E4D8E18E5293; Tue, 10 May 2022 15:21:53 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id CD0D7416369; Tue, 10 May 2022 15:21:53 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 306901947BA1; Tue, 10 May 2022 15:21:52 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D842C1947078 for ; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id CAB4F14E09ED; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A9D2D14E09E6 for ; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 7B1C52445EB; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196179; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=o8mIGuhzmrGh53sfVB5H10E8QEdGZ+VxJdLJz2DfUUE=; b=DZkpf99X6roDPV2N+P865Enpg3dxzbe6NK6cwSrFo43Caz3t43myDprLoUcZkVZDHeJcNN ZNy5XvzMnHqBwbcHkKw5RPLpo+kNabju1lPMB+XZXCw7t3NTijoVu/0MAi8qsVN0KlwoGH lLqDz2IwoEeabHCM2dwtimb0XiArnuE= X-MC-Unique: FGWkAa6eOtCzT_qFy00ThQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 07/80] qemu: Explicitly emit events on post-copy failure Date: Tue, 10 May 2022 17:20:28 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196182726100003 Content-Type: text/plain; charset="utf-8" The events would normally be triggered only if we're changing domain state. But most of the time the domain is already in the right state and we're just changing its substate from {PAUSED,RUNNING}_POSTCOPY to *_POSTCOPY_FAILED. Let's emit lifecycle events explicitly when post-copy migration fails to make the failure visible without polling. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index a5c7a27124..3e3203471a 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -1581,6 +1581,7 @@ qemuMigrationSrcPostcopyFailed(virDomainObj *vm) { qemuDomainObjPrivate *priv =3D vm->privateData; virQEMUDriver *driver =3D priv->driver; + virObjectEvent *event =3D NULL; virDomainState state; int reason; =20 @@ -1609,6 +1610,9 @@ qemuMigrationSrcPostcopyFailed(virDomainObj *vm) } else { virDomainObjSetState(vm, VIR_DOMAIN_PAUSED, VIR_DOMAIN_PAUSED_POSTCOPY_FAILED); + event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_S= USPENDED, + VIR_DOMAIN_EVENT_SUSPEND= ED_POSTCOPY_FAILED); + virObjectEventStateQueue(driver->domainEventState, event); } } =20 @@ -1616,6 +1620,9 @@ qemuMigrationSrcPostcopyFailed(virDomainObj *vm) void qemuMigrationDstPostcopyFailed(virDomainObj *vm) { + qemuDomainObjPrivate *priv =3D vm->privateData; + virQEMUDriver *driver =3D priv->driver; + virObjectEvent *event =3D NULL; virDomainState state; int reason; =20 @@ -1634,6 +1641,9 @@ qemuMigrationDstPostcopyFailed(virDomainObj *vm) =20 virDomainObjSetState(vm, VIR_DOMAIN_RUNNING, VIR_DOMAIN_RUNNING_POSTCOPY_FAILED); + event =3D virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_RESUM= ED, + VIR_DOMAIN_EVENT_RESUMED_POS= TCOPY_FAILED); + virObjectEventStateQueue(driver->domainEventState, event); } =20 =20 --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196130; cv=none; d=zohomail.com; s=zohoarc; b=M7g9SfeoE4BcWVbrH/L+sma/tgRzqPqX8sgPPFWAZkhrN5Mu+BG5sB6HzH+LHDfz6zj2u8hBbMmA7Lk73LMWxDPyVe4qm3MvhIl11a0Kbn5KQd+310c/64LvxGx3yH31tvy449uOFu+m8xPHEgE5uxj/yIjvcB/cLgaazJPQyQ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196130; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=KeEP+8YUh4n8BjTWV9SeJ8HDk9/JZM/4DQNy/CgG9RE=; b=SigQIbj6r9Er1wwJ1oeLFF+uoCnnturRYi31rfVWKFj5akqawrDFz9eEg7ZnbtgJtMAGl09lctI+2Ufwu0ZfiReN13mrvUUz+36mhpLAGeLnPk1M67emOAHtAe9IA0+muH0gD61Yg94CZtUCMiPUZ/u+M1GNrinC62MlGT/dId8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196130371490.0371057325531; Tue, 10 May 2022 08:22:10 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-599-uPENe9yxM2yodiAW_i7X0w-1; Tue, 10 May 2022 11:22:01 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E3D711801391; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id CE3DE14E09EA; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id B6C521947059; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id DAD4F1947079 for ; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id CD24A54B072; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AA4EA54B085 for ; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 7C6332445EC; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196129; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=KeEP+8YUh4n8BjTWV9SeJ8HDk9/JZM/4DQNy/CgG9RE=; b=HFJQY57gTVMMybWr+P+30pq1gOVev31uB/oWYtQuXjceSYUKzTCyQmpTkOp0p1dHDRmkS8 GFjw8pvwI/Tp0VxT1Jzud3EDVrnvvGxlbBnDRXU7bz80uPCn6LTJm0v27Qe/bfpQbOGS3o dCZeglf43/yGlTH7IdaLnCcfVQiyrRA= X-MC-Unique: uPENe9yxM2yodiAW_i7X0w-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 08/80] qemu: Make qemuDomainCleanupAdd return void Date: Tue, 10 May 2022 17:20:29 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196132480100009 Content-Type: text/plain; charset="utf-8" The function never returns anything but zero. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_domain.c | 5 ++--- src/qemu/qemu_domain.h | 4 ++-- src/qemu/qemu_migration.c | 3 +-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 51236b19f2..7ad84f7080 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -7436,7 +7436,7 @@ qemuDomainCheckDiskStartupPolicy(virQEMUDriver *drive= r, * The vm must be locked when any of the following cleanup functions is * called. */ -int +void qemuDomainCleanupAdd(virDomainObj *vm, qemuDomainCleanupCallback cb) { @@ -7447,7 +7447,7 @@ qemuDomainCleanupAdd(virDomainObj *vm, =20 for (i =3D 0; i < priv->ncleanupCallbacks; i++) { if (priv->cleanupCallbacks[i] =3D=3D cb) - return 0; + return; } =20 VIR_RESIZE_N(priv->cleanupCallbacks, @@ -7455,7 +7455,6 @@ qemuDomainCleanupAdd(virDomainObj *vm, priv->ncleanupCallbacks, 1); =20 priv->cleanupCallbacks[priv->ncleanupCallbacks++] =3D cb; - return 0; } =20 void diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index c7125722e0..3ea0426c7e 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -746,8 +746,8 @@ int qemuDomainPrepareStorageSourceBlockdev(virDomainDis= kDef *disk, qemuDomainObjPrivate *priv, virQEMUDriverConfig *cfg); =20 -int qemuDomainCleanupAdd(virDomainObj *vm, - qemuDomainCleanupCallback cb); +void qemuDomainCleanupAdd(virDomainObj *vm, + qemuDomainCleanupCallback cb); void qemuDomainCleanupRemove(virDomainObj *vm, qemuDomainCleanupCallback cb); void qemuDomainCleanupRun(virQEMUDriver *driver, diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 3e3203471a..19337878e4 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3098,8 +3098,7 @@ qemuMigrationDstPrepareAny(virQEMUDriver *driver, VIR_WARN("Unable to encode migration cookie"); } =20 - if (qemuDomainCleanupAdd(vm, qemuMigrationDstPrepareCleanup) < 0) - goto stopjob; + qemuDomainCleanupAdd(vm, qemuMigrationDstPrepareCleanup); =20 if (!(flags & VIR_MIGRATE_OFFLINE)) { virDomainAuditStart(vm, "migrated", true); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196186; cv=none; d=zohomail.com; s=zohoarc; b=bHUEKnB/Nr+nox1WKtqKJch1s6DNlQvt6Te6bO1KSFhp5RMPBp0pm4Ae1cfQR3tIZrcKiVQWc1D8FvI+vu6Vp6W+TfmAFosheJRX6xwTbPVANJHC1Llh2c8go5GajpGvGHneCC7ncCqaZ7+fh7KoBo0G7jj9Uu5AnF8zNWh1Phg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196186; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Nz6iSGFHJdblDT87GAdBKg+o5dkIF5UL6czscnrmfzs=; b=PLMxFmQ/1B+0xPbzTyBPNXp5yaNkKAK7RROGbUFj/EN27DrwRwekCzYFHJdEQL51XR4Ew/jJqHCzrm9/gCvnhjklvWcLhJuobT1KhyrOgBA+MT8OCw8Flp2N7V+FqhKfXRU/CPONXWQ1vPIoMuH2q7T6iikN1GZoNZjAUNhKBus= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196186815404.6013969816071; Tue, 10 May 2022 08:23:06 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-270-FXy_gonuP1mNb-kyxJpY0w-1; Tue, 10 May 2022 11:22:15 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4DFF2100BAAD; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id E72AA401E31; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 63874194706E; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id E8C71194707F for ; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id CA9A2407DECE; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AAC6A407DECB for ; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 7DA1A2445EE; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196185; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=Nz6iSGFHJdblDT87GAdBKg+o5dkIF5UL6czscnrmfzs=; b=b0wIE49QWi2ym3QClhCQyw7eLheMbKUwodDY7BOcSPSgMXPzKcflcdx/2WyfSAR0lyQzyM PSuBhuAH6SoVRkgill6birMyb1ebYvYpfrxjH/IkJDZ4xEs/kjsIplwZEd2SlQmayrdjWU Jpu9U35O5FCLtuB04CY4+NAFHSuqGkI= X-MC-Unique: FXy_gonuP1mNb-kyxJpY0w-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 09/80] conf: Introduce virDomainObjIsFailedPostcopy helper Date: Tue, 10 May 2022 17:20:30 +0200 Message-Id: <1c126a6a0c4df4574ee570bfcd88e7d549e93434.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196188759100009 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/conf/domain_conf.c | 10 ++++++++++ src/conf/domain_conf.h | 4 ++++ src/libvirt_private.syms | 1 + 3 files changed, 15 insertions(+) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index f8c6b78c92..bae03422ff 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -29052,6 +29052,16 @@ virDomainObjGetState(virDomainObj *dom, int *reaso= n) } =20 =20 +bool +virDomainObjIsFailedPostcopy(virDomainObj *dom) +{ + return ((dom->state.state =3D=3D VIR_DOMAIN_PAUSED && + dom->state.reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY_FAILED) || + (dom->state.state =3D=3D VIR_DOMAIN_RUNNING && + dom->state.reason =3D=3D VIR_DOMAIN_RUNNING_POSTCOPY_FAILED)); +} + + void virDomainObjSetState(virDomainObj *dom, virDomainState state, int reason) { diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 88a411d00c..2b1f86932f 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3867,6 +3867,10 @@ virDomainState virDomainObjGetState(virDomainObj *obj, int *reason) ATTRIBUTE_NONNULL(1); =20 +bool +virDomainObjIsFailedPostcopy(virDomainObj *obj) + ATTRIBUTE_NONNULL(1); + virSecurityLabelDef * virDomainDefGetSecurityLabelDef(const virDomainDef *def, const char *model= ); =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 97bfca906b..070551b773 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -579,6 +579,7 @@ virDomainObjGetOneDef; virDomainObjGetOneDefState; virDomainObjGetPersistentDef; virDomainObjGetState; +virDomainObjIsFailedPostcopy; virDomainObjNew; virDomainObjParseFile; virDomainObjParseNode; --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196135; cv=none; d=zohomail.com; s=zohoarc; b=C6suFPUaI+vfHL8mnei6skoBck1QpUQH4BW2eO50QmBfYTMtHepbixpYZy75kyfMuvVFq2l2k0Yi7gDri7IQ8LC9A5gQXEVrYDsk6SQKQBxOtlyigG+yYDqfMvFKUm18lJksbN4K52if65IBUzF+HfJv9Zrx79ua8gQntU0v8mo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196135; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=vFIHwqrvZ4n/1ruDOHmjNhsJ4XwvpZzIWiGVg6c/GyE=; b=KsDPX5ubR4BAI8o7ONgaD4dr9o1G+qOFQOnWkcl8xUBSV4jHFsa+XXKMYp8BsrLiazbTQC2vlGW2vNTOFh01a1dyG3oENdzIGuDXKJY3lQDIO1KJamLAca3K/q3UF1jhWe7L2k+urFCxubW5QNnHOA46CP18dTbO8DYX5DhMvyo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196135748118.477895105995; Tue, 10 May 2022 08:22:15 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-549-eT6bC1EbPF2Abiw9ngFnpA-1; Tue, 10 May 2022 11:22:12 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2602C80B91C; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 105DA54B076; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 734D6194706F; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id DBB0F194707C for ; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id D1DD5C07F51; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AFF42C27EB1 for ; Tue, 10 May 2022 15:21:45 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 7EDA82445EF; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196134; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=vFIHwqrvZ4n/1ruDOHmjNhsJ4XwvpZzIWiGVg6c/GyE=; b=fCcBKn98DDgoCstOIZK5dNmd+/o78f6TexDwPjNuzTEhGJ63WuqErxGBIhY5teMAfJnMS8 kElCCTGuIqTKdJXjt440X50Awx39NmOnjkyvZoIiG7zBChgEs+JdWaRJYysTmW3d9EwcaM QpPXBykirpUKs3PJX4OaSCR0AyAr+v8= X-MC-Unique: eT6bC1EbPF2Abiw9ngFnpA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 10/80] conf: Introduce virDomainObjIsPostcopy helper Date: Tue, 10 May 2022 17:20:31 +0200 Message-Id: <3d0c762c6e3a32783a3759d16f62fedfceee249f.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196136495100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/conf/domain_conf.c | 22 ++++++++++++++++++++++ src/conf/domain_conf.h | 4 ++++ src/libvirt_private.syms | 1 + 3 files changed, 27 insertions(+) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index bae03422ff..e6adfb1d90 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -29062,6 +29062,28 @@ virDomainObjIsFailedPostcopy(virDomainObj *dom) } =20 =20 +bool +virDomainObjIsPostcopy(virDomainObj *dom, + virDomainJobOperation op) +{ + if (op !=3D VIR_DOMAIN_JOB_OPERATION_MIGRATION_IN && + op !=3D VIR_DOMAIN_JOB_OPERATION_MIGRATION_OUT) + return false; + + if (op =3D=3D VIR_DOMAIN_JOB_OPERATION_MIGRATION_IN) { + return (dom->state.state =3D=3D VIR_DOMAIN_PAUSED && + dom->state.reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY_FAILED= ) || + (dom->state.state =3D=3D VIR_DOMAIN_RUNNING && + (dom->state.reason =3D=3D VIR_DOMAIN_RUNNING_POSTCOPY || + dom->state.reason =3D=3D VIR_DOMAIN_RUNNING_POSTCOPY_FAIL= ED)); + } + + return dom->state.state =3D=3D VIR_DOMAIN_PAUSED && + (dom->state.reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY || + dom->state.reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY_FAILED); +} + + void virDomainObjSetState(virDomainObj *dom, virDomainState state, int reason) { diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 2b1f86932f..3f2839bb82 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3870,6 +3870,10 @@ virDomainObjGetState(virDomainObj *obj, int *reason) bool virDomainObjIsFailedPostcopy(virDomainObj *obj) ATTRIBUTE_NONNULL(1); +bool +virDomainObjIsPostcopy(virDomainObj *dom, + virDomainJobOperation op) + ATTRIBUTE_NONNULL(1); =20 virSecurityLabelDef * virDomainDefGetSecurityLabelDef(const virDomainDef *def, const char *model= ); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 070551b773..84e34c1648 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -580,6 +580,7 @@ virDomainObjGetOneDefState; virDomainObjGetPersistentDef; virDomainObjGetState; virDomainObjIsFailedPostcopy; +virDomainObjIsPostcopy; virDomainObjNew; virDomainObjParseFile; virDomainObjParseNode; --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196175; cv=none; d=zohomail.com; s=zohoarc; b=l7wsFdhks3aIYNJxC/VNnIM4ilS2FnRQkIO1RKa388lTdpHbh++4a8nD2GJkOq9Aa+XT0QLEvgOeu04rbACGLimsK2fiO0dn2NAD/BfYl0IDIIrrHJ4vvfJ918Ekkt0RM9A1LYcAaoRh8cZ6bh4JnCVfq0h3f9ZzX5mHE3eyJCE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196175; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kyS+P7j/bP+a8xdFoZiEskSBEfhYUPUyTnNt4yicoF8=; b=lPYKi7wibGeuZiE/GkntWIyFVlipzs2sQxmd3nVrlqvGmqKVTUZ77hlg+bIPswemDLnJY30pwouIqoqX4QK7H8KMackvPZyC0Wn6cu7PW8BXPLnC3+v3CO/eQrkGHeuBO9vTa3Z8t88Kz8gsLHlOjpdEhE77Ze2a3jf3bJgF7xQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196175753680.0284372908294; Tue, 10 May 2022 08:22:55 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-602-fRvjsyEzO--FpEvNnTjdQw-1; Tue, 10 May 2022 11:22:40 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 8E293803792; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7B43614E1D8A; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 6B1AB1947B86; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 193A9194706B for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id EA024463EC9; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C994B463ECC for ; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 8013C2445F0; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196174; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=kyS+P7j/bP+a8xdFoZiEskSBEfhYUPUyTnNt4yicoF8=; b=YXhjl7Ozv4NQOMZDW4B6xo9Xtq/8CLyRBuAozfPxefxba402FF212fFYdMtOZ8lZNjx7UE zTitQlvrPNXDa/vaOGHn5rzPgFlTeUDLwyiPV+rZ4QVGv5ngIGnnU0wbLKGwWIwcPB/GxO 0k7y+k9xpAkeUZv3zmuxcXnE7IifuNA= X-MC-Unique: fRvjsyEzO--FpEvNnTjdQw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 11/80] qemu: Introduce qemuProcessCleanupMigrationJob Date: Tue, 10 May 2022 17:20:32 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196176731100001 Content-Type: text/plain; charset="utf-8" The function can be used as a callback for qemuDomainCleanupAdd to automatically clean up a migration job when a domain is destroyed. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_process.c | 25 +++++++++++++++++++++++++ src/qemu/qemu_process.h | 3 +++ 2 files changed, 28 insertions(+) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index a3192a7196..dba3ad8c87 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3431,6 +3431,31 @@ qemuProcessUpdateState(virQEMUDriver *driver, virDom= ainObj *vm) return 0; } =20 + +void +qemuProcessCleanupMigrationJob(virQEMUDriver *driver, + virDomainObj *vm) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + virDomainState state; + int reason; + + state =3D virDomainObjGetState(vm, &reason); + + VIR_DEBUG("driver=3D%p, vm=3D%s, asyncJob=3D%s, state=3D%s, reason=3D%= s", + driver, vm->def->name, + virDomainAsyncJobTypeToString(priv->job.asyncJob), + virDomainStateTypeToString(state), + virDomainStateReasonToString(state, reason)); + + if (priv->job.asyncJob !=3D VIR_ASYNC_JOB_MIGRATION_IN && + priv->job.asyncJob !=3D VIR_ASYNC_JOB_MIGRATION_OUT) + return; + + qemuDomainObjDiscardAsyncJob(vm); +} + + static int qemuProcessRecoverMigrationIn(virQEMUDriver *driver, virDomainObj *vm, diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h index f81bfd930a..73e6110eee 100644 --- a/src/qemu/qemu_process.h +++ b/src/qemu/qemu_process.h @@ -244,3 +244,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuProcessQMP, qemuProce= ssQMPFree); int qemuProcessQMPStart(qemuProcessQMP *proc); =20 bool qemuProcessRebootAllowed(const virDomainDef *def); + +void qemuProcessCleanupMigrationJob(virQEMUDriver *driver, + virDomainObj *vm); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196145; cv=none; d=zohomail.com; s=zohoarc; b=GP5783ccML0IFDBEsTCyCB0VSLrzsc4S+++SaQ4RU9cvF3XGGhYLrhaONiRZwTvC/XlUoAacny1M+Nh9g7EA78jOEEYpCodiSfa3C+2SSdM8Lxc94FTOmruHkPkaJNzeN8IktpsPxTwXukB+eSCR8vnSCihoze36NjmDqFDkR0s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196145; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HzHDb7PbmirLCJHZ4DPSTGafJUBJPm49i27mLF8wyxs=; b=DJyO0dK6rteqWKYhOzfXWC64jh0WW0tKpkJ+PuPs5w2hm7Gx9pAONmAOtEbJfZ86kMza10Jzt+q7s+Oy4EF63lCn8rNWmRgE4uqsTfb1YXd88BwAephRJJN43uwdjrrzq8q4HU+jrtO55+0K8YDzLqItbxu4K66afI7IPANzY20= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196145148884.476963684706; Tue, 10 May 2022 08:22:25 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-75-E7jZg8LyNLGhUu4RNATDcQ-1; Tue, 10 May 2022 11:21:58 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 633113810D20; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4F21040E7F15; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 78BD61947B86; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 06B3E1947073 for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id EAC0214E09E8; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C98C414E09E7 for ; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 8163A2445F1; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196144; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=HzHDb7PbmirLCJHZ4DPSTGafJUBJPm49i27mLF8wyxs=; b=UVVXwAtCbCCrZ6Ma/bqQ6cqJWma0HuPLiSyZrflQdnhCv3lOers5sg6g/5eP28VG/Wm+kn 2QWISQrqRz4E4C6VECcikRpyiEZtsoI3MjmvILTzFcCO1p5fxS7ssrFoziViCO4RAXQojS FqlfXx+3G/gJA6XLwq64l6kjZnzSF/g= X-MC-Unique: E7jZg8LyNLGhUu4RNATDcQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 12/80] qemu: Rename qemuDomainObjRestoreJob as qemuDomainObjPreserveJob Date: Tue, 10 May 2022 17:20:33 +0200 Message-Id: <8c306c9e8e12947b94c028b63316e26fe9aca099.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196146568100001 Content-Type: text/plain; charset="utf-8" It is used for saving job out of domain object. Just like virErrorPreserveLast is used for errors. Let's make the naming consistent as Restore would suggest different semantics. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_domainjob.c | 14 ++++++++++++-- src/qemu/qemu_domainjob.h | 4 ++-- src/qemu/qemu_process.c | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_domainjob.c b/src/qemu/qemu_domainjob.c index cb20b798f7..1e5724b505 100644 --- a/src/qemu/qemu_domainjob.c +++ b/src/qemu/qemu_domainjob.c @@ -214,9 +214,19 @@ qemuDomainObjResetAsyncJob(qemuDomainJobObj *job) job->cb->resetJobPrivate(job->privateData); } =20 + +/** + * qemuDomainObjPreserveJob + * @param obj domain with a job that needs to be preserved + * @param job structure where to store job details from @obj + * + * Saves the current job details from @obj to @job and resets the job in @= obj. + * + * Returns 0 on success, -1 on failure. + */ int -qemuDomainObjRestoreJob(virDomainObj *obj, - qemuDomainJobObj *job) +qemuDomainObjPreserveJob(virDomainObj *obj, + qemuDomainJobObj *job) { qemuDomainObjPrivate *priv =3D obj->privateData; =20 diff --git a/src/qemu/qemu_domainjob.h b/src/qemu/qemu_domainjob.h index f67eace36c..2bbccf6329 100644 --- a/src/qemu/qemu_domainjob.h +++ b/src/qemu/qemu_domainjob.h @@ -158,8 +158,8 @@ void qemuDomainObjSetJobPhase(virDomainObj *obj, int phase); void qemuDomainObjSetAsyncJobMask(virDomainObj *obj, unsigned long long allowedJobs); -int qemuDomainObjRestoreJob(virDomainObj *obj, - qemuDomainJobObj *job); +int qemuDomainObjPreserveJob(virDomainObj *obj, + qemuDomainJobObj *job); void qemuDomainObjDiscardAsyncJob(virDomainObj *obj); void qemuDomainObjReleaseAsyncJob(virDomainObj *obj); =20 diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index dba3ad8c87..db0d9935be 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -8775,7 +8775,7 @@ qemuProcessReconnect(void *opaque) cfg =3D virQEMUDriverGetConfig(driver); priv =3D obj->privateData; =20 - qemuDomainObjRestoreJob(obj, &oldjob); + qemuDomainObjPreserveJob(obj, &oldjob); if (oldjob.asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_IN) stopFlags |=3D VIR_QEMU_PROCESS_STOP_MIGRATED; if (oldjob.asyncJob =3D=3D VIR_ASYNC_JOB_BACKUP && priv->backup) --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196149; cv=none; d=zohomail.com; s=zohoarc; b=VHOisxWmLZdeoj1/JqvpmDNa3edqWlIxtqH3U3cf22YZkusfauJ3dXmhz1/gCQhrrb629lkkboO9AGRe8bUwG9iO4Tq53qEV3TmcunXSc744ATCtO9yQh/sXmZRsSY3U9gwZabKeIKrQvpgn09Ec4I2PC27+42yYIh7eKq1o0a4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196149; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Xe/9T8RpuybOpO4Y1+9UimcmHxBlkL1T+pLVXL1Fjfk=; b=FYtNS6gYLHYDcmpO36sgyR0HfMjGHQ2xmMeF4+H0ohEDXF5TPiCQGDf9Y0pmlFXda0ngZtyLDpdjZu15FRPT8swabJlgfVqYiluFhoGTrd/Xi3EEJrY+hSK1SOqamen1LQQR1qVrdYwN5Si0oI17P2bi6qDhDoVJqGn6U0YGwBU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196149405964.2264901306957; Tue, 10 May 2022 08:22:29 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-547-JMvhQI5FPrOFMcD2lYbMKg-1; Tue, 10 May 2022 11:22:09 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E85E4A18EEB; Tue, 10 May 2022 15:21:52 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id D48BF40E7F0C; Tue, 10 May 2022 15:21:52 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 9D50C1947B95; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 33C3919451EC for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 18404C28100; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D0F85C28112 for ; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 82ABE2445F2; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196148; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=Xe/9T8RpuybOpO4Y1+9UimcmHxBlkL1T+pLVXL1Fjfk=; b=invoKlgEW1J9tXaC47c+J6ilenp1O41hu6+Omdv3b+pNhBBf1R0XL5qn7uYScoNrPbb0wu aTPtSE0CYT7WFaEWx1cduqMjYHrmM9VQrV/SpGC6jqW1qiLLbc4Asl2c6logxndf9fkDU9 2H1OLajmYB2R4wen973qMhxJDbIjqYg= X-MC-Unique: JMvhQI5FPrOFMcD2lYbMKg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 13/80] qemu: Add qemuDomainObjRestoreAsyncJob Date: Tue, 10 May 2022 17:20:34 +0200 Message-Id: <1be7d02ddf54f66d1d7c3b9de5428cb12a7c6b2a.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196150586100001 Content-Type: text/plain; charset="utf-8" The code for setting up a previously active backup job in qemuProcessRecoverJob is generalized into a dedicated function so that it can be later reused in other places. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina --- src/qemu/qemu_domainjob.c | 35 +++++++++++++++++++++++++++++++++++ src/qemu/qemu_domainjob.h | 8 ++++++++ src/qemu/qemu_process.c | 29 +++++++---------------------- 3 files changed, 50 insertions(+), 22 deletions(-) diff --git a/src/qemu/qemu_domainjob.c b/src/qemu/qemu_domainjob.c index 1e5724b505..1f82457bd4 100644 --- a/src/qemu/qemu_domainjob.c +++ b/src/qemu/qemu_domainjob.c @@ -249,6 +249,41 @@ qemuDomainObjPreserveJob(virDomainObj *obj, return 0; } =20 + +void +qemuDomainObjRestoreAsyncJob(virDomainObj *vm, + virDomainAsyncJob asyncJob, + int phase, + virDomainJobOperation operation, + qemuDomainJobStatsType statsType, + virDomainJobStatus status, + unsigned long long allowedJobs) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + qemuDomainJobObj *job =3D &priv->job; + unsigned long long now; + + VIR_DEBUG("Restoring %s async job for domain %s", + virDomainAsyncJobTypeToString(asyncJob), vm->def->name); + + ignore_value(virTimeMillisNow(&now)); + + priv->job.jobsQueued++; + job->asyncJob =3D asyncJob; + job->phase =3D phase; + job->asyncOwnerAPI =3D g_strdup(virThreadJobGet()); + job->asyncStarted =3D now; + + qemuDomainObjSetAsyncJobMask(vm, allowedJobs); + + job->current =3D virDomainJobDataInit(&qemuJobDataPrivateDataCallbacks= ); + qemuDomainJobSetStatsType(priv->job.current, statsType); + job->current->operation =3D operation; + job->current->status =3D status; + job->current->started =3D now; +} + + void qemuDomainObjClearJob(qemuDomainJobObj *job) { diff --git a/src/qemu/qemu_domainjob.h b/src/qemu/qemu_domainjob.h index 2bbccf6329..069bb9f8cb 100644 --- a/src/qemu/qemu_domainjob.h +++ b/src/qemu/qemu_domainjob.h @@ -160,6 +160,14 @@ void qemuDomainObjSetAsyncJobMask(virDomainObj *obj, unsigned long long allowedJobs); int qemuDomainObjPreserveJob(virDomainObj *obj, qemuDomainJobObj *job); +void +qemuDomainObjRestoreAsyncJob(virDomainObj *vm, + virDomainAsyncJob asyncJob, + int phase, + virDomainJobOperation operation, + qemuDomainJobStatsType statsType, + virDomainJobStatus status, + unsigned long long allowedJobs); void qemuDomainObjDiscardAsyncJob(virDomainObj *obj); void qemuDomainObjReleaseAsyncJob(virDomainObj *obj); =20 diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index db0d9935be..590e989126 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3628,7 +3628,6 @@ qemuProcessRecoverJob(virQEMUDriver *driver, qemuDomainObjPrivate *priv =3D vm->privateData; virDomainState state; int reason; - unsigned long long now; =20 state =3D virDomainObjGetState(vm, &reason); =20 @@ -3685,28 +3684,14 @@ qemuProcessRecoverJob(virQEMUDriver *driver, break; =20 case VIR_ASYNC_JOB_BACKUP: - ignore_value(virTimeMillisNow(&now)); - /* Restore the config of the async job which is not persisted */ - priv->job.jobsQueued++; - priv->job.asyncJob =3D VIR_ASYNC_JOB_BACKUP; - priv->job.asyncOwnerAPI =3D g_strdup(virThreadJobGet()); - priv->job.asyncStarted =3D now; - - qemuDomainObjSetAsyncJobMask(vm, (VIR_JOB_DEFAULT_MASK | - JOB_MASK(VIR_JOB_SUSPEND) | - JOB_MASK(VIR_JOB_MODIFY))); - - /* We reset the job parameters for backup so that the job will look - * active. This is possible because we are able to recover the sta= te - * of blockjobs and also the backup job allows all sub-job types */ - priv->job.current =3D virDomainJobDataInit(&qemuJobDataPrivateData= Callbacks); - - qemuDomainJobSetStatsType(priv->job.current, - QEMU_DOMAIN_JOB_STATS_TYPE_BACKUP); - priv->job.current->operation =3D VIR_DOMAIN_JOB_OPERATION_BACKUP; - priv->job.current->status =3D VIR_DOMAIN_JOB_STATUS_ACTIVE; - priv->job.current->started =3D now; + qemuDomainObjRestoreAsyncJob(vm, VIR_ASYNC_JOB_BACKUP, 0, + VIR_DOMAIN_JOB_OPERATION_BACKUP, + QEMU_DOMAIN_JOB_STATS_TYPE_BACKUP, + VIR_DOMAIN_JOB_STATUS_ACTIVE, + (VIR_JOB_DEFAULT_MASK | + JOB_MASK(VIR_JOB_SUSPEND) | + JOB_MASK(VIR_JOB_MODIFY))); break; =20 case VIR_ASYNC_JOB_NONE: --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196187; cv=none; d=zohomail.com; s=zohoarc; b=l46Ss/px6IVoOt8dDANw5Uu+n46W1oJ0ABnlcKGrZaBNrfvhiACMisuXqDbj61p3vmVS+BhPoS8i+d9HSdpylNFh35fQO0+UACjH7MjT4XgDnNtBoj6TO5Qs+po1Dh1J8P3wXJO42p1PArwFKk0X9Fu1c+ymBPslGiCHsvSzhBU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196187; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=j9gTTjwSJc1zi533afUw765vYogwD7N+AQx/PXTnlXQ=; b=gp2tH9gRpC/PBaXqCPYeyJQmBoe1CF/pb+wFku7UK+GKEfLgKktNfu7/2e23rBYA/g2Httn1V1aDgZ0ltWizCtx1DTX8NhIJ/bB3ekj43TxXYuK4KZBESWBRbwJQC3gEkfQxRP2lz7r7nl29cm7SKOubmVTzlZfc4dQn36Z0Kb0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196187118398.2894243239383; Tue, 10 May 2022 08:23:07 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-658-wFPR8VAIN5SMEC1ns6H9OQ-1; Tue, 10 May 2022 11:22:19 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2BA4618E5361; Tue, 10 May 2022 15:21:56 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 147C054B070; Tue, 10 May 2022 15:21:56 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 359BF1940342; Tue, 10 May 2022 15:21:53 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 3362F19452D2 for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 13BBFC28102; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CB756C28111 for ; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 840062445F3; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196186; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=j9gTTjwSJc1zi533afUw765vYogwD7N+AQx/PXTnlXQ=; b=HOp1A1dyqJJlOe4RAfkGA4KU8cQYK9k56UCoPuhPegXQrqVraTOz2P92B8oI0aS95WRnej K03ghW+TBGMTe8NDNVRwqcVSV1gcGZpMBB4K9G26QsMoQmwVmZLEJ30kmqgWCrK8uJYEpQ Jg+tOCDWDMaRx+dZxLbMclMmvEMW/uI= X-MC-Unique: wFPR8VAIN5SMEC1ns6H9OQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 14/80] qemu: Keep migration job active after failed post-copy Date: Tue, 10 May 2022 17:20:35 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196188800100011 Content-Type: text/plain; charset="utf-8" When post-copy migration fails, we can't just abort the migration and resume the domain on the source host as it is already running on the destination host and no host has a complete state of the domain memory. Instead of the current approach of just marking the domain on both ends as paused/running with a post-copy failed sub state, we will keep the migration job active (even though the migration API will return failure) so that the state is more visible and we can better control what APIs can be called on the domains and even allow for resuming the migration. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 94 ++++++++++++++++++++++++++++----------- 1 file changed, 68 insertions(+), 26 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 19337878e4..532a9300b6 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2249,10 +2249,17 @@ qemuMigrationSrcCleanup(virDomainObj *vm, VIR_WARN("Migration of domain %s finished but we don't know if the" " domain was successfully started on destination or not", vm->def->name); - qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_OUT, - jobPriv->migParams, priv->job.apiFlags); - /* clear the job and let higher levels decide what to do */ - qemuMigrationJobFinish(vm); + + if (virDomainObjIsPostcopy(vm, VIR_DOMAIN_JOB_OPERATION_MIGRATION_= OUT)) { + qemuMigrationSrcPostcopyFailed(vm); + qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); + qemuMigrationJobContinue(vm); + } else { + qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_O= UT, + jobPriv->migParams, priv->job.apiFlag= s); + /* clear the job and let higher levels decide what to do */ + qemuMigrationJobFinish(vm); + } break; =20 case QEMU_MIGRATION_PHASE_PERFORM3: @@ -3427,6 +3434,7 @@ qemuMigrationSrcConfirmPhase(virQEMUDriver *driver, qemuDomainObjPrivate *priv =3D vm->privateData; qemuDomainJobPrivate *jobPriv =3D priv->job.privateData; virDomainJobData *jobData =3D NULL; + qemuMigrationJobPhase phase; =20 VIR_DEBUG("driver=3D%p, vm=3D%p, cookiein=3D%s, cookieinlen=3D%d, " "flags=3D0x%x, retcode=3D%d", @@ -3435,10 +3443,17 @@ qemuMigrationSrcConfirmPhase(virQEMUDriver *driver, =20 virCheckFlags(QEMU_MIGRATION_FLAGS, -1); =20 - qemuMigrationJobSetPhase(vm, - retcode =3D=3D 0 - ? QEMU_MIGRATION_PHASE_CONFIRM3 - : QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED); + /* Keep the original migration phase in case post-copy failed as the j= ob + * will stay active even though migration API finishes with an error. + */ + if (virDomainObjIsFailedPostcopy(vm)) + phase =3D priv->job.phase; + else if (retcode =3D=3D 0) + phase =3D QEMU_MIGRATION_PHASE_CONFIRM3; + else + phase =3D QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED; + + qemuMigrationJobSetPhase(vm, phase); =20 if (!(mig =3D qemuMigrationCookieParse(driver, vm->def, priv->origname= , priv, cookiein, cookieinlen, @@ -3507,13 +3522,14 @@ qemuMigrationSrcConfirmPhase(virQEMUDriver *driver, virErrorRestore(&orig_err); =20 if (virDomainObjGetState(vm, &reason) =3D=3D VIR_DOMAIN_PAUSED && - reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY) + reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY) { qemuMigrationSrcPostcopyFailed(vm); - else + } else if (!virDomainObjIsFailedPostcopy(vm)) { qemuMigrationSrcRestoreDomainState(driver, vm); =20 - qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_OUT, - jobPriv->migParams, priv->job.apiFlags); + qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_O= UT, + jobPriv->migParams, priv->job.apiFlag= s); + } =20 qemuDomainSaveStatus(vm); } @@ -3531,12 +3547,18 @@ qemuMigrationSrcConfirm(virQEMUDriver *driver, { qemuMigrationJobPhase phase; g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); + qemuDomainObjPrivate *priv =3D vm->privateData; int ret =3D -1; =20 if (!qemuMigrationJobIsActive(vm, VIR_ASYNC_JOB_MIGRATION_OUT)) goto cleanup; =20 - if (cancelled) + /* Keep the original migration phase in case post-copy failed as the j= ob + * will stay active even though migration API finishes with an error. + */ + if (virDomainObjIsFailedPostcopy(vm)) + phase =3D priv->job.phase; + else if (cancelled) phase =3D QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED; else phase =3D QEMU_MIGRATION_PHASE_CONFIRM3; @@ -3549,7 +3571,13 @@ qemuMigrationSrcConfirm(virQEMUDriver *driver, cookiein, cookieinlen, flags, cancelled); =20 - qemuMigrationJobFinish(vm); + if (virDomainObjIsFailedPostcopy(vm)) { + qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); + qemuMigrationJobContinue(vm); + } else { + qemuMigrationJobFinish(vm); + } + if (!virDomainObjIsActive(vm)) { if (!cancelled && ret =3D=3D 0 && flags & VIR_MIGRATE_UNDEFINE_SOU= RCE) { virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm); @@ -5365,16 +5393,22 @@ qemuMigrationSrcPerformJob(virQEMUDriver *driver, if (ret < 0) virErrorPreserveLast(&orig_err); =20 - /* v2 proto has no confirm phase so we need to reset migration paramet= ers - * here - */ - if (!v3proto && ret < 0) - qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_OUT, - jobPriv->migParams, priv->job.apiFlags); + if (virDomainObjIsFailedPostcopy(vm)) { + qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); + qemuMigrationJobContinue(vm); + } else { + /* v2 proto has no confirm phase so we need to reset migration par= ameters + * here + */ + if (!v3proto && ret < 0) + qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_O= UT, + jobPriv->migParams, priv->job.apiFlag= s); =20 - qemuMigrationSrcRestoreDomainState(driver, vm); + qemuMigrationSrcRestoreDomainState(driver, vm); + + qemuMigrationJobFinish(vm); + } =20 - qemuMigrationJobFinish(vm); if (!virDomainObjIsActive(vm) && ret =3D=3D 0) { if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) { virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm); @@ -5445,11 +5479,12 @@ qemuMigrationSrcPerformPhase(virQEMUDriver *driver, goto endjob; =20 endjob: - if (ret < 0) { + if (ret < 0 && !virDomainObjIsFailedPostcopy(vm)) { qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_OUT, jobPriv->migParams, priv->job.apiFlags); qemuMigrationJobFinish(vm); } else { + qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); qemuMigrationJobContinue(vm); } =20 @@ -5910,10 +5945,17 @@ qemuMigrationDstFinish(virQEMUDriver *driver, g_clear_pointer(&priv->job.completed, virDomainJobDataFree); } =20 - qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, - jobPriv->migParams, priv->job.apiFlags); + if (virDomainObjIsFailedPostcopy(vm)) { + qemuProcessAutoDestroyRemove(driver, vm); + qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); + qemuMigrationJobContinue(vm); + } else { + qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, + jobPriv->migParams, priv->job.apiFlags); + + qemuMigrationJobFinish(vm); + } =20 - qemuMigrationJobFinish(vm); if (!virDomainObjIsActive(vm)) qemuDomainRemoveInactive(driver, vm); =20 --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196145; cv=none; d=zohomail.com; s=zohoarc; b=GPAh9xZ9jskRx/8KCoPF3Ubf4qMe1JIbgYSYZcT5hkTJQnhc0MVvfExArvD9Eg3JA1pNT+R1uEKW81+GJ2fPqppMAoWv0iGEBagIi1+LvFWtDQr1sLVGpCMHK0DC+FbBxDy5qaLd4G++Ej0Yi73me9qT0diYPpHZHTqBZWoPWyA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196145; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qdSYGWITVrZ/KsHxvnczdqgWs0xmRZINXHtN2sg4wB4=; b=GDGa8OdSFtqgZFc+nH+pnLYu24QgyqsULj6km+oi7oq3Qb7GdsAkKLPmtXQej0Vp37DwfErsxd8Ef0fFDX8qEq3o5p8NeKytia26qY8zMpQ2tsBUR+DJqrSkoXmD1SVzIr/gvHE46lFu6hfaqyHWV0tbgLj1iKfYMA6zb7KrvW0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196145489332.8459645752239; Tue, 10 May 2022 08:22:25 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-522-uuqOSyvQOyGq_AKSUvPs5g-1; Tue, 10 May 2022 11:22:19 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E26E8382ECDE; Tue, 10 May 2022 15:21:54 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id CCEFE40E7F0C; Tue, 10 May 2022 15:21:54 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id A8E071947BB2; Tue, 10 May 2022 15:21:52 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 0338D1947072 for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id E99A314E09EB; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C9B1014E09E8 for ; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 853FD2445F4; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196144; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=qdSYGWITVrZ/KsHxvnczdqgWs0xmRZINXHtN2sg4wB4=; b=iM7A5EeYo99AC9K5mimnUL5Dd54tJQoXonshw9o184UWYCnJbyb4Jajcu1GDnIenzLVRPv fgrOvBhE9OcDcxmJD4byfZI4rqT1Y3R8+FKTzkjhLfKEGjyH+UtfIMMdtBk3bs/XTuUZox l2w2iJOGSO67TOLGTASJx7x2rvet/Cg= X-MC-Unique: uuqOSyvQOyGq_AKSUvPs5g-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 15/80] qemu: Abort failed post-copy when we haven't called Finish yet Date: Tue, 10 May 2022 17:20:36 +0200 Message-Id: <748736cd88503054b0874cc626b8d26518be52ce.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196146616100002 Content-Type: text/plain; charset="utf-8" When migration fails after it already switched to post-copy phase on the source, but early enough that we haven't called Finish on the destination yet, we know the vCPUs were not started on the destination and the source host still has a complete state of the domain. Thus we can just ignore the fact post-copy phase started and normally abort the migration and resume vCPUs on the source. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 9 +++++++++ src/qemu/qemu_process.c | 20 ++++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 532a9300b6..e892a09885 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -4442,6 +4442,15 @@ qemuMigrationSrcRun(virQEMUDriver *driver, virErrorPreserveLast(&orig_err); =20 if (virDomainObjIsActive(vm)) { + int reason; + virDomainState state =3D virDomainObjGetState(vm, &reason); + + if (state =3D=3D VIR_DOMAIN_PAUSED && reason =3D=3D VIR_DOMAIN_PAU= SED_POSTCOPY) { + VIR_DEBUG("Aborting failed post-copy migration as the destinat= ion " + "is not running yet"); + virDomainObjSetState(vm, state, VIR_DOMAIN_PAUSED_MIGRATION); + } + if (cancel && priv->job.current->status !=3D VIR_DOMAIN_JOB_STATUS_HYPERVISO= R_COMPLETED && qemuDomainObjEnterMonitorAsync(driver, vm, diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 590e989126..e83668e088 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3554,20 +3554,16 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *drive= r, case QEMU_MIGRATION_PHASE_PERFORM2: case QEMU_MIGRATION_PHASE_PERFORM3: /* migration is still in progress, let's cancel it and resume the - * domain; however we can only do that before migration enters - * post-copy mode + * domain; we can do so even in post-copy phase as the domain was = not + * resumed on the destination host yet */ - if (postcopy) { - qemuMigrationSrcPostcopyFailed(vm); - } else { - VIR_DEBUG("Cancelling unfinished migration of domain %s", - vm->def->name); - if (qemuMigrationSrcCancel(driver, vm) < 0) { - VIR_WARN("Could not cancel ongoing migration of domain %s", - vm->def->name); - } - resume =3D true; + VIR_DEBUG("Cancelling unfinished migration of domain %s", + vm->def->name); + if (qemuMigrationSrcCancel(driver, vm) < 0) { + VIR_WARN("Could not cancel ongoing migration of domain %s", + vm->def->name); } + resume =3D true; break; =20 case QEMU_MIGRATION_PHASE_PERFORM3_DONE: --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196210; cv=none; d=zohomail.com; s=zohoarc; b=B+mBwaLxgBEe37YiwcbUGUYkAFmgzGTlCZcFQirMWZZA5AYhUp0GwOeXh35AlprtvStAw/YS64GaKIi8fusv1114CXyJ6oLNJyuTI8NX4IXUnVaYwx6o1PYocxjxoDte2QkBWUHVhny6LARiTZRP47PIPvRGzRjMUXUqBfXpX+U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196210; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0oVR3DUemvcgmtp5lw3W9m9tQ812V8+fH+6Jzr2Yv90=; b=j+4mN5Uq1r6/tSsvxtpKJobI89F67d3TgPW8CmwjkTeVhHEa5sj9BgpiFZGfV9vIrDSrB5mtehkMGesHqghpOi4m8UaUaOVfHsJ2lPcAk5T2GKimiEf8vlz+gvMmPInbKKZozKbMP86SaChAgtWNDaGNz4cz3fFonykmRK/EMQg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196210446518.2483339036894; Tue, 10 May 2022 08:23:30 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-176-l3MJRGP7MjSZcz1UrdqMYw-1; Tue, 10 May 2022 11:23:22 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id DEB79A18EFB; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id BE72740E7F17; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 0783D19451EC; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 244B81947072 for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 13B8054B092; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C949554B072 for ; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 8691D2445F5; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196209; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=0oVR3DUemvcgmtp5lw3W9m9tQ812V8+fH+6Jzr2Yv90=; b=TA/MV1koCT7sLDtSIq+u3QJS+RnU52wfwcslKAKBVuGLTaOAsKZwUeK87qQdNwnGRUMXim K5g5wimIrcTQot/zC+Qgix+Lo+ODk0XpSwUsGImOYznzVHD4JDsspoAdYPV1GjXaZIfu5N 5c+2Uh21n7DHxzkenvi4WqxPppH9BBI= X-MC-Unique: l3MJRGP7MjSZcz1UrdqMYw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 16/80] qemu: Restore failed migration job on reconnect Date: Tue, 10 May 2022 17:20:37 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196210882100008 Content-Type: text/plain; charset="utf-8" Since we keep the migration job active when post-copy migration fails, we need to restore it when reconnecting to running domains. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_process.c | 128 ++++++++++++++++++++++++++++++---------- 1 file changed, 96 insertions(+), 32 deletions(-) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index e83668e088..3d73c716f1 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3456,20 +3456,48 @@ qemuProcessCleanupMigrationJob(virQEMUDriver *drive= r, } =20 =20 +static void +qemuProcessRestoreMigrationJob(virDomainObj *vm, + qemuDomainJobObj *job) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + qemuDomainJobPrivate *jobPriv =3D job->privateData; + virDomainJobOperation op; + unsigned long long allowedJobs; + + if (job->asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_IN) { + op =3D VIR_DOMAIN_JOB_OPERATION_MIGRATION_IN; + allowedJobs =3D VIR_JOB_NONE; + } else { + op =3D VIR_DOMAIN_JOB_OPERATION_MIGRATION_OUT; + allowedJobs =3D VIR_JOB_DEFAULT_MASK | JOB_MASK(VIR_JOB_MIGRATION_= OP); + } + + qemuDomainObjRestoreAsyncJob(vm, job->asyncJob, job->phase, op, + QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION, + VIR_DOMAIN_JOB_STATUS_PAUSED, + allowedJobs); + + job->privateData =3D g_steal_pointer(&priv->job.privateData); + priv->job.privateData =3D jobPriv; + priv->job.apiFlags =3D job->apiFlags; + + qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); +} + + +/* + * Returns + * -1 on error, the domain will be killed, + * 0 the domain should remain running with the migration job discarde= d, + * 1 the daemon was restarted during post-copy phase + */ static int qemuProcessRecoverMigrationIn(virQEMUDriver *driver, virDomainObj *vm, - const qemuDomainJobObj *job, - virDomainState state, - int reason) + qemuDomainJobObj *job, + virDomainState state) { - - qemuDomainJobPrivate *jobPriv =3D job->privateData; - bool postcopy =3D (state =3D=3D VIR_DOMAIN_PAUSED && - reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY_FAILED) || - (state =3D=3D VIR_DOMAIN_RUNNING && - reason =3D=3D VIR_DOMAIN_RUNNING_POSTCOPY); - VIR_DEBUG("Active incoming migration in phase %s", qemuMigrationJobPhaseTypeToString(job->phase)); =20 @@ -3506,32 +3534,37 @@ qemuProcessRecoverMigrationIn(virQEMUDriver *driver, /* migration finished, we started resuming the domain but didn't * confirm success or failure yet; killing it seems safest unless * we already started guest CPUs or we were in post-copy mode */ - if (postcopy) { + if (virDomainObjIsPostcopy(vm, VIR_DOMAIN_JOB_OPERATION_MIGRATION_= IN)) { qemuMigrationDstPostcopyFailed(vm); - } else if (state !=3D VIR_DOMAIN_RUNNING) { + return 1; + } + + if (state !=3D VIR_DOMAIN_RUNNING) { VIR_DEBUG("Killing migrated domain %s", vm->def->name); return -1; } break; } =20 - qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_NONE, - jobPriv->migParams, job->apiFlags); return 0; } =20 + +/* + * Returns + * -1 on error, the domain will be killed, + * 0 the domain should remain running with the migration job discarde= d, + * 1 the daemon was restarted during post-copy phase + */ static int qemuProcessRecoverMigrationOut(virQEMUDriver *driver, virDomainObj *vm, - const qemuDomainJobObj *job, + qemuDomainJobObj *job, virDomainState state, int reason, unsigned int *stopFlags) { - qemuDomainJobPrivate *jobPriv =3D job->privateData; - bool postcopy =3D state =3D=3D VIR_DOMAIN_PAUSED && - (reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY || - reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY_FAILED); + bool postcopy =3D virDomainObjIsPostcopy(vm, VIR_DOMAIN_JOB_OPERATION_= MIGRATION_OUT); bool resume =3D false; =20 VIR_DEBUG("Active outgoing migration in phase %s", @@ -3571,8 +3604,10 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *driver, * of Finish3 step; third party needs to check what to do next; in * post-copy mode we can use PAUSED_POSTCOPY_FAILED state for this */ - if (postcopy) + if (postcopy) { qemuMigrationSrcPostcopyFailed(vm); + return 1; + } break; =20 case QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED: @@ -3582,11 +3617,12 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *drive= r, */ if (postcopy) { qemuMigrationSrcPostcopyFailed(vm); - } else { - VIR_DEBUG("Resuming domain %s after failed migration", - vm->def->name); - resume =3D true; + return 1; } + + VIR_DEBUG("Resuming domain %s after failed migration", + vm->def->name); + resume =3D true; break; =20 case QEMU_MIGRATION_PHASE_CONFIRM3: @@ -3610,15 +3646,49 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *drive= r, } } =20 + return 0; +} + + +static int +qemuProcessRecoverMigration(virQEMUDriver *driver, + virDomainObj *vm, + qemuDomainJobObj *job, + unsigned int *stopFlags) +{ + qemuDomainJobPrivate *jobPriv =3D job->privateData; + virDomainState state; + int reason; + int rc; + + state =3D virDomainObjGetState(vm, &reason); + + if (job->asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT) { + rc =3D qemuProcessRecoverMigrationOut(driver, vm, job, + state, reason, stopFlags); + } else { + rc =3D qemuProcessRecoverMigrationIn(driver, vm, job, state); + } + + if (rc < 0) + return -1; + + if (rc > 0) { + qemuProcessRestoreMigrationJob(vm, job); + return 0; + } + qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_NONE, jobPriv->migParams, job->apiFlags); + return 0; } =20 + static int qemuProcessRecoverJob(virQEMUDriver *driver, virDomainObj *vm, - const qemuDomainJobObj *job, + qemuDomainJobObj *job, unsigned int *stopFlags) { qemuDomainObjPrivate *priv =3D vm->privateData; @@ -3636,14 +3706,8 @@ qemuProcessRecoverJob(virQEMUDriver *driver, =20 switch (job->asyncJob) { case VIR_ASYNC_JOB_MIGRATION_OUT: - if (qemuProcessRecoverMigrationOut(driver, vm, job, - state, reason, stopFlags) < 0) - return -1; - break; - case VIR_ASYNC_JOB_MIGRATION_IN: - if (qemuProcessRecoverMigrationIn(driver, vm, job, - state, reason) < 0) + if (qemuProcessRecoverMigration(driver, vm, job, stopFlags) < 0) return -1; break; =20 --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196134; cv=none; d=zohomail.com; s=zohoarc; b=KSe/Tl7TOrmZmle9v9cEijaZTTauJBRuUwQN42aJZECrISNNOECl1vRhOU9tZxYiT3hv5ODXjKIpsrYjSBZQ7Vy8H+5YGvbEfDJd1uQIsWRaiJaz3+XuHUsvGDdRd6LgM5B9kZTqWEOEGIM0Sx6HI9xFhobrTXX2WMEWI3kTkRI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196134; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=IVf5owOH0DC/GoMvUmrKMpGQRaX0WmaOYoUHyr5STrk=; b=NdJRsnxQM4WPeNNiwUFgyJ/WLp3VxweCTD3Q1/WGXs+K9+wcbpL9pE47xpc/Idsgh/mmoEN1avMG+R4O1o32g1ZXToIUIshSoajNdvaai7y+O1mTI0hIciXni7gGu1vPDk6WXznBGEBs9qGq1dnpiKcDzGhkFzRrUI4erRa/P88= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196134724734.659738025329; Tue, 10 May 2022 08:22:14 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-316-SrLQihX0NlKVihNPw79JcA-1; Tue, 10 May 2022 11:22:07 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E12E7180076D; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id CCF6240E7F0C; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 02C341947078; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 274591947077 for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 14DC954B072; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C9B2354B073 for ; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 87EA32445F6; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196133; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=IVf5owOH0DC/GoMvUmrKMpGQRaX0WmaOYoUHyr5STrk=; b=HnLQMqQI4M37DGtF1I4mG0LvsiomFqtmHakBRSjmAnDh4R4gO4pLG/wQaxIbRrVE9uT2Y2 J8ofRRj/E9SI/bd5uXUrCSLtfH53mKFX0X8ddFVUJNpn12nCyCBgGXkSeh0oSkK8eCrTRp ptIVSsjLzUtjA6i9x37MsxeWy40phsw= X-MC-Unique: SrLQihX0NlKVihNPw79JcA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 17/80] qemu: Restore async job start timestamp on reconnect Date: Tue, 10 May 2022 17:20:38 +0200 Message-Id: <9fd0caab71931b466ea2cbf8c76679419516a83a.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196136564100002 Content-Type: text/plain; charset="utf-8" Jobs that are supposed to remain active even when libvirt daemon restarts were reported as started at the time the daemon was restarted. This is not very helpful, we should restore the original timestamp. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina --- src/qemu/qemu_domainjob.c | 20 +++++++++++++------ src/qemu/qemu_domainjob.h | 1 + src/qemu/qemu_process.c | 4 +++- .../migration-in-params-in.xml | 2 +- .../migration-out-nbd-bitmaps-in.xml | 2 +- .../migration-out-nbd-out.xml | 2 +- .../migration-out-nbd-tls-out.xml | 2 +- .../migration-out-params-in.xml | 2 +- 8 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/qemu/qemu_domainjob.c b/src/qemu/qemu_domainjob.c index 1f82457bd4..8e8d229afe 100644 --- a/src/qemu/qemu_domainjob.c +++ b/src/qemu/qemu_domainjob.c @@ -235,6 +235,7 @@ qemuDomainObjPreserveJob(virDomainObj *obj, job->owner =3D priv->job.owner; job->asyncJob =3D priv->job.asyncJob; job->asyncOwner =3D priv->job.asyncOwner; + job->asyncStarted =3D priv->job.asyncStarted; job->phase =3D priv->job.phase; job->privateData =3D g_steal_pointer(&priv->job.privateData); job->apiFlags =3D priv->job.apiFlags; @@ -254,6 +255,7 @@ void qemuDomainObjRestoreAsyncJob(virDomainObj *vm, virDomainAsyncJob asyncJob, int phase, + unsigned long long started, virDomainJobOperation operation, qemuDomainJobStatsType statsType, virDomainJobStatus status, @@ -261,18 +263,15 @@ qemuDomainObjRestoreAsyncJob(virDomainObj *vm, { qemuDomainObjPrivate *priv =3D vm->privateData; qemuDomainJobObj *job =3D &priv->job; - unsigned long long now; =20 VIR_DEBUG("Restoring %s async job for domain %s", virDomainAsyncJobTypeToString(asyncJob), vm->def->name); =20 - ignore_value(virTimeMillisNow(&now)); - priv->job.jobsQueued++; job->asyncJob =3D asyncJob; job->phase =3D phase; job->asyncOwnerAPI =3D g_strdup(virThreadJobGet()); - job->asyncStarted =3D now; + job->asyncStarted =3D started; =20 qemuDomainObjSetAsyncJobMask(vm, allowedJobs); =20 @@ -280,7 +279,7 @@ qemuDomainObjRestoreAsyncJob(virDomainObj *vm, qemuDomainJobSetStatsType(priv->job.current, statsType); job->current->operation =3D operation; job->current->status =3D status; - job->current->started =3D now; + job->current->started =3D started; } =20 =20 @@ -1250,8 +1249,10 @@ qemuDomainObjPrivateXMLFormatJob(virBuffer *buf, priv->job.phase)= ); } =20 - if (priv->job.asyncJob !=3D VIR_ASYNC_JOB_NONE) + if (priv->job.asyncJob !=3D VIR_ASYNC_JOB_NONE) { virBufferAsprintf(&attrBuf, " flags=3D'0x%lx'", priv->job.apiFlags= ); + virBufferAsprintf(&attrBuf, " asyncStarted=3D'%llu'", priv->job.as= yncStarted); + } =20 if (priv->job.cb && priv->job.cb->formatJob(&childBuf, &priv->job, vm) < 0) @@ -1307,6 +1308,13 @@ qemuDomainObjPrivateXMLParseJob(virDomainObj *vm, } VIR_FREE(tmp); } + + if (virXPathULongLong("string(@asyncStarted)", ctxt, + &priv->job.asyncStarted) =3D=3D -2) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Invalid async job start")); + return -1; + } } =20 if (virXPathULongHex("string(@flags)", ctxt, &priv->job.apiFlags) =3D= =3D -2) { diff --git a/src/qemu/qemu_domainjob.h b/src/qemu/qemu_domainjob.h index 069bb9f8cb..707d4e91ed 100644 --- a/src/qemu/qemu_domainjob.h +++ b/src/qemu/qemu_domainjob.h @@ -164,6 +164,7 @@ void qemuDomainObjRestoreAsyncJob(virDomainObj *vm, virDomainAsyncJob asyncJob, int phase, + unsigned long long started, virDomainJobOperation operation, qemuDomainJobStatsType statsType, virDomainJobStatus status, diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 3d73c716f1..53221ea9ff 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3473,7 +3473,8 @@ qemuProcessRestoreMigrationJob(virDomainObj *vm, allowedJobs =3D VIR_JOB_DEFAULT_MASK | JOB_MASK(VIR_JOB_MIGRATION_= OP); } =20 - qemuDomainObjRestoreAsyncJob(vm, job->asyncJob, job->phase, op, + qemuDomainObjRestoreAsyncJob(vm, job->asyncJob, job->phase, + job->asyncStarted, op, QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION, VIR_DOMAIN_JOB_STATUS_PAUSED, allowedJobs); @@ -3746,6 +3747,7 @@ qemuProcessRecoverJob(virQEMUDriver *driver, case VIR_ASYNC_JOB_BACKUP: /* Restore the config of the async job which is not persisted */ qemuDomainObjRestoreAsyncJob(vm, VIR_ASYNC_JOB_BACKUP, 0, + job->asyncStarted, VIR_DOMAIN_JOB_OPERATION_BACKUP, QEMU_DOMAIN_JOB_STATS_TYPE_BACKUP, VIR_DOMAIN_JOB_STATUS_ACTIVE, diff --git a/tests/qemustatusxml2xmldata/migration-in-params-in.xml b/tests= /qemustatusxml2xmldata/migration-in-params-in.xml index f4bc5753c4..9e9c2deac6 100644 --- a/tests/qemustatusxml2xmldata/migration-in-params-in.xml +++ b/tests/qemustatusxml2xmldata/migration-in-params-in.xml @@ -238,7 +238,7 @@ - + diff --git a/tests/qemustatusxml2xmldata/migration-out-nbd-bitmaps-in.xml b= /tests/qemustatusxml2xmldata/migration-out-nbd-bitmaps-in.xml index c88996f923..1e14efe79a 100644 --- a/tests/qemustatusxml2xmldata/migration-out-nbd-bitmaps-in.xml +++ b/tests/qemustatusxml2xmldata/migration-out-nbd-bitmaps-in.xml @@ -262,7 +262,7 @@ - + diff --git a/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml b/tests/= qemustatusxml2xmldata/migration-out-nbd-out.xml index 039dcacc58..12abd0c81a 100644 --- a/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml +++ b/tests/qemustatusxml2xmldata/migration-out-nbd-out.xml @@ -231,7 +231,7 @@ - + diff --git a/tests/qemustatusxml2xmldata/migration-out-nbd-tls-out.xml b/te= sts/qemustatusxml2xmldata/migration-out-nbd-tls-out.xml index 3d1ddd5771..75c656d6c4 100644 --- a/tests/qemustatusxml2xmldata/migration-out-nbd-tls-out.xml +++ b/tests/qemustatusxml2xmldata/migration-out-nbd-tls-out.xml @@ -235,7 +235,7 @@ - + diff --git a/tests/qemustatusxml2xmldata/migration-out-params-in.xml b/test= s/qemustatusxml2xmldata/migration-out-params-in.xml index cd9dbccd3a..c23c3c3083 100644 --- a/tests/qemustatusxml2xmldata/migration-out-params-in.xml +++ b/tests/qemustatusxml2xmldata/migration-out-params-in.xml @@ -238,7 +238,7 @@ - + --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196363; cv=none; d=zohomail.com; s=zohoarc; b=LGMqHCKa21g3d5To3L4bgBudA6eT1wXmo0f58F+vqeaiwDDY2wfCNlC7HoBS+ywDovQFF5V78yF0jegcNt2yYUSygKhej4WhrndKmRdhUBiqNURN+XgS4xLeif/qppvO5VZGJuF70k/B42AmrcfPhmaMIlIYh2BpkWfnathlf3E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196363; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=sBYwoAix/+hQVc/Q10Wj8tx14yohmxfqJse/XJ+R0mQ=; b=UTagia/fqrS0iKANfR7yOOuxFQ2/GI7HRYLwd6i9hNvOzaXiJc6u+hTvvbxWFAdCHDnJLcmyvqPczuel2o8J8DR1PmD/yByWR2eMpeL0JkjWCmbtPAJFT4/qVw712GtLApwZwzXnmrffhV2X8HUo3yJtJgzqnFU3S36MFhOnp0M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196363719702.2666912975034; Tue, 10 May 2022 08:26:03 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-563-REVsr31GPKSXkf2m35KCQg-1; Tue, 10 May 2022 11:22:37 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 921381C0E345; Tue, 10 May 2022 15:21:52 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7D05140E7F12; Tue, 10 May 2022 15:21:52 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 6E10A1947B81; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 2CDE21947078 for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 1487914E09E7; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C986514E09E6 for ; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 894292445F7; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196362; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=sBYwoAix/+hQVc/Q10Wj8tx14yohmxfqJse/XJ+R0mQ=; b=Jc8WPB0nNUFD1L4+TbD3/MshcPRbb6Pn0NvKttLhV5ASomjQSTFClWhBz8d3sOdxWxk5Ol tKty55Lv8eXLUV8ilO2Q+ANRlwOFhCy5Nvxwilbtk5d4yxRHRWhgk2PB8MAAoe1bohyY8L c0cqfbHUaCQseZPhuhG/s2nF8WRrKOY= X-MC-Unique: REVsr31GPKSXkf2m35KCQg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 18/80] qemu: Drop forward declarations in migration code Date: Tue, 10 May 2022 17:20:39 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196364746100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 176 ++++++++++++++++---------------------- 1 file changed, 76 insertions(+), 100 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index e892a09885..63ebc15f65 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -81,35 +81,97 @@ VIR_ENUM_IMPL(qemuMigrationJobPhase, "finish3", ); =20 -static int + +static int ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) G_GNUC_WARN_UNUSED_RE= SULT qemuMigrationJobStart(virQEMUDriver *driver, virDomainObj *vm, virDomainAsyncJob job, unsigned long apiFlags) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) G_GNUC_WARN_UNUSED_RESULT; +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + virDomainJobOperation op; + unsigned long long mask; =20 -static void + if (job =3D=3D VIR_ASYNC_JOB_MIGRATION_IN) { + op =3D VIR_DOMAIN_JOB_OPERATION_MIGRATION_IN; + mask =3D VIR_JOB_NONE; + } else { + op =3D VIR_DOMAIN_JOB_OPERATION_MIGRATION_OUT; + mask =3D VIR_JOB_DEFAULT_MASK | + JOB_MASK(VIR_JOB_SUSPEND) | + JOB_MASK(VIR_JOB_MIGRATION_OP); + } + + if (qemuDomainObjBeginAsyncJob(driver, vm, job, op, apiFlags) < 0) + return -1; + + qemuDomainJobSetStatsType(priv->job.current, + QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION); + + qemuDomainObjSetAsyncJobMask(vm, mask); + return 0; +} + + +static void ATTRIBUTE_NONNULL(1) qemuMigrationJobSetPhase(virDomainObj *vm, qemuMigrationJobPhase phase) - ATTRIBUTE_NONNULL(1); +{ + qemuDomainObjPrivate *priv =3D vm->privateData; =20 -static void + if (phase < priv->job.phase) { + VIR_ERROR(_("migration protocol going backwards %s =3D> %s"), + qemuMigrationJobPhaseTypeToString(priv->job.phase), + qemuMigrationJobPhaseTypeToString(phase)); + return; + } + + qemuDomainObjSetJobPhase(vm, phase); +} + + +static void ATTRIBUTE_NONNULL(1) qemuMigrationJobStartPhase(virDomainObj *vm, qemuMigrationJobPhase phase) - ATTRIBUTE_NONNULL(1); +{ + qemuMigrationJobSetPhase(vm, phase); +} =20 -static void -qemuMigrationJobContinue(virDomainObj *obj) - ATTRIBUTE_NONNULL(1); =20 -static bool +static void ATTRIBUTE_NONNULL(1) +qemuMigrationJobContinue(virDomainObj *vm) +{ + qemuDomainObjReleaseAsyncJob(vm); +} + + +static bool ATTRIBUTE_NONNULL(1) qemuMigrationJobIsActive(virDomainObj *vm, virDomainAsyncJob job) - ATTRIBUTE_NONNULL(1); +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + + if (priv->job.asyncJob !=3D job) { + const char *msg; + + if (job =3D=3D VIR_ASYNC_JOB_MIGRATION_IN) + msg =3D _("domain '%s' is not processing incoming migration"); + else + msg =3D _("domain '%s' is not being migrated"); + + virReportError(VIR_ERR_OPERATION_INVALID, msg, vm->def->name); + return false; + } + return true; +} + + +static void ATTRIBUTE_NONNULL(1) +qemuMigrationJobFinish(virDomainObj *vm) +{ + qemuDomainObjEndAsyncJob(vm); +} =20 -static void -qemuMigrationJobFinish(virDomainObj *obj) - ATTRIBUTE_NONNULL(1); =20 static void qemuMigrationSrcStoreDomainState(virDomainObj *vm) @@ -6180,92 +6242,6 @@ qemuMigrationSrcCancel(virQEMUDriver *driver, } =20 =20 -static int -qemuMigrationJobStart(virQEMUDriver *driver, - virDomainObj *vm, - virDomainAsyncJob job, - unsigned long apiFlags) -{ - qemuDomainObjPrivate *priv =3D vm->privateData; - virDomainJobOperation op; - unsigned long long mask; - - if (job =3D=3D VIR_ASYNC_JOB_MIGRATION_IN) { - op =3D VIR_DOMAIN_JOB_OPERATION_MIGRATION_IN; - mask =3D VIR_JOB_NONE; - } else { - op =3D VIR_DOMAIN_JOB_OPERATION_MIGRATION_OUT; - mask =3D VIR_JOB_DEFAULT_MASK | - JOB_MASK(VIR_JOB_SUSPEND) | - JOB_MASK(VIR_JOB_MIGRATION_OP); - } - - if (qemuDomainObjBeginAsyncJob(driver, vm, job, op, apiFlags) < 0) - return -1; - - qemuDomainJobSetStatsType(priv->job.current, - QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION); - - qemuDomainObjSetAsyncJobMask(vm, mask); - return 0; -} - -static void -qemuMigrationJobSetPhase(virDomainObj *vm, - qemuMigrationJobPhase phase) -{ - qemuDomainObjPrivate *priv =3D vm->privateData; - - if (phase < priv->job.phase) { - VIR_ERROR(_("migration protocol going backwards %s =3D> %s"), - qemuMigrationJobPhaseTypeToString(priv->job.phase), - qemuMigrationJobPhaseTypeToString(phase)); - return; - } - - qemuDomainObjSetJobPhase(vm, phase); -} - -static void -qemuMigrationJobStartPhase(virDomainObj *vm, - qemuMigrationJobPhase phase) -{ - qemuMigrationJobSetPhase(vm, phase); -} - -static void -qemuMigrationJobContinue(virDomainObj *vm) -{ - qemuDomainObjReleaseAsyncJob(vm); -} - -static bool -qemuMigrationJobIsActive(virDomainObj *vm, - virDomainAsyncJob job) -{ - qemuDomainObjPrivate *priv =3D vm->privateData; - - if (priv->job.asyncJob !=3D job) { - const char *msg; - - if (job =3D=3D VIR_ASYNC_JOB_MIGRATION_IN) - msg =3D _("domain '%s' is not processing incoming migration"); - else - msg =3D _("domain '%s' is not being migrated"); - - virReportError(VIR_ERR_OPERATION_INVALID, msg, vm->def->name); - return false; - } - return true; -} - -static void -qemuMigrationJobFinish(virDomainObj *vm) -{ - qemuDomainObjEndAsyncJob(vm); -} - - static void qemuMigrationDstErrorFree(void *data) { --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196260; cv=none; d=zohomail.com; s=zohoarc; b=cxeQ1z3ahKTeY9figMPYdphBMEhRWgUySVGU/ZIMu2/CDoRtaKelWGxdeQRDrnA/8KMu4kl0TrevKwem6Srpwv8taLseKdP2GpANsXwDMY/5sKQO+CBhzFvuIv+9cMKGQdrXFEMIwr0KsgQIe/WV+MA0I5JSzNdbSsJbUFWYQDI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196260; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=iL6+YBxVQzUqYhDI2S5sF2DvLTjp6Ih/Cmwx8iZRVOE=; b=JYwjZc8Y8QLi+77CoE07Tr2qdMoaVfqAnHqgz8UNoDnC8DtNZDWe6+1WnsmPfSkLkZl2MHyCFRqhtZv5HEpJvej+FF1g+HrTUPJJesZdJ+zUjmzkWfP6WB1p32Nl6B6s3oAPCw0lWqi4fiu+tu0Z0QaroZQ4ItsYF9y/GiMpPGc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196260462352.5479303456607; Tue, 10 May 2022 08:24:20 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-607-FKzvqQfwMb6CHEP18T0P8w-1; Tue, 10 May 2022 11:23:29 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 841601802D01; Tue, 10 May 2022 15:22:11 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7028D15088B4; Tue, 10 May 2022 15:22:11 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4E1A0194F4BE; Tue, 10 May 2022 15:22:01 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 41CC8194706D for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 12EB8463EDD; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E73F6475072 for ; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 8A7A12445F8; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196259; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=iL6+YBxVQzUqYhDI2S5sF2DvLTjp6Ih/Cmwx8iZRVOE=; b=iDNxLkCUCFsFAh5jdqK6kn+sO2c6Pf/KHH8aEM40/qt7Lva+7pfnrtmp1WnDxvX7IBmxl9 oJ8RyDClZw5TPEo8QTFtoXhWz7JvC9Edm9MdK0MIHfc3Puj2C77UZ1Tt0XIOhtdGC4uxnB K5QRQz/pJvf0gvwuJnNcm5ltXLROFBM= X-MC-Unique: FKzvqQfwMb6CHEP18T0P8w-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 19/80] qemu: Don't wait for migration job when migration is running Date: Tue, 10 May 2022 17:20:40 +0200 Message-Id: <402aa355cee9e2e109763c3f4bd50a6229cd3c91.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196261118100001 Content-Type: text/plain; charset="utf-8" Migration is a job which takes some time and if it succeeds, there's nothing to call another migration on. If a migration fails, it might make sense to rerun it with different arguments, but this would only be done once the first migration fails rather than while it is still running. If this was not enough, the migration job now stays active even if post-copy migration fails and anyone possibly retrying the migration would be waiting for the job timeout just to get a suboptimal error message. So let's special case getting a migration job when another one is already active. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 63ebc15f65..72a2846d1f 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -82,6 +82,23 @@ VIR_ENUM_IMPL(qemuMigrationJobPhase, ); =20 =20 +static bool ATTRIBUTE_NONNULL(1) +qemuMigrationJobIsAllowed(virDomainObj *vm) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + + if (priv->job.asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_IN || + priv->job.asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("another migration job is already running for dom= ain '%s'"), + vm->def->name); + return false; + } + + return true; +} + + static int ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) G_GNUC_WARN_UNUSED_RE= SULT qemuMigrationJobStart(virQEMUDriver *driver, virDomainObj *vm, @@ -92,6 +109,9 @@ qemuMigrationJobStart(virQEMUDriver *driver, virDomainJobOperation op; unsigned long long mask; =20 + if (!qemuMigrationJobIsAllowed(vm)) + return -1; + if (job =3D=3D VIR_ASYNC_JOB_MIGRATION_IN) { op =3D VIR_DOMAIN_JOB_OPERATION_MIGRATION_IN; mask =3D VIR_JOB_NONE; @@ -2629,6 +2649,9 @@ qemuMigrationSrcBegin(virConnectPtr conn, goto cleanup; asyncJob =3D VIR_ASYNC_JOB_MIGRATION_OUT; } else { + if (!qemuMigrationJobIsAllowed(vm)) + goto cleanup; + if (qemuDomainObjBeginJob(driver, vm, VIR_JOB_MODIFY) < 0) goto cleanup; asyncJob =3D VIR_ASYNC_JOB_NONE; --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196178; cv=none; d=zohomail.com; s=zohoarc; b=afA5YtG/nzDuRxsW88zF54b+ERLWwj7fJas0dqtVVrrqDcmXXvHnJI2TRC0hkSa7V2xzK+2TAya4fzQ7NiqiULqjQCar+Ao2jhHf29Fz6puedZr91YRD8VwGTzvTbgsNAYRj2JVkgJde9/9lCs0Sg6Ta/cWoVJwF08sCFgQublg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196178; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=DqOjSn8LXwdQuxM12DwX83WcIgthKUP+pLpFjn16MKQ=; b=S8jqJQeITYZOa6On9tVozrX/wcrr59SsR3raqaR/nQgsbjEUnDcs5ghdeVNLiRIHMIFQG9jPYl7uZKU7e5WVfidPMVTFjCxDl7XK3DT7AhuHibcVijz/Odbo/gvEyB0zcyAt3fD2ElNyzGmWp0YJwvlg2tDTwF9vVoiv1h6XVz8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 165219617871489.21490642672268; Tue, 10 May 2022 08:22:58 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-522-AJoc7BMfMr2XdtaP1kBc6A-1; Tue, 10 May 2022 11:22:35 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A848B1C0F6AB; Tue, 10 May 2022 15:21:53 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9039740D2825; Tue, 10 May 2022 15:21:53 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 014D91947078; Tue, 10 May 2022 15:21:52 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 2D51A1947079 for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 1ADF340CF8E7; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EF61040CFD29 for ; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 8BBEF2445F9; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196177; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=DqOjSn8LXwdQuxM12DwX83WcIgthKUP+pLpFjn16MKQ=; b=YmgvRCbJu9pUHVLbkEhF4CHiwZlfzmZYX9zHmdpzPP9IZGAktT8ZNCiuMlu/2SZ+HZJET5 xGabFjI1Ey6Z6yAmWLlBD3moWCquvM6v4o4DmBBcp9fiVCC6X/gHkX0VrG9Hdm6y0gCi55 THtPp8LsIoYlLTZQbGxbA++l8h0VD1w= X-MC-Unique: AJoc7BMfMr2XdtaP1kBc6A-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 20/80] qemu: Use switch in qemuDomainGetJobInfoMigrationStats Date: Tue, 10 May 2022 17:20:41 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196180702100001 Content-Type: text/plain; charset="utf-8" To make sure all job states are properly handled. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_driver.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index e3582f62a7..85ccc446d7 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -12508,10 +12508,11 @@ qemuDomainGetJobInfoMigrationStats(virQEMUDriver = *driver, =20 bool events =3D virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_EVE= NT); =20 - if (jobData->status =3D=3D VIR_DOMAIN_JOB_STATUS_ACTIVE || - jobData->status =3D=3D VIR_DOMAIN_JOB_STATUS_MIGRATING || - jobData->status =3D=3D VIR_DOMAIN_JOB_STATUS_HYPERVISOR_COMPLETED = || - jobData->status =3D=3D VIR_DOMAIN_JOB_STATUS_POSTCOPY) { + switch (jobData->status) { + case VIR_DOMAIN_JOB_STATUS_ACTIVE: + case VIR_DOMAIN_JOB_STATUS_MIGRATING: + case VIR_DOMAIN_JOB_STATUS_HYPERVISOR_COMPLETED: + case VIR_DOMAIN_JOB_STATUS_POSTCOPY: if (events && jobData->status !=3D VIR_DOMAIN_JOB_STATUS_ACTIVE && qemuMigrationAnyFetchStats(driver, vm, VIR_ASYNC_JOB_NONE, @@ -12526,6 +12527,17 @@ qemuDomainGetJobInfoMigrationStats(virQEMUDriver *= driver, =20 if (qemuDomainJobDataUpdateTime(jobData) < 0) return -1; + + break; + + case VIR_DOMAIN_JOB_STATUS_NONE: + case VIR_DOMAIN_JOB_STATUS_PAUSED: + case VIR_DOMAIN_JOB_STATUS_COMPLETED: + case VIR_DOMAIN_JOB_STATUS_FAILED: + case VIR_DOMAIN_JOB_STATUS_CANCELED: + default: + /* No migration stats to be fetched in these states. */ + break; } =20 return 0; --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196432; cv=none; d=zohomail.com; s=zohoarc; b=kShBn/wIeEnTmewG68VuRmZSLWjNHnmMrVKGz4hhKSaUOXL/mVRUPli/i/e9SUOrzys/FY4+WhDhg/5RwcapZjZOikCi49mJKbuvrROw71ia7LxjgUO5hbbqeiwU+NqljghxkGZWZDdvhn/tJvbZQDXTfMLtKIA1WhfNZFsIfJc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196432; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7ApoXfP77PKbdJIXfszTp8KvHic0Mn3+LvwsdPL+WRU=; b=mXFevhBZa6qRwGcsMINIG6cDBu8H1op0CBpunhO29/k5k24bquozV5hewPjkOAsAVYI2AV42j5L0/N7jCh1MEkQBxWCZilPEWA/FwG7RITbj8KvuWJItTdTwiiLi5UcIGOMZXxq2zW1AY2kvR73DmsYWJnPW40OWvuHKQHwLx68= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196431966720.980234341691; Tue, 10 May 2022 08:27:11 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-558-7kThK6chNt6rS-SKJGDSSQ-1; Tue, 10 May 2022 11:22:28 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 16D4F80CDA5; Tue, 10 May 2022 15:21:52 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id DC1B4416371; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 1DA441947072; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 32E8D194707F for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 0F6C2463ECC; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E4743463E1C for ; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 8CF5E2445FA; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196431; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=7ApoXfP77PKbdJIXfszTp8KvHic0Mn3+LvwsdPL+WRU=; b=QY7ZFl+T+G+vC20x96kdDMhlCTctrzrS/OfhSzWVsT7fcLijCMjCMbP+Ie4wxXGqeYz3d4 8QgMtq73KniwbFflxbTKeIx2Owqv0RIBvRJoHIRPlGhkNC6XO/RC3SeUiRHp7sjhwW8gYG hmn8tvw0V2rGm1M8oRRRYo3qXtqILW4= X-MC-Unique: 7kThK6chNt6rS-SKJGDSSQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 21/80] qemu: Fetch paused migration stats Date: Tue, 10 May 2022 17:20:42 +0200 Message-Id: <4a639c4dd7e6f1109499fe9d868aff0ed8f54cad.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196433363100004 Content-Type: text/plain; charset="utf-8" Even though a migration is paused, we still want to see the amount of data transferred so far and that the migration is indeed not progressing any further. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 85ccc446d7..9e6cf26001 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -12513,6 +12513,7 @@ qemuDomainGetJobInfoMigrationStats(virQEMUDriver *d= river, case VIR_DOMAIN_JOB_STATUS_MIGRATING: case VIR_DOMAIN_JOB_STATUS_HYPERVISOR_COMPLETED: case VIR_DOMAIN_JOB_STATUS_POSTCOPY: + case VIR_DOMAIN_JOB_STATUS_PAUSED: if (events && jobData->status !=3D VIR_DOMAIN_JOB_STATUS_ACTIVE && qemuMigrationAnyFetchStats(driver, vm, VIR_ASYNC_JOB_NONE, @@ -12531,7 +12532,6 @@ qemuDomainGetJobInfoMigrationStats(virQEMUDriver *d= river, break; =20 case VIR_DOMAIN_JOB_STATUS_NONE: - case VIR_DOMAIN_JOB_STATUS_PAUSED: case VIR_DOMAIN_JOB_STATUS_COMPLETED: case VIR_DOMAIN_JOB_STATUS_FAILED: case VIR_DOMAIN_JOB_STATUS_CANCELED: --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196156; cv=none; d=zohomail.com; s=zohoarc; b=gqoY2v2i6OltcuaKKdjxZYs/PFdEFHfaivTtoQp8Lbvjh68B55eJLPp2w+twqdk5unhplhuXY6tVgVg6b2MrMLV8qP4l5uapJ394FsvybWBTOdJ72lRbnoYvb/4+XCpfpifUq42UcvWhG4hg+JcFc1rLj9wIsJR1ozCCgchL6bU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196156; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=nmGFGTACx4vtEik1GcDsA3baum5Ci4BeC2+1hrxq/sM=; b=eNFGLA+Tvm5JqhMB10OwjqrfIQ3PVm7EG+MrJBwKe6oLBxtD21tCeYPb7E/Bqm7PFOTSbHA+0gWVQWyTUU/mrTOLPO+hvzxFJKM9nhna6cigwSTtnm/Qs6MJUPkqf7paV9XQ6na/MZfg9XZ/OqHz8mjJn6AnvlFXRyPm/6/dIMc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 165219615619359.062348214261306; Tue, 10 May 2022 08:22:36 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-627-aFwsFURBNh6VD-ytFgs0Xg-1; Tue, 10 May 2022 11:22:26 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 8A6C8A18F01; Tue, 10 May 2022 15:21:54 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 77DCB401E77; Tue, 10 May 2022 15:21:54 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 75E7F1947BAC; Tue, 10 May 2022 15:21:52 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 3E5541947073 for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 2BDAA54B076; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E36F854B085 for ; Tue, 10 May 2022 15:21:46 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 8E46E2445FB; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196154; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=nmGFGTACx4vtEik1GcDsA3baum5Ci4BeC2+1hrxq/sM=; b=h7bSgiryaTPntRvbvGBwcVW/EZkg+qNJAu6LN3LjbvdzGM0RjOSeXKfa0Iza7+IgZAhmhy LD6QRaXBm2YHL3KxPNg9j089H/uz22AzhfRAxYKA8wbTs2EilAz6Ict/qIDH7NErhuKRtH nW5S33JGffqDWtjG32nSZj5o58Hxcl0= X-MC-Unique: aFwsFURBNh6VD-ytFgs0Xg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 22/80] qemu: Handle 'postcopy-paused' migration state Date: Tue, 10 May 2022 17:20:43 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196156632100001 Content-Type: text/plain; charset="utf-8" When connection breaks during post-copy migration, QEMU enters 'postcopy-paused' state. We need to handle this state and make the situation visible to upper layers. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/hypervisor/domain_job.c | 1 + src/hypervisor/domain_job.h | 1 + src/qemu/qemu_driver.c | 1 + src/qemu/qemu_migration.c | 11 +++++++++++ src/qemu/qemu_monitor.c | 1 + src/qemu/qemu_monitor.h | 1 + src/qemu/qemu_monitor_json.c | 1 + src/qemu/qemu_process.c | 33 ++++++++++++++++++++------------- 8 files changed, 37 insertions(+), 13 deletions(-) diff --git a/src/hypervisor/domain_job.c b/src/hypervisor/domain_job.c index ff4e008cb5..49867c3982 100644 --- a/src/hypervisor/domain_job.c +++ b/src/hypervisor/domain_job.c @@ -93,6 +93,7 @@ virDomainJobStatusToType(virDomainJobStatus status) case VIR_DOMAIN_JOB_STATUS_MIGRATING: case VIR_DOMAIN_JOB_STATUS_HYPERVISOR_COMPLETED: case VIR_DOMAIN_JOB_STATUS_POSTCOPY: + case VIR_DOMAIN_JOB_STATUS_POSTCOPY_PAUSED: case VIR_DOMAIN_JOB_STATUS_PAUSED: return VIR_DOMAIN_JOB_UNBOUNDED; =20 diff --git a/src/hypervisor/domain_job.h b/src/hypervisor/domain_job.h index db8b8b1390..fce35ffbf5 100644 --- a/src/hypervisor/domain_job.h +++ b/src/hypervisor/domain_job.h @@ -78,6 +78,7 @@ typedef enum { VIR_DOMAIN_JOB_STATUS_HYPERVISOR_COMPLETED, VIR_DOMAIN_JOB_STATUS_PAUSED, VIR_DOMAIN_JOB_STATUS_POSTCOPY, + VIR_DOMAIN_JOB_STATUS_POSTCOPY_PAUSED, VIR_DOMAIN_JOB_STATUS_COMPLETED, VIR_DOMAIN_JOB_STATUS_FAILED, VIR_DOMAIN_JOB_STATUS_CANCELED, diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 9e6cf26001..d19115473a 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -12514,6 +12514,7 @@ qemuDomainGetJobInfoMigrationStats(virQEMUDriver *d= river, case VIR_DOMAIN_JOB_STATUS_HYPERVISOR_COMPLETED: case VIR_DOMAIN_JOB_STATUS_POSTCOPY: case VIR_DOMAIN_JOB_STATUS_PAUSED: + case VIR_DOMAIN_JOB_STATUS_POSTCOPY_PAUSED: if (events && jobData->status !=3D VIR_DOMAIN_JOB_STATUS_ACTIVE && qemuMigrationAnyFetchStats(driver, vm, VIR_ASYNC_JOB_NONE, diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 72a2846d1f..e5e33556e3 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -1757,6 +1757,10 @@ qemuMigrationUpdateJobType(virDomainJobData *jobData) jobData->status =3D VIR_DOMAIN_JOB_STATUS_POSTCOPY; break; =20 + case QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY_PAUSED: + jobData->status =3D VIR_DOMAIN_JOB_STATUS_POSTCOPY_PAUSED; + break; + case QEMU_MONITOR_MIGRATION_STATUS_COMPLETED: jobData->status =3D VIR_DOMAIN_JOB_STATUS_HYPERVISOR_COMPLETED; break; @@ -1883,6 +1887,12 @@ qemuMigrationJobCheckStatus(virQEMUDriver *driver, qemuMigrationJobName(vm), _("canceled by client")); return -1; =20 + case VIR_DOMAIN_JOB_STATUS_POSTCOPY_PAUSED: + virReportError(VIR_ERR_OPERATION_FAILED, _("%s: %s"), + qemuMigrationJobName(vm), + _("post-copy phase failed")); + return -1; + case VIR_DOMAIN_JOB_STATUS_COMPLETED: case VIR_DOMAIN_JOB_STATUS_ACTIVE: case VIR_DOMAIN_JOB_STATUS_MIGRATING: @@ -1985,6 +1995,7 @@ qemuMigrationAnyCompleted(virQEMUDriver *driver, =20 case VIR_DOMAIN_JOB_STATUS_FAILED: case VIR_DOMAIN_JOB_STATUS_CANCELED: + case VIR_DOMAIN_JOB_STATUS_POSTCOPY_PAUSED: /* QEMU aborted the migration. */ return -1; =20 diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 98cf1c949e..36cf4e57b5 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -149,6 +149,7 @@ VIR_ENUM_IMPL(qemuMonitorMigrationStatus, "inactive", "setup", "active", "pre-switchover", "device", "postcopy-active", + "postcopy-paused", "completed", "failed", "cancelling", "cancelled", "wait-unplug", diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index abc29eaf4c..46cdc04925 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -831,6 +831,7 @@ typedef enum { QEMU_MONITOR_MIGRATION_STATUS_PRE_SWITCHOVER, QEMU_MONITOR_MIGRATION_STATUS_DEVICE, QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY, + QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY_PAUSED, QEMU_MONITOR_MIGRATION_STATUS_COMPLETED, QEMU_MONITOR_MIGRATION_STATUS_ERROR, QEMU_MONITOR_MIGRATION_STATUS_CANCELLING, diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 532aad348e..ac3ec42fdd 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -3242,6 +3242,7 @@ qemuMonitorJSONGetMigrationStatsReply(virJSONValue *r= eply, =20 case QEMU_MONITOR_MIGRATION_STATUS_ACTIVE: case QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY: + case QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY_PAUSED: case QEMU_MONITOR_MIGRATION_STATUS_COMPLETED: case QEMU_MONITOR_MIGRATION_STATUS_CANCELLING: case QEMU_MONITOR_MIGRATION_STATUS_PRE_SWITCHOVER: diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 53221ea9ff..fc61aa71a0 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -1568,19 +1568,26 @@ qemuProcessHandleMigrationStatus(qemuMonitor *mon G= _GNUC_UNUSED, privJob->stats.mig.status =3D status; virDomainObjBroadcast(vm); =20 - if (status =3D=3D QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY && - priv->job.asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT && - virDomainObjGetState(vm, &reason) =3D=3D VIR_DOMAIN_PAUSED && - reason =3D=3D VIR_DOMAIN_PAUSED_MIGRATION) { - VIR_DEBUG("Correcting paused state reason for domain %s to %s", - vm->def->name, - virDomainPausedReasonTypeToString(VIR_DOMAIN_PAUSED_POST= COPY)); - - virDomainObjSetState(vm, VIR_DOMAIN_PAUSED, VIR_DOMAIN_PAUSED_POST= COPY); - event =3D virDomainEventLifecycleNewFromObj(vm, - VIR_DOMAIN_EVENT_SUSPEND= ED, - VIR_DOMAIN_EVENT_SUSPEND= ED_POSTCOPY); - qemuDomainSaveStatus(vm); + if (priv->job.asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT && + virDomainObjGetState(vm, &reason) =3D=3D VIR_DOMAIN_PAUSED) { + if (status =3D=3D QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY_PAUSED) { + /* At this point no thread is watching the migration progress = on + * the source as it is just waiting for the Finish phase to en= d. + * Thus we need to handle the event here. */ + qemuMigrationSrcPostcopyFailed(vm); + qemuDomainSaveStatus(vm); + } else if (status =3D=3D QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY && + reason =3D=3D VIR_DOMAIN_PAUSED_MIGRATION) { + VIR_DEBUG("Correcting paused state reason for domain %s to %s", + vm->def->name, + virDomainPausedReasonTypeToString(VIR_DOMAIN_PAUSED_= POSTCOPY)); + + virDomainObjSetState(vm, VIR_DOMAIN_PAUSED, VIR_DOMAIN_PAUSED_= POSTCOPY); + event =3D virDomainEventLifecycleNewFromObj(vm, + VIR_DOMAIN_EVENT_SUS= PENDED, + VIR_DOMAIN_EVENT_SUS= PENDED_POSTCOPY); + qemuDomainSaveStatus(vm); + } } =20 cleanup: --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196256; cv=none; d=zohomail.com; s=zohoarc; b=ahdccMq/zyt7YiFCUy/Tp432gHG6iCXEjsQa9UzXtRxx3Lttil38crBDorDj4sMM1gdStdtiML29qHIlUJy2WtqSR2XfQ5CPFepDTHrcYamdsWPAOGC3rRDr9GbbH4eX0vKL+eW5dBlpXK0kEsM5xRhw/ITWMLsUvemX4orPzS4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196256; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VB2dwf3zszPMxhTWy2FDGMlPqeuTzVi4UoYDFCig+VM=; b=EyUbaydUpp0nYJ7c4J22g36q00OBFc/X9Z7h7K6vEmU/mQVxelYCsRWMFtBTUAIOSZYTLlxC3OjvpjdZDzfoUe/cQaqCs85jaF2z+RiryWVK2mOJ0Nse3VoJFxKvaW5p9a68iVgKSdn1KM8Kms9dQXG/2M0vxj9t9Ldpj8Y86s0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196256007512.806814828819; Tue, 10 May 2022 08:24:16 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-304-jzv5oFVbPpetc_m3c3Xj0A-1; Tue, 10 May 2022 11:23:33 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E6B6680B717; Tue, 10 May 2022 15:22:21 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id CF8B64010E46; Tue, 10 May 2022 15:22:21 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 29FC91947B91; Tue, 10 May 2022 15:22:12 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D6B731947B89 for ; Tue, 10 May 2022 15:22:10 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id B62CE2024CC8; Tue, 10 May 2022 15:22:10 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 79F992024CBD for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 8F8832445FD; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196254; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=VB2dwf3zszPMxhTWy2FDGMlPqeuTzVi4UoYDFCig+VM=; b=I6htlSoMl/peTbt5l0/la+72Q03iJqQX06iwP1M/aAEbNO6sU3YaITvT8EIn7yh9PEdn3n QeDiPHG1G9H9LPJLbIZh3GFc+BjyT2eG69sipl5Am3GdvxTJ0rYeeDnOIWnQNasP09YRPs gLQW2yWfhD5Mxa1Fdv1APOni49wtH3Y= X-MC-Unique: jzv5oFVbPpetc_m3c3Xj0A-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 23/80] qemu: Add support for postcopy-recover QEMU migration state Date: Tue, 10 May 2022 17:20:44 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196257118100007 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 1 + src/qemu/qemu_monitor.c | 2 +- src/qemu/qemu_monitor.h | 1 + src/qemu/qemu_monitor_json.c | 1 + src/qemu/qemu_process.c | 31 ++++++++++++++++++++++++++++++- 5 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index e5e33556e3..5fbc930e7c 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -1754,6 +1754,7 @@ qemuMigrationUpdateJobType(virDomainJobData *jobData) =20 switch ((qemuMonitorMigrationStatus) priv->stats.mig.status) { case QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY: + case QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY_RECOVER: jobData->status =3D VIR_DOMAIN_JOB_STATUS_POSTCOPY; break; =20 diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 36cf4e57b5..589fef4385 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -149,7 +149,7 @@ VIR_ENUM_IMPL(qemuMonitorMigrationStatus, "inactive", "setup", "active", "pre-switchover", "device", "postcopy-active", - "postcopy-paused", + "postcopy-paused", "postcopy-recover", "completed", "failed", "cancelling", "cancelled", "wait-unplug", diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 46cdc04925..5949e21a39 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -832,6 +832,7 @@ typedef enum { QEMU_MONITOR_MIGRATION_STATUS_DEVICE, QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY, QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY_PAUSED, + QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY_RECOVER, QEMU_MONITOR_MIGRATION_STATUS_COMPLETED, QEMU_MONITOR_MIGRATION_STATUS_ERROR, QEMU_MONITOR_MIGRATION_STATUS_CANCELLING, diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index ac3ec42fdd..3a497dceae 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -3243,6 +3243,7 @@ qemuMonitorJSONGetMigrationStatsReply(virJSONValue *r= eply, case QEMU_MONITOR_MIGRATION_STATUS_ACTIVE: case QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY: case QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY_PAUSED: + case QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY_RECOVER: case QEMU_MONITOR_MIGRATION_STATUS_COMPLETED: case QEMU_MONITOR_MIGRATION_STATUS_CANCELLING: case QEMU_MONITOR_MIGRATION_STATUS_PRE_SWITCHOVER: diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index fc61aa71a0..c3a966983f 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -1549,6 +1549,7 @@ qemuProcessHandleMigrationStatus(qemuMonitor *mon G_G= NUC_UNUSED, qemuDomainJobDataPrivate *privJob =3D NULL; virQEMUDriver *driver =3D opaque; virObjectEvent *event =3D NULL; + virDomainState state; int reason; =20 virObjectLock(vm); @@ -1568,8 +1569,10 @@ qemuProcessHandleMigrationStatus(qemuMonitor *mon G_= GNUC_UNUSED, privJob->stats.mig.status =3D status; virDomainObjBroadcast(vm); =20 + state =3D virDomainObjGetState(vm, &reason); + if (priv->job.asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT && - virDomainObjGetState(vm, &reason) =3D=3D VIR_DOMAIN_PAUSED) { + state =3D=3D VIR_DOMAIN_PAUSED) { if (status =3D=3D QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY_PAUSED) { /* At this point no thread is watching the migration progress = on * the source as it is just waiting for the Finish phase to en= d. @@ -1590,6 +1593,32 @@ qemuProcessHandleMigrationStatus(qemuMonitor *mon G_= GNUC_UNUSED, } } =20 + if ((status =3D=3D QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY || + status =3D=3D QEMU_MONITOR_MIGRATION_STATUS_POSTCOPY_RECOVER) && + virDomainObjIsFailedPostcopy(vm)) { + int eventType =3D -1; + int eventDetail =3D -1; + + if (state =3D=3D VIR_DOMAIN_PAUSED) { + reason =3D VIR_DOMAIN_PAUSED_POSTCOPY; + eventType =3D VIR_DOMAIN_EVENT_SUSPENDED; + eventDetail =3D qemuDomainPausedReasonToSuspendedEvent(reason); + } else { + reason =3D VIR_DOMAIN_RUNNING_POSTCOPY; + eventType =3D VIR_DOMAIN_EVENT_RESUMED; + eventDetail =3D qemuDomainRunningReasonToResumeEvent(reason); + } + + VIR_DEBUG("Post-copy migration recovered; correcting state for dom= ain " + "%s to %s/%s", + vm->def->name, + virDomainStateTypeToString(state), + NULLSTR(virDomainStateReasonToString(state, reason))); + virDomainObjSetState(vm, state, reason); + event =3D virDomainEventLifecycleNewFromObj(vm, eventType, eventDe= tail); + qemuDomainSaveStatus(vm); + } + cleanup: virObjectUnlock(vm); virObjectEventStateQueue(driver->domainEventState, event); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196168; cv=none; d=zohomail.com; s=zohoarc; b=C8c3TGHnlU6SYbWVSMV59Z5Vx4AAVZigaPy7sPkUiK1kWM/tbbVlEteEouLGeQHQ2SikHmmrJ5aeopQ45K0S7rC8nZ9IvFISOoh/kHFEb/HK48hcXQS1AUCG110hcAZqSJ+bTjA7JLa9B87wpW1XJiM8nLfTAoJjMr/g3F6411w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196168; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=r/ZZazLQxeDta9jMuzEiJ9eba3yixfi97IOqcbl6V2E=; b=QleygBS2IyFxF1T/TqCwn387Bt8Vg9D4mb+bjfJmSo4oVnPqQ44Gttz/Ml+JjGoJN7VWkwWS4pSPJzdo3UDAK84ABfXm/VVd62Z6Irq2FLzUia0oBINo6+Tpm8XYHGqM+MWv1Iq0wlUqE53ZeohUsz2vHDPNTZWDyXgKyNpqXEI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196168133251.70298045911727; Tue, 10 May 2022 08:22:48 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-245-Yec3zAK2OK-NlrRQVk1osw-1; Tue, 10 May 2022 11:22:32 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3DD423C0D181; Tue, 10 May 2022 15:21:57 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 294D014E1D90; Tue, 10 May 2022 15:21:57 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id AC42D1947B9A; Tue, 10 May 2022 15:21:53 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 282D9194706E for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 176FB4010E46; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EB022403D162 for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 90BB42445FE; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196167; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=r/ZZazLQxeDta9jMuzEiJ9eba3yixfi97IOqcbl6V2E=; b=FahyotS/hnbpcfAh3RPDLI8Dcfc7z/SaAg3anwD9zlLDwt4G90dWifXdRpW27uaeYlhVBl FIm5OBZVbG3mDZF9MkFoxnHoS8+4OCIJO7CImSpnpCDzmcC3Q/f7LaLBGmsW5mr4/mr8Fn fpUhf4SUVSCFDZ6D8AAx3GKB0T4EwVY= X-MC-Unique: Yec3zAK2OK-NlrRQVk1osw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 24/80] qemu: Create domain object at the end of qemuMigrationDstFinish Date: Tue, 10 May 2022 17:20:45 +0200 Message-Id: <14b4483807e68c0db2ab51d7314989be8af30390.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196168673100005 Content-Type: text/plain; charset="utf-8" We don't need the object until we get to the "endjob" label. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 5fbc930e7c..1f6f008ad9 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5980,11 +5980,7 @@ qemuMigrationDstFinish(virQEMUDriver *driver, VIR_DOMAIN_RUNNING, VIR_DOMAIN_RUNNING_MIGRATED); } - } - - dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, vm->def->id); =20 - if (inPostCopy) { /* The only RESUME event during post-copy migration is triggered by * QEMU when the running domain moves from the source to the * destination host, but then the migration keeps running until all @@ -6012,6 +6008,8 @@ qemuMigrationDstFinish(virQEMUDriver *driver, /* Guest is successfully running, so cancel previous auto destroy */ qemuProcessAutoDestroyRemove(driver, vm); =20 + dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, vm->def->id); + endjob: if (!dom && !(flags & VIR_MIGRATE_OFFLINE) && --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196162; cv=none; d=zohomail.com; s=zohoarc; b=PQHC42g9Yc7wRuwa/Ke9aEDq+ioui/BJwbgmCX9pZCP2xly0IPH154G3ZApFN0XUe5B+yTlUteRi6TiRE+6mjZPuwXvyQ0ufP9rigdBlBE3ns+HNg5JPv+Mes84wAXnQLhRtMdsrf4K0+TyxoSBNj1SS2vUJi9GxLdR3ti/9agk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196162; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0wfTGtwS9tBbfYm+7gFC8u2zWrUm5UoKyLnxbklJPa8=; b=fuiYl1lfi0JRGU38IZVnG3u8z7mzAvauZ5iy1//fcr56+jOAEG2t7HF0EMdGab5sJrlR7ZgefXz4cb2DE/o+NbsYdr0bE5cBG/dwQ7EZnHF7ShKeVlPprnnrw1XRblpkRHNgjrYcRp3o1gBgMc1Qv4CW0KeAi6cxP5KK9P81fac= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196162531193.22373918906078; Tue, 10 May 2022 08:22:42 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-447-FA3gta3cOqWO9KjR84O-cw-1; Tue, 10 May 2022 11:22:26 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 92088293248C; Tue, 10 May 2022 15:21:59 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 79E4CC28102; Tue, 10 May 2022 15:21:59 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 9F9781947B81; Tue, 10 May 2022 15:21:54 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 3F1171947078 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 160CCC28111; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E9F60C27EB8 for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 920472445FF; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196161; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=0wfTGtwS9tBbfYm+7gFC8u2zWrUm5UoKyLnxbklJPa8=; b=gi1viBA7gika+H+YvBgurvf/5Bnd9DfPgBF60Q9ip9lonPuK3VttiHUeBD++evXBxE6y+U y9nDc8qCuwu/WcmZGF0uVVVJ1r2xH8KePHkXdJGwkPGVEw23ShUexuVvGOniXIkgF5BLH8 3Vi4Cvz9hha9KsAbZm2sGTdlP/Wj+CY= X-MC-Unique: FA3gta3cOqWO9KjR84O-cw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 25/80] qemu: Move success-only code out of endjob in qemuMigrationDstFinish Date: Tue, 10 May 2022 17:20:46 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196164633100001 Content-Type: text/plain; charset="utf-8" Code executed only when dom !=3D NULL can be moved before "endjob" label, to the only place where dom is set. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 50 ++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 1f6f008ad9..cb17cbd189 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5844,8 +5844,16 @@ qemuMigrationDstFinish(virQEMUDriver *driver, =20 if (flags & VIR_MIGRATE_OFFLINE) { if (retcode =3D=3D 0 && - qemuMigrationDstPersist(driver, vm, mig, false) =3D=3D 0) + qemuMigrationDstPersist(driver, vm, mig, false) =3D=3D 0) { dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, -1); + + if (dom && + qemuMigrationCookieFormat(mig, driver, vm, + QEMU_MIGRATION_DESTINATION, + cookieout, cookieoutlen, + QEMU_MIGRATION_COOKIE_STATS) < 0) + VIR_WARN("Unable to encode migration cookie"); + } goto endjob; } =20 @@ -6008,6 +6016,25 @@ qemuMigrationDstFinish(virQEMUDriver *driver, /* Guest is successfully running, so cancel previous auto destroy */ qemuProcessAutoDestroyRemove(driver, vm); =20 + if (jobData) { + priv->job.completed =3D g_steal_pointer(&jobData); + priv->job.completed->status =3D VIR_DOMAIN_JOB_STATUS_COMPLETED; + qemuDomainJobSetStatsType(priv->job.completed, + QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION); + } + + if (qemuMigrationCookieFormat(mig, driver, vm, + QEMU_MIGRATION_DESTINATION, + cookieout, cookieoutlen, + QEMU_MIGRATION_COOKIE_STATS) < 0) + VIR_WARN("Unable to encode migration cookie"); + + /* Remove completed stats for post-copy, everything but timing fields + * is obsolete anyway. + */ + if (inPostCopy) + g_clear_pointer(&priv->job.completed, virDomainJobDataFree); + dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, vm->def->id); =20 endjob: @@ -6028,27 +6055,6 @@ qemuMigrationDstFinish(virQEMUDriver *driver, } } =20 - if (dom) { - if (jobData) { - priv->job.completed =3D g_steal_pointer(&jobData); - priv->job.completed->status =3D VIR_DOMAIN_JOB_STATUS_COMPLETE= D; - qemuDomainJobSetStatsType(priv->job.completed, - QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION= ); - } - - if (qemuMigrationCookieFormat(mig, driver, vm, - QEMU_MIGRATION_DESTINATION, - cookieout, cookieoutlen, - QEMU_MIGRATION_COOKIE_STATS) < 0) - VIR_WARN("Unable to encode migration cookie"); - - /* Remove completed stats for post-copy, everything but timing fie= lds - * is obsolete anyway. - */ - if (inPostCopy) - g_clear_pointer(&priv->job.completed, virDomainJobDataFree); - } - if (virDomainObjIsFailedPostcopy(vm)) { qemuProcessAutoDestroyRemove(driver, vm); qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196198; cv=none; d=zohomail.com; s=zohoarc; b=X/crkJxHAM94vY9cISjWevggBRApnJ8mhgvFmP0gLfBVAAv+1K3or8hPGVKYN5z+vvffHU+/0/EeL/ccYRvtXHICuMzfCFJ4/t2w9w5JNmgkngwjOLhWk0T35Zh2GefeXh4mzkrDxfydgT9zdPKTHyIrakZ6CzWPiFBBrNgJsz0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196198; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=mwJLqAL1uMhQ+e3G+HXOUtqnL4jP4qtoZsrOLzfnVsY=; b=BiGCmhp91zv9AsmgkeHQs9XxgpxcmqJwt/ZyeDboJ6ljkxIapcg7Z1XQlZiru603TpoFrQVnJWJ6zDyDX8HVe3ZS1+Dp5iAEFtBw7Hf1saZHAUAqqLj7eGZc8VW3IBwZnkZ1GYP6o3CGdpQY6ivCzlSFAyRj1Y+tXXHIir5B9DQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196198141898.7724022904931; Tue, 10 May 2022 08:23:18 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-263-n7qhWLt8NtecChiIsKIoIQ-1; Tue, 10 May 2022 11:23:09 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6AFF91C0782B; Tue, 10 May 2022 15:22:12 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 559CE54B072; Tue, 10 May 2022 15:22:12 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id C097A1953554; Tue, 10 May 2022 15:22:01 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 27BEE194705F for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 14A29C28107; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E96BEC27DB5 for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 9348A244600; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196196; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=mwJLqAL1uMhQ+e3G+HXOUtqnL4jP4qtoZsrOLzfnVsY=; b=Z1AykmVHX4qyFVyN7eQ/10IjdhBAHnBXno5AbT7IkaaQZlwzQmfzCJ2uZVqNCK5Dfn9spy yx92rzTqLD46iGYw/sq9z2HOG+Vl5/4pDqLUhqOfOrspLi0yeN2fSvgRy7I5LVZokNHvBs q6rZi/Pe+CD1YMW2/ebRThrO6H37ZDU= X-MC-Unique: n7qhWLt8NtecChiIsKIoIQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 26/80] qemu: Separate success and failure path in qemuMigrationDstFinish Date: Tue, 10 May 2022 17:20:47 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196198778100003 Content-Type: text/plain; charset="utf-8" Most of the code in "endjob" label is executed only on failure. Let's duplicate the rest so that the label can be used only in error path making the success path easier to follow and refactor. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 45 ++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index cb17cbd189..0c6d2c041b 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5854,7 +5854,9 @@ qemuMigrationDstFinish(virQEMUDriver *driver, QEMU_MIGRATION_COOKIE_STATS) < 0) VIR_WARN("Unable to encode migration cookie"); } - goto endjob; + + qemuMigrationJobFinish(vm); + goto cleanup; } =20 if (retcode !=3D 0) { @@ -6035,12 +6037,31 @@ qemuMigrationDstFinish(virQEMUDriver *driver, if (inPostCopy) g_clear_pointer(&priv->job.completed, virDomainJobDataFree); =20 + qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, + jobPriv->migParams, priv->job.apiFlags); + dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, vm->def->id); =20 + qemuMigrationJobFinish(vm); + + cleanup: + g_clear_pointer(&jobData, virDomainJobDataFree); + virPortAllocatorRelease(port); + if (priv->mon) + qemuMonitorSetDomainLog(priv->mon, NULL, NULL, NULL); + VIR_FREE(priv->origname); + virDomainObjEndAPI(&vm); + virErrorRestore(&orig_err); + + /* Set a special error if Finish is expected to return NULL as a resul= t of + * successful call with retcode !=3D 0 + */ + if (retcode !=3D 0 && !dom && virGetLastErrorCode() =3D=3D VIR_ERR_OK) + virReportError(VIR_ERR_MIGRATE_FINISH_OK, NULL); + return dom; + endjob: - if (!dom && - !(flags & VIR_MIGRATE_OFFLINE) && - virDomainObjIsActive(vm)) { + if (virDomainObjIsActive(vm)) { if (doKill) { qemuProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED, VIR_ASYNC_JOB_MIGRATION_IN, @@ -6069,21 +6090,7 @@ qemuMigrationDstFinish(virQEMUDriver *driver, if (!virDomainObjIsActive(vm)) qemuDomainRemoveInactive(driver, vm); =20 - cleanup: - g_clear_pointer(&jobData, virDomainJobDataFree); - virPortAllocatorRelease(port); - if (priv->mon) - qemuMonitorSetDomainLog(priv->mon, NULL, NULL, NULL); - VIR_FREE(priv->origname); - virDomainObjEndAPI(&vm); - virErrorRestore(&orig_err); - - /* Set a special error if Finish is expected to return NULL as a resul= t of - * successful call with retcode !=3D 0 - */ - if (retcode !=3D 0 && !dom && virGetLastErrorCode() =3D=3D VIR_ERR_OK) - virReportError(VIR_ERR_MIGRATE_FINISH_OK, NULL); - return dom; + goto cleanup; } =20 =20 --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196204; cv=none; d=zohomail.com; s=zohoarc; b=POw9yxbyVywZiRfkbR10TKxQhR2SnfDnCiDkeUnRE95WfYkQVib8Okk8+sxg6heAXCT5vwhrMmlIBNlh+yGDthG1qfDbGQncixieS+BU3aRSyQUs6Uhd2rnfilNeFv2WkRXfusMFhaBDmTO1ZoyazOrJrznEwz/34Iaa4HT7qK0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196204; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ICkdytyi5kyBcEg5VmsEwEIFVzycjOT2Rhxr5HkSDr4=; b=UdKLwoPi9sXaCTIatH7U91Rk98pstTJXwql0Kt8Q0DRv9CpjY7lMtk4N5auVF6s/1RArHWEsklsVgqcb36AWHo9X5Vx3JowYYQtwFExA8yaN6OTf9WJIMnM6eFYFVj/3Hd3TjMopyWCpAN4ACMY4CHwOGGnl8p82LSr5C8H0fsc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196204535290.069226428982; Tue, 10 May 2022 08:23:24 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-343-tqkdCqfIPFKizEL6Ycas7g-1; Tue, 10 May 2022 11:23:14 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 5511285A5A8; Tue, 10 May 2022 15:22:13 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 425BA54B072; Tue, 10 May 2022 15:22:13 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 72734193F504; Tue, 10 May 2022 15:22:02 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id F0C0E194E12A for ; Tue, 10 May 2022 15:21:59 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id CA4322166B13; Tue, 10 May 2022 15:21:59 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AA2A12166B4F for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 94936244601; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196203; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=ICkdytyi5kyBcEg5VmsEwEIFVzycjOT2Rhxr5HkSDr4=; b=RPJDGR0NF2jc4qrc5m/tppsYpIGXKjX0VemxSsOXqrcfLGzkCi1v6ZlXQJx8HKjAAo8/vF 67g6IaCo4C9Mjtlh/EfHAEDUyOVbKK482Huid1XLk8PKCGZPeAdikmMpwzWpCZL8PJUMST RChgy2fPfvmm+3Y/vySYVinsnG9QzuM= X-MC-Unique: tqkdCqfIPFKizEL6Ycas7g-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 27/80] qemu: Rename "endjob" label in qemuMigrationDstFinish Date: Tue, 10 May 2022 17:20:48 +0200 Message-Id: <737117ea25f2d7149a7fc6b62fa5260cc40e1cec.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196204935100001 Content-Type: text/plain; charset="utf-8" Let's call it "error" so that it's clear the label is only used in failure path. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 0c6d2c041b..4096aba0a6 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5840,7 +5840,7 @@ qemuMigrationDstFinish(virQEMUDriver *driver, =20 if (!(mig =3D qemuMigrationCookieParse(driver, vm->def, priv->origname= , priv, cookiein, cookieinlen, cookie_fla= gs))) - goto endjob; + goto error; =20 if (flags & VIR_MIGRATE_OFFLINE) { if (retcode =3D=3D 0 && @@ -5864,31 +5864,31 @@ qemuMigrationDstFinish(virQEMUDriver *driver, * earlier than monitor EOF handler got a chance to process the er= ror */ qemuDomainCheckMonitor(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN); - goto endjob; + goto error; } =20 if (!virDomainObjIsActive(vm)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("guest unexpectedly quit")); qemuMigrationDstErrorReport(driver, vm->def->name); - goto endjob; + goto error; } =20 if (qemuMigrationDstVPAssociatePortProfiles(vm->def) < 0) - goto endjob; + goto error; =20 if (mig->network && qemuMigrationDstOPDRelocate(driver, vm, mig) < 0) VIR_WARN("unable to provide network data for relocation"); =20 if (qemuMigrationDstStopNBDServer(driver, vm, mig) < 0) - goto endjob; + goto error; =20 if (qemuRefreshVirtioChannelState(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN) < 0) - goto endjob; + goto error; =20 if (qemuConnectAgent(driver, vm) < 0) - goto endjob; + goto error; =20 if (flags & VIR_MIGRATE_PERSIST_DEST) { if (qemuMigrationDstPersist(driver, vm, mig, !v3proto) < 0) { @@ -5905,7 +5905,7 @@ qemuMigrationDstFinish(virQEMUDriver *driver, * to restart during confirm() step, so we kill it off now. */ if (v3proto) - goto endjob; + goto error; } } =20 @@ -5919,7 +5919,7 @@ qemuMigrationDstFinish(virQEMUDriver *driver, * original domain on the source host is already gone. */ if (v3proto) - goto endjob; + goto error; } =20 /* Now that the state data was transferred we can refresh the actual s= tate @@ -5928,7 +5928,7 @@ qemuMigrationDstFinish(virQEMUDriver *driver, /* Similarly to the case above v2 protocol will not be able to rec= over * from this. Let's ignore this and perhaps stuff will not break. = */ if (v3proto) - goto endjob; + goto error; } =20 if (priv->job.current->status =3D=3D VIR_DOMAIN_JOB_STATUS_POSTCOPY) @@ -5960,7 +5960,7 @@ qemuMigrationDstFinish(virQEMUDriver *driver, * things up. */ if (v3proto) - goto endjob; + goto error; } =20 if (inPostCopy) @@ -5983,7 +5983,7 @@ qemuMigrationDstFinish(virQEMUDriver *driver, if (qemuMigrationDstWaitForCompletion(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, false) < 0) { - goto endjob; + goto error; } if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_RUNNING) { virDomainObjSetState(vm, @@ -6060,7 +6060,7 @@ qemuMigrationDstFinish(virQEMUDriver *driver, virReportError(VIR_ERR_MIGRATE_FINISH_OK, NULL); return dom; =20 - endjob: + error: if (virDomainObjIsActive(vm)) { if (doKill) { qemuProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED, --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196303; cv=none; d=zohomail.com; s=zohoarc; b=icvQzzpgTVLBVf3uVQqexYeWzNuyUfm3dQLbSLQ+QXQBSg5UUZfviNo94EqU5Vsjb56FFJmqsZZJg9RgdYhAMiQXGhBSaFnek2lyLLWcoOV4KqkgB8kS/FQsMHGoJKqfjFge8F7UYwbcNELKcviBXH84ufMAwZO2dg+v6P7ZlLs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196303; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=lZ7oa5VQBymxFNjTc/A2R7IPn5KjqRrWGtGcU+lofpY=; b=K/d+BHhJ1zfiOawiQHfD0uOc8qQoJSruX5Iry+L6Q4g1K1IdFtSpZKRi7vMKLm1v6Ahc4P6Ag72h+diCpjUv/Krbo/HWV5qbQj89idMGPBfFWbaYGPpzfPyp5l9jC54OXXMixRM6ZSEr1dx3ZtosM1uLdLiBxk8xPq/AkuZJ0rA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196303633669.7445738053568; Tue, 10 May 2022 08:25:03 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-321-kVmLSJsVMgqFn4EgSdhQTA-1; Tue, 10 May 2022 11:22:45 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 702641D3236B; Tue, 10 May 2022 15:21:58 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5C03214E1D91; Tue, 10 May 2022 15:21:58 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 2C1EA1947B8D; Tue, 10 May 2022 15:21:54 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 2EF181947072 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 1B309463EDD; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EFAEF463ECC for ; Tue, 10 May 2022 15:21:47 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 95E67244602; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196302; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=lZ7oa5VQBymxFNjTc/A2R7IPn5KjqRrWGtGcU+lofpY=; b=bUDoGbg1+nEyCCEanRcG1ZnNcL45kptxhizz91FaX0V9Re6dvi3jrEXUf7dMmH7kRXtKRK CgWDH5JejCCOggA+5H8uQvTQGs4gfvW8bcZOxXm3IahV7GvdQL0TMIKeez2hcshMCpxvH5 jcXIc1PUD31q70GlRuvyydzzINMgwFY= X-MC-Unique: kVmLSJsVMgqFn4EgSdhQTA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 28/80] qemu: Generate migration cookie in Finish phase earlier Date: Tue, 10 May 2022 17:20:49 +0200 Message-Id: <6a4934a5c7cd1485c8cf0acb68fea1fae7c62563.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196304357100002 Content-Type: text/plain; charset="utf-8" The final part of Finish phase will be refactored into a dedicated function and we don't want to generate the cookie there. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 4096aba0a6..85ab4257d4 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5979,12 +5979,27 @@ qemuMigrationDstFinish(virQEMUDriver *driver, qemuDomainJobDataUpdateDowntime(jobData); } =20 + if (inPostCopy && + qemuMigrationDstWaitForCompletion(driver, vm, + VIR_ASYNC_JOB_MIGRATION_IN, + false) < 0) { + goto error; + } + + if (jobData) { + priv->job.completed =3D g_steal_pointer(&jobData); + priv->job.completed->status =3D VIR_DOMAIN_JOB_STATUS_COMPLETED; + qemuDomainJobSetStatsType(priv->job.completed, + QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION); + } + + if (qemuMigrationCookieFormat(mig, driver, vm, + QEMU_MIGRATION_DESTINATION, + cookieout, cookieoutlen, + QEMU_MIGRATION_COOKIE_STATS) < 0) + VIR_WARN("Unable to encode migration cookie"); + if (inPostCopy) { - if (qemuMigrationDstWaitForCompletion(driver, vm, - VIR_ASYNC_JOB_MIGRATION_IN, - false) < 0) { - goto error; - } if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_RUNNING) { virDomainObjSetState(vm, VIR_DOMAIN_RUNNING, @@ -6018,19 +6033,6 @@ qemuMigrationDstFinish(virQEMUDriver *driver, /* Guest is successfully running, so cancel previous auto destroy */ qemuProcessAutoDestroyRemove(driver, vm); =20 - if (jobData) { - priv->job.completed =3D g_steal_pointer(&jobData); - priv->job.completed->status =3D VIR_DOMAIN_JOB_STATUS_COMPLETED; - qemuDomainJobSetStatsType(priv->job.completed, - QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION); - } - - if (qemuMigrationCookieFormat(mig, driver, vm, - QEMU_MIGRATION_DESTINATION, - cookieout, cookieoutlen, - QEMU_MIGRATION_COOKIE_STATS) < 0) - VIR_WARN("Unable to encode migration cookie"); - /* Remove completed stats for post-copy, everything but timing fields * is obsolete anyway. */ --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196372; cv=none; d=zohomail.com; s=zohoarc; b=YDrcxeaF9rP1mnDIn82EnncYUg6OQAcdheQTscxL3gR+J36pyDwP13fSYKtqzyGmWbHKR97VD9edxmPl3b2KxRkSIXgrQxfaTfW9PqavqfTE2E5WWxXGTdtuvz78AQYoKysllCNmTpvR4Xl8erHQHh76nWU41a25baWR1gqtMFA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196372; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=mwBbN6lxjkEeX1d7IvYBGj4JXXqsiB/Feq6mfXCUa6k=; b=MIlwMZGIaLIenvY+ZYfHAc9BHyOrv4+lVRx+subRqVpjtEcy5aWWPlumbADRublwLq5Eiles0YFaE6vy8S2ExB+pDOKjkEBA0xIkxoL3AsIOG0PKLyrKxLW0iwpzojp9Y3H8jtXl/KV8AA26DRFh+xCPWIpPbHibHZF+erOeTds= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196372931735.8463619588963; Tue, 10 May 2022 08:26:12 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-8-yIzEE6UtPnSc-ojdmLN57w-1; Tue, 10 May 2022 11:23:06 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id BFA9E384F822; Tue, 10 May 2022 15:22:14 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id A9D8354B074; Tue, 10 May 2022 15:22:14 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 072301947059; Tue, 10 May 2022 15:22:06 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5F2501947079 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 4A5B754B076; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0DCEF54B073 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 9735E244603; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196371; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=mwBbN6lxjkEeX1d7IvYBGj4JXXqsiB/Feq6mfXCUa6k=; b=Sx7MCZJEGin1FLdWK2DOhYfRQUw1N7BOFtzlztRS2C655mfF49vphMUcc8naq9LBydp/Ti Rj9ZbZyunXr/Yhj/d2+r3LvhwZrnOxTrj2dm6raLIfaqxaUQAOhulGIibWouh/ZnUh5KSD wcqPttn47Yb8zigJ8HcpNyHf0Nq7bLY= X-MC-Unique: yIzEE6UtPnSc-ojdmLN57w-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 29/80] qemu: Make final part of migration Finish phase reusable Date: Tue, 10 May 2022 17:20:50 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196374823100001 Content-Type: text/plain; charset="utf-8" By separating it into a dedicated qemuMigrationDstComplete function which can be later called in other places. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 99 ++++++++++++++++++++++----------------- src/qemu/qemu_migration.h | 6 +++ 2 files changed, 63 insertions(+), 42 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 85ab4257d4..a3d55c8e8b 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5784,6 +5784,61 @@ qemuMigrationDstPersist(virQEMUDriver *driver, } =20 =20 +void +qemuMigrationDstComplete(virQEMUDriver *driver, + virDomainObj *vm, + bool inPostCopy, + virDomainAsyncJob asyncJob) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + qemuDomainJobPrivate *jobPriv =3D priv->job.privateData; + virObjectEvent *event; + + if (inPostCopy) { + if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_RUNNING) { + virDomainObjSetState(vm, + VIR_DOMAIN_RUNNING, + VIR_DOMAIN_RUNNING_MIGRATED); + } + + /* The only RESUME event during post-copy migration is triggered by + * QEMU when the running domain moves from the source to the + * destination host, but then the migration keeps running until all + * modified memory is transferred from the source host. This will + * result in VIR_DOMAIN_EVENT_RESUMED with RESUMED_POSTCOPY detail. + * However, our API documentation says we need to fire another RES= UMED + * event at the very end of migration with RESUMED_MIGRATED detail. + */ + event =3D virDomainEventLifecycleNewFromObj(vm, + VIR_DOMAIN_EVENT_RESUMED, + VIR_DOMAIN_EVENT_RESUMED= _MIGRATED); + virObjectEventStateQueue(driver->domainEventState, event); + } + + if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_PAUSED) { + virDomainObjSetState(vm, VIR_DOMAIN_PAUSED, VIR_DOMAIN_PAUSED_USER= ); + event =3D virDomainEventLifecycleNewFromObj(vm, + VIR_DOMAIN_EVENT_SUSPEND= ED, + VIR_DOMAIN_EVENT_SUSPEND= ED_PAUSED); + virObjectEventStateQueue(driver->domainEventState, event); + } + + qemuDomainSaveStatus(vm); + + /* Guest is successfully running, so cancel previous auto destroy */ + qemuProcessAutoDestroyRemove(driver, vm); + + /* Remove completed stats for post-copy, everything but timing fields + * is obsolete anyway. + */ + if (inPostCopy) + g_clear_pointer(&priv->job.completed, virDomainJobDataFree); + + qemuMigrationParamsReset(driver, vm, asyncJob, jobPriv->migParams, + priv->job.apiFlags); +} + + virDomainPtr qemuMigrationDstFinish(virQEMUDriver *driver, virConnectPtr dconn, @@ -5999,48 +6054,8 @@ qemuMigrationDstFinish(virQEMUDriver *driver, QEMU_MIGRATION_COOKIE_STATS) < 0) VIR_WARN("Unable to encode migration cookie"); =20 - if (inPostCopy) { - if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_RUNNING) { - virDomainObjSetState(vm, - VIR_DOMAIN_RUNNING, - VIR_DOMAIN_RUNNING_MIGRATED); - } - - /* The only RESUME event during post-copy migration is triggered by - * QEMU when the running domain moves from the source to the - * destination host, but then the migration keeps running until all - * modified memory is transferred from the source host. This will - * result in VIR_DOMAIN_EVENT_RESUMED with RESUMED_POSTCOPY detail. - * However, our API documentation says we need to fire another RES= UMED - * event at the very end of migration with RESUMED_MIGRATED detail. - */ - event =3D virDomainEventLifecycleNewFromObj(vm, - VIR_DOMAIN_EVENT_RESUMED, - VIR_DOMAIN_EVENT_RESUMED= _MIGRATED); - virObjectEventStateQueue(driver->domainEventState, event); - } - - if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_PAUSED) { - virDomainObjSetState(vm, VIR_DOMAIN_PAUSED, VIR_DOMAIN_PAUSED_USER= ); - event =3D virDomainEventLifecycleNewFromObj(vm, - VIR_DOMAIN_EVENT_SUSPEND= ED, - VIR_DOMAIN_EVENT_SUSPEND= ED_PAUSED); - virObjectEventStateQueue(driver->domainEventState, event); - } - - qemuDomainSaveStatus(vm); - - /* Guest is successfully running, so cancel previous auto destroy */ - qemuProcessAutoDestroyRemove(driver, vm); - - /* Remove completed stats for post-copy, everything but timing fields - * is obsolete anyway. - */ - if (inPostCopy) - g_clear_pointer(&priv->job.completed, virDomainJobDataFree); - - qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, - jobPriv->migParams, priv->job.apiFlags); + qemuMigrationDstComplete(driver, vm, inPostCopy, + VIR_ASYNC_JOB_MIGRATION_IN); =20 dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, vm->def->id); =20 diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index c4e4228282..ecb0ad6302 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -191,6 +191,12 @@ qemuMigrationDstFinish(virQEMUDriver *driver, int retcode, bool v3proto); =20 +void +qemuMigrationDstComplete(virQEMUDriver *driver, + virDomainObj *vm, + bool inPostCopy, + virDomainAsyncJob asyncJob); + int qemuMigrationSrcConfirm(virQEMUDriver *driver, virDomainObj *vm, --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196245; cv=none; d=zohomail.com; s=zohoarc; b=bhwVXAeXKqsfr0roH+MVs9Aejq8EXns5WYcR6xGAKp7KXr6yxrx9rfM8t47IxAiSUBZjMxMAbSPPTY/VkWGUKbpKX4X70VURR19M0Lc9Sc3KRCLAeRxzyuLUaTX9irqASRKyvedspK+ah3P1b4lVgYcZwkRx0VFZs+qrV/VnS68= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196245; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=O/Py5MfJ/HLC3NPdgUE5O/X4Bb5HjzAwDNBXNfvE3jE=; b=b+HWhQtqm5ofNq6O9nklQnOkjDo09KLKcb3jOOzxvRN6kJHmMnx5lqpk2lGLJ2lqzTH4Ptf8tathnYodGP07RmTtGYguk9z6HRlDplOMOKU7JlMc81dfR+onwWGPI2SZ7kK9uInqPbA0hICKdXCKP6hF2QeZkOLMTu8LDhG6FvM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196245520639.4093702081869; Tue, 10 May 2022 08:24:05 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-617-ti-YAlEDNh6vvztomafaTg-1; Tue, 10 May 2022 11:22:54 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 48E7A1C0013F; Tue, 10 May 2022 15:22:17 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 348D215088B8; Tue, 10 May 2022 15:22:17 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 63AF4193F510; Tue, 10 May 2022 15:22:07 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 0AB90194036F for ; Tue, 10 May 2022 15:22:00 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id F103B2166B4F; Tue, 10 May 2022 15:21:59 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id ABB3E2166B5E for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 986F4244605; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196244; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=O/Py5MfJ/HLC3NPdgUE5O/X4Bb5HjzAwDNBXNfvE3jE=; b=Ze0gWGWKp7UTQEdiWFKFnm/fgVIZESQdUofKSsWxUd6Z7Id4rJaox4AOuO0adonqkJtfZi xvsSJm23TwehYsWS+EcPtj21zSxrEldUwejTX+N+yodaAC4HkhXujsunucnjuedtjO7OrL 4HaRf8nPjo3A1dQntu5btHlgmUMtEWU= X-MC-Unique: ti-YAlEDNh6vvztomafaTg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 30/80] qemu: Drop obsolete comment in qemuMigrationDstFinish Date: Tue, 10 May 2022 17:20:51 +0200 Message-Id: <8d602290df5a290b8d21df9bc260ac84302d8a91.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196247030100007 Content-Type: text/plain; charset="utf-8" The comment about QEMU < 0.10.6 has been irrelevant for years. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index a3d55c8e8b..a6c8e53ac5 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5990,10 +5990,6 @@ qemuMigrationDstFinish(virQEMUDriver *driver, inPostCopy =3D true; =20 if (!(flags & VIR_MIGRATE_PAUSED)) { - /* run 'cont' on the destination, which allows migration on qemu - * >=3D 0.10.6 to work properly. This isn't strictly necessary on - * older qemu's, but it also doesn't hurt anything there - */ if (qemuProcessStartCPUs(driver, vm, inPostCopy ? VIR_DOMAIN_RUNNING_POSTCOPY : VIR_DOMAIN_RUNNING_MIGRATED, --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196425; cv=none; d=zohomail.com; s=zohoarc; b=bgMm5c/sVYthbLmQTC0WYcy5MmbTMwSFkqlV5FQ81p8Sr/4Z/o+eM4YU1eVdtzxvWx9v0ACfdRPdIZwV6aCc9b2MTanbC+Juslbnnel4plA10QzvI48PS5bW0tx4Zjt/XB1n5e95FyGD9axghTVDHh6vpabjIscc1MKB+NSIqvg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196425; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=muC1kelk3dT0WimjIvVwSA/yDjNtNwi+24xjfpsi4MU=; b=C6HGRr1C3whosYyzn33+pib+q/TdUKWr6bInnuDAiEZIs2qSPfJrsROtShyBCU5K3t/bJjfUCyDdk0o1kvp50bKTzcRT8P4p3kma8W3NNZAopTzkXBFeJ6QakDBjpXhHUypjUptGnsFOm1fV2UYbq9R+9Dw7tBMnQj5Yi3F1YTY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196425666961.0045175011244; Tue, 10 May 2022 08:27:05 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-275-TMIiqiZMMqC3S2NwsTamcA-1; Tue, 10 May 2022 11:22:56 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 64EFF38332AE; Tue, 10 May 2022 15:22:13 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 51D1440CF8ED; Tue, 10 May 2022 15:22:13 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 755ED1947BBB; Tue, 10 May 2022 15:22:02 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 6911519451F1 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 35FBC463EDE; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 163C0463ED0 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 99ADB244606; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196424; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=muC1kelk3dT0WimjIvVwSA/yDjNtNwi+24xjfpsi4MU=; b=h21BMPA3tadDmeE1xyMTqUGOxLTAYIlZmkqXDbfVJQDECXCGuj0KgR8qq+K8ewcx9b0jfT GcLW0tYigNbAQ+MrVFpcLt98nMoa3OmrKXa6O147Pbau4i4W/Mj2hbufRgPPDnaG06Jcvx XI1dC8BE8R7tw5AtV8GGNuJn02U/PpU= X-MC-Unique: TMIiqiZMMqC3S2NwsTamcA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 31/80] qemu: Preserve error in qemuMigrationDstFinish Date: Tue, 10 May 2022 17:20:52 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196427381100002 Content-Type: text/plain; charset="utf-8" We want to prevent our error path that can potentially kill the domain on the destination host from overwriting an error reported earlier, but we were only doing so in one specific path when starting vCPUs fails. Let's do it in all paths. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index a6c8e53ac5..bbea2f6e0e 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5997,11 +5997,6 @@ qemuMigrationDstFinish(virQEMUDriver *driver, if (virGetLastErrorCode() =3D=3D VIR_ERR_OK) virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("resume operation failed")); - /* Need to save the current error, in case shutting - * down the process overwrites it - */ - virErrorPreserveLast(&orig_err); - /* * In v3 protocol, the source VM is still available to * restart during confirm() step, so we kill it off @@ -6074,6 +6069,10 @@ qemuMigrationDstFinish(virQEMUDriver *driver, return dom; =20 error: + /* Need to save the current error, in case shutting down the process + * overwrites it. */ + virErrorPreserveLast(&orig_err); + if (virDomainObjIsActive(vm)) { if (doKill) { qemuProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED, --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196253; cv=none; d=zohomail.com; s=zohoarc; b=Vt/E865Cv76VE5Nc7tWrPtdNOZUAZcBNVGlWEz/OWDDJYjxsfX9L32O2pcqAOhmWUG6swtu4Nc1SlAzfdYCAXvUH6UE+5+lHM5pWnW70w8GI4ZxscM6OtpZTLtSllrPJuEUgc1eXRi7cnK7ajemPYD4DW8oQJA8drn80WVT41wc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196253; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=pscGJG2QbpUH6b6I+4buqyw0HP1dFQRY23laNJGMjhA=; b=LYDsLTtyDSGjGkKD5TxqDiKxs6d9/FeRtic9Cbj5T+LOmYxl9K9OLpDBSjd2kDNfZu7bV9UQjvjAKRBbVZ+3JixIWB8gXN30XNyXTGKC3K7flFobh+X/Pt8GZC7/nBQUwj4hJNWVOhA+Nzxga7HxQwYCmHLFCeaP9cLViuGO8Ow= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196253989492.90815832199485; Tue, 10 May 2022 08:24:13 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-36-RTB0V1XFP8KCHfLHGRQJ_g-1; Tue, 10 May 2022 11:23:14 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 04C57884357; Tue, 10 May 2022 15:22:02 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id DE02C15063C5; Tue, 10 May 2022 15:22:01 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id A4CC91947BAD; Tue, 10 May 2022 15:21:55 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 736511947B85 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 6511C463EDD; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0D729463EF5 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 9B109244607; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196252; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=pscGJG2QbpUH6b6I+4buqyw0HP1dFQRY23laNJGMjhA=; b=dC17WjYZ0gYwa7xN3K9nkfpnU5HITy7iWz6oY5d2Pg8C0odYLO4Y0qaFiW8UH4PGNsldb1 DBeLgmoi4+JgEYZ9HqO1mo1lFUVnI68XV+hcM7hbQ1p5bZsigpbrpWF0gyqF9trSdDjdv0 9jd1b7nBbD+G1+OO5ovrrPHJMI+1yO8= X-MC-Unique: RTB0V1XFP8KCHfLHGRQJ_g-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 32/80] qemu: Introduce qemuMigrationDstFinishFresh Date: Tue, 10 May 2022 17:20:53 +0200 Message-Id: <050520f996e44b2ab480980b68a0a13bd8ee2eed.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196255162100003 Content-Type: text/plain; charset="utf-8" Refactors qemuMigrationDstFinish by moving some parts to a dedicated function for easier introduction of postcopy resume code without duplicating common parts of the Finish phase. The goal is to have the following call graph: - qemuMigrationDstFinish - qemuMigrationDstFinishOffline - qemuMigrationDstFinishActive - qemuMigrationDstFinishFresh - qemuMigrationDstFinishResume Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 234 +++++++++++++++++++++----------------- 1 file changed, 129 insertions(+), 105 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index bbea2f6e0e..385bd91a6b 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5839,111 +5839,38 @@ qemuMigrationDstComplete(virQEMUDriver *driver, } =20 =20 -virDomainPtr -qemuMigrationDstFinish(virQEMUDriver *driver, - virConnectPtr dconn, - virDomainObj *vm, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - unsigned long flags, - int retcode, - bool v3proto) +/* + * Perform Finish phase of a fresh (i.e., not recovery) migration of an ac= tive + * domain. + */ +static int +qemuMigrationDstFinishFresh(virQEMUDriver *driver, + virDomainObj *vm, + qemuMigrationCookie *mig, + unsigned long flags, + bool v3proto, + unsigned long long timeReceived, + bool *doKill, + bool *inPostCopy) { - virDomainPtr dom =3D NULL; - g_autoptr(qemuMigrationCookie) mig =3D NULL; - virErrorPtr orig_err =3D NULL; - int cookie_flags =3D 0; qemuDomainObjPrivate *priv =3D vm->privateData; - qemuDomainJobPrivate *jobPriv =3D priv->job.privateData; - unsigned short port; - unsigned long long timeReceived =3D 0; - virObjectEvent *event; - virDomainJobData *jobData =3D NULL; - bool inPostCopy =3D false; - bool doKill =3D true; - - VIR_DEBUG("driver=3D%p, dconn=3D%p, vm=3D%p, cookiein=3D%s, cookieinle= n=3D%d, " - "cookieout=3D%p, cookieoutlen=3D%p, flags=3D0x%lx, retcode= =3D%d", - driver, dconn, vm, NULLSTR(cookiein), cookieinlen, - cookieout, cookieoutlen, flags, retcode); - - port =3D priv->migrationPort; - priv->migrationPort =3D 0; - - if (!qemuMigrationJobIsActive(vm, VIR_ASYNC_JOB_MIGRATION_IN)) { - qemuMigrationDstErrorReport(driver, vm->def->name); - goto cleanup; - } - - ignore_value(virTimeMillisNow(&timeReceived)); - - qemuMigrationJobStartPhase(vm, - v3proto ? QEMU_MIGRATION_PHASE_FINISH3 - : QEMU_MIGRATION_PHASE_FINISH2); - - qemuDomainCleanupRemove(vm, qemuMigrationDstPrepareCleanup); - g_clear_pointer(&priv->job.completed, virDomainJobDataFree); - - cookie_flags =3D QEMU_MIGRATION_COOKIE_NETWORK | - QEMU_MIGRATION_COOKIE_STATS | - QEMU_MIGRATION_COOKIE_NBD; - /* Some older versions of libvirt always send persistent XML in the co= okie - * even though VIR_MIGRATE_PERSIST_DEST was not used. */ - cookie_flags |=3D QEMU_MIGRATION_COOKIE_PERSISTENT; - - if (!(mig =3D qemuMigrationCookieParse(driver, vm->def, priv->origname= , priv, - cookiein, cookieinlen, cookie_fla= gs))) - goto error; - - if (flags & VIR_MIGRATE_OFFLINE) { - if (retcode =3D=3D 0 && - qemuMigrationDstPersist(driver, vm, mig, false) =3D=3D 0) { - dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, -1); - - if (dom && - qemuMigrationCookieFormat(mig, driver, vm, - QEMU_MIGRATION_DESTINATION, - cookieout, cookieoutlen, - QEMU_MIGRATION_COOKIE_STATS) < 0) - VIR_WARN("Unable to encode migration cookie"); - } - - qemuMigrationJobFinish(vm); - goto cleanup; - } - - if (retcode !=3D 0) { - /* Check for a possible error on the monitor in case Finish was ca= lled - * earlier than monitor EOF handler got a chance to process the er= ror - */ - qemuDomainCheckMonitor(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN); - goto error; - } - - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("guest unexpectedly quit")); - qemuMigrationDstErrorReport(driver, vm->def->name); - goto error; - } + g_autoptr(virDomainJobData) jobData =3D NULL; =20 if (qemuMigrationDstVPAssociatePortProfiles(vm->def) < 0) - goto error; + return -1; =20 if (mig->network && qemuMigrationDstOPDRelocate(driver, vm, mig) < 0) VIR_WARN("unable to provide network data for relocation"); =20 if (qemuMigrationDstStopNBDServer(driver, vm, mig) < 0) - goto error; + return -1; =20 if (qemuRefreshVirtioChannelState(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN) < 0) - goto error; + return -1; =20 if (qemuConnectAgent(driver, vm) < 0) - goto error; + return -1; =20 if (flags & VIR_MIGRATE_PERSIST_DEST) { if (qemuMigrationDstPersist(driver, vm, mig, !v3proto) < 0) { @@ -5960,7 +5887,7 @@ qemuMigrationDstFinish(virQEMUDriver *driver, * to restart during confirm() step, so we kill it off now. */ if (v3proto) - goto error; + return -1; } } =20 @@ -5974,7 +5901,7 @@ qemuMigrationDstFinish(virQEMUDriver *driver, * original domain on the source host is already gone. */ if (v3proto) - goto error; + return -1; } =20 /* Now that the state data was transferred we can refresh the actual s= tate @@ -5983,16 +5910,16 @@ qemuMigrationDstFinish(virQEMUDriver *driver, /* Similarly to the case above v2 protocol will not be able to rec= over * from this. Let's ignore this and perhaps stuff will not break. = */ if (v3proto) - goto error; + return -1; } =20 if (priv->job.current->status =3D=3D VIR_DOMAIN_JOB_STATUS_POSTCOPY) - inPostCopy =3D true; + *inPostCopy =3D true; =20 if (!(flags & VIR_MIGRATE_PAUSED)) { if (qemuProcessStartCPUs(driver, vm, - inPostCopy ? VIR_DOMAIN_RUNNING_POSTCOPY - : VIR_DOMAIN_RUNNING_MIGRATED, + *inPostCopy ? VIR_DOMAIN_RUNNING_POSTCOPY + : VIR_DOMAIN_RUNNING_MIGRATED, VIR_ASYNC_JOB_MIGRATION_IN) < 0) { if (virGetLastErrorCode() =3D=3D VIR_ERR_OK) virReportError(VIR_ERR_INTERNAL_ERROR, @@ -6006,11 +5933,11 @@ qemuMigrationDstFinish(virQEMUDriver *driver, * things up. */ if (v3proto) - goto error; + return -1; } =20 - if (inPostCopy) - doKill =3D false; + if (*inPostCopy) + *doKill =3D false; } =20 if (mig->jobData) { @@ -6025,11 +5952,11 @@ qemuMigrationDstFinish(virQEMUDriver *driver, qemuDomainJobDataUpdateDowntime(jobData); } =20 - if (inPostCopy && + if (*inPostCopy && qemuMigrationDstWaitForCompletion(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, false) < 0) { - goto error; + return -1; } =20 if (jobData) { @@ -6039,6 +5966,106 @@ qemuMigrationDstFinish(virQEMUDriver *driver, QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION); } =20 + return 0; +} + + +virDomainPtr +qemuMigrationDstFinish(virQEMUDriver *driver, + virConnectPtr dconn, + virDomainObj *vm, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + unsigned long flags, + int retcode, + bool v3proto) +{ + virDomainPtr dom =3D NULL; + g_autoptr(qemuMigrationCookie) mig =3D NULL; + virErrorPtr orig_err =3D NULL; + int cookie_flags =3D 0; + qemuDomainObjPrivate *priv =3D vm->privateData; + qemuDomainJobPrivate *jobPriv =3D priv->job.privateData; + unsigned short port; + unsigned long long timeReceived =3D 0; + virObjectEvent *event; + bool inPostCopy =3D false; + bool doKill =3D true; + int rc; + + VIR_DEBUG("driver=3D%p, dconn=3D%p, vm=3D%p, cookiein=3D%s, cookieinle= n=3D%d, " + "cookieout=3D%p, cookieoutlen=3D%p, flags=3D0x%lx, retcode= =3D%d", + driver, dconn, vm, NULLSTR(cookiein), cookieinlen, + cookieout, cookieoutlen, flags, retcode); + + port =3D priv->migrationPort; + priv->migrationPort =3D 0; + + if (!qemuMigrationJobIsActive(vm, VIR_ASYNC_JOB_MIGRATION_IN)) { + qemuMigrationDstErrorReport(driver, vm->def->name); + goto cleanup; + } + + ignore_value(virTimeMillisNow(&timeReceived)); + + qemuMigrationJobStartPhase(vm, + v3proto ? QEMU_MIGRATION_PHASE_FINISH3 + : QEMU_MIGRATION_PHASE_FINISH2); + + qemuDomainCleanupRemove(vm, qemuMigrationDstPrepareCleanup); + g_clear_pointer(&priv->job.completed, virDomainJobDataFree); + + cookie_flags =3D QEMU_MIGRATION_COOKIE_NETWORK | + QEMU_MIGRATION_COOKIE_STATS | + QEMU_MIGRATION_COOKIE_NBD; + /* Some older versions of libvirt always send persistent XML in the co= okie + * even though VIR_MIGRATE_PERSIST_DEST was not used. */ + cookie_flags |=3D QEMU_MIGRATION_COOKIE_PERSISTENT; + + if (!(mig =3D qemuMigrationCookieParse(driver, vm->def, priv->origname= , priv, + cookiein, cookieinlen, cookie_fla= gs))) + goto error; + + if (flags & VIR_MIGRATE_OFFLINE) { + if (retcode =3D=3D 0 && + qemuMigrationDstPersist(driver, vm, mig, false) =3D=3D 0) { + dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, -1); + + if (dom && + qemuMigrationCookieFormat(mig, driver, vm, + QEMU_MIGRATION_DESTINATION, + cookieout, cookieoutlen, + QEMU_MIGRATION_COOKIE_STATS) < 0) + VIR_WARN("Unable to encode migration cookie"); + } + + qemuMigrationJobFinish(vm); + goto cleanup; + } + + if (retcode !=3D 0) { + /* Check for a possible error on the monitor in case Finish was ca= lled + * earlier than monitor EOF handler got a chance to process the er= ror + */ + qemuDomainCheckMonitor(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN); + goto error; + } + + if (!virDomainObjIsActive(vm)) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("guest unexpectedly quit")); + qemuMigrationDstErrorReport(driver, vm->def->name); + goto error; + } + + rc =3D qemuMigrationDstFinishFresh(driver, vm, mig, flags, v3proto, + timeReceived, &doKill, &inPostCopy); + if (rc < 0 || + !(dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, vm->de= f->id))) + goto error; + if (qemuMigrationCookieFormat(mig, driver, vm, QEMU_MIGRATION_DESTINATION, cookieout, cookieoutlen, @@ -6048,12 +6075,9 @@ qemuMigrationDstFinish(virQEMUDriver *driver, qemuMigrationDstComplete(driver, vm, inPostCopy, VIR_ASYNC_JOB_MIGRATION_IN); =20 - dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, vm->def->id); - qemuMigrationJobFinish(vm); =20 cleanup: - g_clear_pointer(&jobData, virDomainJobDataFree); virPortAllocatorRelease(port); if (priv->mon) qemuMonitorSetDomainLog(priv->mon, NULL, NULL, NULL); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196306; cv=none; d=zohomail.com; s=zohoarc; b=ODanVw2CTvurYCCLhzyk5ypxh5D4McjNEk79gkUz5VHtC9315/V1U2Wmsz2bIC8ue5UYMjkn9n/1tWi4YkAoG4MKj04goSRJzUwl440Hax04eha4/FUWCUG3WFt6kS0KmlEgcb6/M/TkBGdtShzfR+T9vOwf99v+OicBjzTpi3w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196306; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0AsGo5M/6j2XSIn2objbXz3ztTPOYruyag4vGa7ZDkM=; b=gi29lFiJ8V2O0UizOebcxH9Zjl2AROekLbENoRyFsEStMg/NVvp0UnTekkwJ5/gWK9o065AEGz9xLw14ctZ/GbxeDOz20JdO2mMEIvX2eKuRJB3Ya8Y9/rTJnYPG7BnPGuRg7b5/HM4/WzXzj69k0vZNw2cuDC1aLWSe1uzzz8g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196306368398.7229637670089; Tue, 10 May 2022 08:25:06 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-513-6QkCK0h0PceiIBoF2ejLpg-1; Tue, 10 May 2022 11:23:30 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 54C6287AA02; Tue, 10 May 2022 15:22:15 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4133A401E31; Tue, 10 May 2022 15:22:15 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 630D41947BA0; Tue, 10 May 2022 15:22:06 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 6CBC51947B81 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 3184240CFD31; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0FF9A40CFD1A for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 9C51D244608; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196305; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=0AsGo5M/6j2XSIn2objbXz3ztTPOYruyag4vGa7ZDkM=; b=flx/qb83dd8Sr55wUuBKzk+mTYxN6io51/G3ZqRbSlGUbXLlfYM6Ajg2sOg4tngf11l7OF 18KLaf8/FfeCCQkve8mMVOn0TCyaqHZ3VJJMzaL68g4KBKzUoRYXrHa91ySRtLFQLY0mY9 aXG7JE4vJj0TEirsXU5EWfHtUTRe1k0= X-MC-Unique: 6QkCK0h0PceiIBoF2ejLpg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 33/80] qemu: Introduce qemuMigrationDstFinishOffline Date: Tue, 10 May 2022 17:20:54 +0200 Message-Id: <3e79378872c23bdba153202ec27efc073e1bfb75.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196308360100007 Content-Type: text/plain; charset="utf-8" Refactors qemuMigrationDstFinish by moving some parts to a dedicated function for easier introduction of postcopy resume code without duplicating common parts of the Finish phase. The goal is to have the following call graph: - qemuMigrationDstFinish - qemuMigrationDstFinishOffline - qemuMigrationDstFinishActive - qemuMigrationDstFinishFresh - qemuMigrationDstFinishResume Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 385bd91a6b..dcd7ff3597 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5839,6 +5839,32 @@ qemuMigrationDstComplete(virQEMUDriver *driver, } =20 =20 +static virDomainPtr +qemuMigrationDstFinishOffline(virQEMUDriver *driver, + virConnectPtr dconn, + virDomainObj *vm, + qemuMigrationCookie *mig, + char **cookieout, + int *cookieoutlen) +{ + virDomainPtr dom =3D NULL; + + if (qemuMigrationDstPersist(driver, vm, mig, false) < 0) + return NULL; + + dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, -1); + + if (dom && + qemuMigrationCookieFormat(mig, driver, vm, + QEMU_MIGRATION_DESTINATION, + cookieout, cookieoutlen, + QEMU_MIGRATION_COOKIE_STATS) < 0) + VIR_WARN("Unable to encode migration cookie"); + + return dom; +} + + /* * Perform Finish phase of a fresh (i.e., not recovery) migration of an ac= tive * domain. @@ -6029,16 +6055,9 @@ qemuMigrationDstFinish(virQEMUDriver *driver, goto error; =20 if (flags & VIR_MIGRATE_OFFLINE) { - if (retcode =3D=3D 0 && - qemuMigrationDstPersist(driver, vm, mig, false) =3D=3D 0) { - dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, -1); - - if (dom && - qemuMigrationCookieFormat(mig, driver, vm, - QEMU_MIGRATION_DESTINATION, - cookieout, cookieoutlen, - QEMU_MIGRATION_COOKIE_STATS) < 0) - VIR_WARN("Unable to encode migration cookie"); + if (retcode =3D=3D 0) { + dom =3D qemuMigrationDstFinishOffline(driver, dconn, vm, mig, + cookieout, cookieoutlen); } =20 qemuMigrationJobFinish(vm); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196194; cv=none; d=zohomail.com; s=zohoarc; b=ZWsOK38/P2lttPq1TM69qJ8lAS9bsUBzXM1Wfkzav2jMCrkexsTi8EQtL9bhrVPXchtjdjR+CzhTqRT20abeXzuBJv+VISb1oj001WhL6M8M+jhpHf234MUYZfqOFVf9pZOfcG4dyrtVAI26I9odm0bCwssMgoKNwAIHxZ3cD7g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196194; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ZHuMKCce06LzgX+tm4DLzdtWdL77SZcWK0sPVbjUwMs=; b=eAonV8KjMkvNZpJTKnh5ZbKy7M/bnrpQzl4TtOr4R1uKcfl8R5a+Nv9yfOS4BeNNLTttK2J+LuoTP1Uukw0LKkLJeUwYiweQsv65pGtLyXk3LPwhLdNWv4MUimOLZDHgxHdarf9AhVRTJNrMCkEu1qbEH8k24uj1Hn79gXcM6FI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196194976841.9201933133344; Tue, 10 May 2022 08:23:14 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-191-Ci4oWWwjNaqFmfMFHVaHUA-1; Tue, 10 May 2022 11:22:32 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2468010726AC; Tue, 10 May 2022 15:21:57 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 10F9C14E1D8A; Tue, 10 May 2022 15:21:57 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id A06CB1940356; Tue, 10 May 2022 15:21:53 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 7359C1947072 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 3460940CFD1A; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1095140CFD29 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 9D8F2244609; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196193; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=ZHuMKCce06LzgX+tm4DLzdtWdL77SZcWK0sPVbjUwMs=; b=deezPKdMy2bHviBG+NLbUp+qzvOHuPVqCJih218eFKg2HRdc0C9Uu/tTB2a72PhLU/cLkO EnopcqOzRVtUYCpzRRWvks3H32erFjVeaumTSP9An5sXqVmHGCCbXfIk+vKqVtWHjyRmAE 16KSC2+oLXpSEienN50CLwavxCjOReo= X-MC-Unique: Ci4oWWwjNaqFmfMFHVaHUA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 34/80] qemu: Separate cookie parsing for qemuMigrationDstFinishOffline Date: Tue, 10 May 2022 17:20:55 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196196802100001 Content-Type: text/plain; charset="utf-8" To keep all cookie handling (parsing and formatting) in the same function. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index dcd7ff3597..170d99d789 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5843,11 +5843,19 @@ static virDomainPtr qemuMigrationDstFinishOffline(virQEMUDriver *driver, virConnectPtr dconn, virDomainObj *vm, - qemuMigrationCookie *mig, + int cookie_flags, + const char *cookiein, + int cookieinlen, char **cookieout, int *cookieoutlen) { virDomainPtr dom =3D NULL; + qemuDomainObjPrivate *priv =3D vm->privateData; + g_autoptr(qemuMigrationCookie) mig =3D NULL; + + if (!(mig =3D qemuMigrationCookieParse(driver, vm->def, priv->origname= , priv, + cookiein, cookieinlen, cookie_fla= gs))) + return NULL; =20 if (qemuMigrationDstPersist(driver, vm, mig, false) < 0) return NULL; @@ -6050,13 +6058,11 @@ qemuMigrationDstFinish(virQEMUDriver *driver, * even though VIR_MIGRATE_PERSIST_DEST was not used. */ cookie_flags |=3D QEMU_MIGRATION_COOKIE_PERSISTENT; =20 - if (!(mig =3D qemuMigrationCookieParse(driver, vm->def, priv->origname= , priv, - cookiein, cookieinlen, cookie_fla= gs))) - goto error; - if (flags & VIR_MIGRATE_OFFLINE) { if (retcode =3D=3D 0) { - dom =3D qemuMigrationDstFinishOffline(driver, dconn, vm, mig, + dom =3D qemuMigrationDstFinishOffline(driver, dconn, vm, + cookie_flags, + cookiein, cookieinlen, cookieout, cookieoutlen); } =20 @@ -6064,6 +6070,10 @@ qemuMigrationDstFinish(virQEMUDriver *driver, goto cleanup; } =20 + if (!(mig =3D qemuMigrationCookieParse(driver, vm->def, priv->origname= , priv, + cookiein, cookieinlen, cookie_fla= gs))) + goto error; + if (retcode !=3D 0) { /* Check for a possible error on the monitor in case Finish was ca= lled * earlier than monitor EOF handler got a chance to process the er= ror --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196244; cv=none; d=zohomail.com; s=zohoarc; b=Y7CGGyMhDPorq2MOy5N3kbY46+dIppQr2y6ie8vvDYb/+vCqMFpOkp52bFY0/pxCL3rRVSml/JpOmM4teIlS69nPfimwJ0WE0a8k8BQdsErYeM/6dCpEG6gqQw5oa7cWSaLwv7nXRQlfqWGlrv3Y37s9FSs8HKC4E6U/4UlKUVA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196244; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5X8lIL9QvWEYYGqM4BWtOkbmXLULmOenV185rb/wI1Y=; b=Zk+Xis+7cw9cj4Virrxu23hBb5kT+I1agjRXgkISt92hQBbuspFcp1T1/3iNOFE6ZMdjCtVcu5KKCkxYLKDrmXu5Hkn7N1DmnoQS3HlV3cbOF74A3NyAgiFCuVwbwZZgV/QW7UgEGPmgywuBMM81lY6HNzHBMjyPzwJaqZupScQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196244868712.8990464399469; Tue, 10 May 2022 08:24:04 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-107-PVBHY1Q8Psq-ndRJYPV2WA-1; Tue, 10 May 2022 11:22:52 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2BB11382ECED; Tue, 10 May 2022 15:21:56 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 14B4540D1B9A; Tue, 10 May 2022 15:21:56 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 3A789194706B; Tue, 10 May 2022 15:21:53 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5BB2C1947077 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 4A73014E0B4C; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0E89814E0B4D for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 9EE3624460A; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196243; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=5X8lIL9QvWEYYGqM4BWtOkbmXLULmOenV185rb/wI1Y=; b=AlGeHTVMMhYm2TMofdzZcw3aOqmtMNni7pWqFolDs3FQzkzP007AHCrgSq6M3UqTFjztmO OlC7jhutcHJeKXKiqBg/BCAiB6qA5OzyENxPfDrGFnpSEPTBuJW1YLyn8ajHwYki+Grtdi eiQRhZsHzNIiX/8qx4J5d9Spu4kpGD4= X-MC-Unique: PVBHY1Q8Psq-ndRJYPV2WA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 35/80] qemu: Introduce qemuMigrationDstFinishActive Date: Tue, 10 May 2022 17:20:56 +0200 Message-Id: <7d9fb1dec92f782970ed97a61137bea922da9efe.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196245055100003 Content-Type: text/plain; charset="utf-8" Refactors qemuMigrationDstFinish by moving some parts to a dedicated function for easier introduction of postcopy resume code without duplicating common parts of the Finish phase. The goal is to have the following call graph: - qemuMigrationDstFinish - qemuMigrationDstFinishOffline - qemuMigrationDstFinishActive - qemuMigrationDstFinishFresh - qemuMigrationDstFinishResume Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 173 +++++++++++++++++++++++--------------- 1 file changed, 103 insertions(+), 70 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 170d99d789..d02e8132e4 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -6004,71 +6004,32 @@ qemuMigrationDstFinishFresh(virQEMUDriver *driver, } =20 =20 -virDomainPtr -qemuMigrationDstFinish(virQEMUDriver *driver, - virConnectPtr dconn, - virDomainObj *vm, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - unsigned long flags, - int retcode, - bool v3proto) +static virDomainPtr +qemuMigrationDstFinishActive(virQEMUDriver *driver, + virConnectPtr dconn, + virDomainObj *vm, + int cookie_flags, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + unsigned long flags, + int retcode, + bool v3proto, + unsigned long long timeReceived, + virErrorPtr *orig_err) { virDomainPtr dom =3D NULL; g_autoptr(qemuMigrationCookie) mig =3D NULL; - virErrorPtr orig_err =3D NULL; - int cookie_flags =3D 0; qemuDomainObjPrivate *priv =3D vm->privateData; qemuDomainJobPrivate *jobPriv =3D priv->job.privateData; - unsigned short port; - unsigned long long timeReceived =3D 0; virObjectEvent *event; bool inPostCopy =3D false; bool doKill =3D true; int rc; =20 - VIR_DEBUG("driver=3D%p, dconn=3D%p, vm=3D%p, cookiein=3D%s, cookieinle= n=3D%d, " - "cookieout=3D%p, cookieoutlen=3D%p, flags=3D0x%lx, retcode= =3D%d", - driver, dconn, vm, NULLSTR(cookiein), cookieinlen, - cookieout, cookieoutlen, flags, retcode); - - port =3D priv->migrationPort; - priv->migrationPort =3D 0; - - if (!qemuMigrationJobIsActive(vm, VIR_ASYNC_JOB_MIGRATION_IN)) { - qemuMigrationDstErrorReport(driver, vm->def->name); - goto cleanup; - } - - ignore_value(virTimeMillisNow(&timeReceived)); - - qemuMigrationJobStartPhase(vm, - v3proto ? QEMU_MIGRATION_PHASE_FINISH3 - : QEMU_MIGRATION_PHASE_FINISH2); - - qemuDomainCleanupRemove(vm, qemuMigrationDstPrepareCleanup); - g_clear_pointer(&priv->job.completed, virDomainJobDataFree); - - cookie_flags =3D QEMU_MIGRATION_COOKIE_NETWORK | - QEMU_MIGRATION_COOKIE_STATS | - QEMU_MIGRATION_COOKIE_NBD; - /* Some older versions of libvirt always send persistent XML in the co= okie - * even though VIR_MIGRATE_PERSIST_DEST was not used. */ - cookie_flags |=3D QEMU_MIGRATION_COOKIE_PERSISTENT; - - if (flags & VIR_MIGRATE_OFFLINE) { - if (retcode =3D=3D 0) { - dom =3D qemuMigrationDstFinishOffline(driver, dconn, vm, - cookie_flags, - cookiein, cookieinlen, - cookieout, cookieoutlen); - } - - qemuMigrationJobFinish(vm); - goto cleanup; - } + VIR_DEBUG("vm=3D%p, flags=3D0x%lx, retcode=3D%d", + vm, flags, retcode); =20 if (!(mig =3D qemuMigrationCookieParse(driver, vm->def, priv->origname= , priv, cookiein, cookieinlen, cookie_fla= gs))) @@ -6106,25 +6067,12 @@ qemuMigrationDstFinish(virQEMUDriver *driver, =20 qemuMigrationJobFinish(vm); =20 - cleanup: - virPortAllocatorRelease(port); - if (priv->mon) - qemuMonitorSetDomainLog(priv->mon, NULL, NULL, NULL); - VIR_FREE(priv->origname); - virDomainObjEndAPI(&vm); - virErrorRestore(&orig_err); - - /* Set a special error if Finish is expected to return NULL as a resul= t of - * successful call with retcode !=3D 0 - */ - if (retcode !=3D 0 && !dom && virGetLastErrorCode() =3D=3D VIR_ERR_OK) - virReportError(VIR_ERR_MIGRATE_FINISH_OK, NULL); return dom; =20 error: /* Need to save the current error, in case shutting down the process * overwrites it. */ - virErrorPreserveLast(&orig_err); + virErrorPreserveLast(orig_err); =20 if (virDomainObjIsActive(vm)) { if (doKill) { @@ -6155,7 +6103,92 @@ qemuMigrationDstFinish(virQEMUDriver *driver, if (!virDomainObjIsActive(vm)) qemuDomainRemoveInactive(driver, vm); =20 - goto cleanup; + return NULL; +} + + +virDomainPtr +qemuMigrationDstFinish(virQEMUDriver *driver, + virConnectPtr dconn, + virDomainObj *vm, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + unsigned long flags, + int retcode, + bool v3proto) +{ + virDomainPtr dom =3D NULL; + virErrorPtr orig_err =3D NULL; + int cookie_flags =3D 0; + qemuDomainObjPrivate *priv =3D vm->privateData; + unsigned short port; + unsigned long long timeReceived =3D 0; + + VIR_DEBUG("driver=3D%p, dconn=3D%p, vm=3D%p, cookiein=3D%s, cookieinle= n=3D%d, " + "cookieout=3D%p, cookieoutlen=3D%p, flags=3D0x%lx, retcode= =3D%d", + driver, dconn, vm, NULLSTR(cookiein), cookieinlen, + cookieout, cookieoutlen, flags, retcode); + + port =3D priv->migrationPort; + priv->migrationPort =3D 0; + + if (!qemuMigrationJobIsActive(vm, VIR_ASYNC_JOB_MIGRATION_IN)) { + qemuMigrationDstErrorReport(driver, vm->def->name); + goto cleanup; + } + + ignore_value(virTimeMillisNow(&timeReceived)); + + qemuMigrationJobStartPhase(vm, + v3proto ? QEMU_MIGRATION_PHASE_FINISH3 + : QEMU_MIGRATION_PHASE_FINISH2); + + qemuDomainCleanupRemove(vm, qemuMigrationDstPrepareCleanup); + g_clear_pointer(&priv->job.completed, virDomainJobDataFree); + + cookie_flags =3D QEMU_MIGRATION_COOKIE_NETWORK | + QEMU_MIGRATION_COOKIE_STATS | + QEMU_MIGRATION_COOKIE_NBD; + /* Some older versions of libvirt always send persistent XML in the co= okie + * even though VIR_MIGRATE_PERSIST_DEST was not used. */ + cookie_flags |=3D QEMU_MIGRATION_COOKIE_PERSISTENT; + + if (flags & VIR_MIGRATE_OFFLINE) { + if (retcode =3D=3D 0) { + dom =3D qemuMigrationDstFinishOffline(driver, dconn, vm, + cookie_flags, + cookiein, cookieinlen, + cookieout, cookieoutlen); + } + + qemuMigrationJobFinish(vm); + goto cleanup; + } + + dom =3D qemuMigrationDstFinishActive(driver, dconn, vm, cookie_flags, + cookiein, cookieinlen, + cookieout, cookieoutlen, + flags, retcode, v3proto, timeReceiv= ed, + &orig_err); + if (!dom) + goto cleanup; + + cleanup: + virPortAllocatorRelease(port); + if (priv->mon) + qemuMonitorSetDomainLog(priv->mon, NULL, NULL, NULL); + VIR_FREE(priv->origname); + virDomainObjEndAPI(&vm); + virErrorRestore(&orig_err); + + /* Set a special error if Finish is expected to return NULL as a resul= t of + * successful call with retcode !=3D 0 + */ + if (retcode !=3D 0 && !dom && virGetLastErrorCode() =3D=3D VIR_ERR_OK) + virReportError(VIR_ERR_MIGRATE_FINISH_OK, NULL); + return dom; } =20 =20 --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196151; cv=none; d=zohomail.com; s=zohoarc; b=d19NTSe9+zGfBQqP8ZaD4AThZ1CQf7MJ8xKfuG5NTLHKop9I8z1xgModkv3KroEwNDbdNl/nCqHmU/WNMBw3Xvy3Ism/4ivdre3+XZLOAakpTTwe2a1JuTmkRRSIBWVc0Fj50fgh1BT6el5WSXb+SspAx/6Dm3bGBWzSUlovFUM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196151; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=08KCn2F04/5BhMeV+viDJZGwO9mVHmJlheRX6wPijSI=; b=QqE4ocdsa9OnXXa261J2mskSfiaog3wsr8/5klUmoOrg8juXiIWc+zLIiX5hdFRggMEO/b5eLkBDVfdYynd7RW5/a0DX5/bDHoqkoGPVISyBrlUaSSgXo6bkbgORIjeNHvV0kdgsvFUBV+Io7CGDVs7cteo/9zI+sofTWJ5ZfIY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196151396518.8877550011996; Tue, 10 May 2022 08:22:31 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-644-Es-8D8a_NwOsqCUyaxtHKg-1; Tue, 10 May 2022 11:22:19 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 70B6D29324A9; Tue, 10 May 2022 15:21:58 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5CC14403D161; Tue, 10 May 2022 15:21:58 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 2F4641947B9E; Tue, 10 May 2022 15:21:54 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 6F6AD1947B83 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 318A240CFD33; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 104EA40CFD27 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id A039E24460B; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196150; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=08KCn2F04/5BhMeV+viDJZGwO9mVHmJlheRX6wPijSI=; b=YlMdQwa0izwxNVCx2xIcT3vRxLJNjXPXUsoAzcRE8D03vCbs8ePxanwuqY7sVX7zuRGnoQ RCC0PEL2pB5vxMZbHtoJqCt0swE5AqrhqI7b5vmewE56O3Gq105UUeFpwrAecFdBknKY24 qEamV5XT4xa3sunDT64McfM1C7oyQDY= X-MC-Unique: Es-8D8a_NwOsqCUyaxtHKg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 36/80] qemu: Handle migration job in qemuMigrationDstFinish Date: Tue, 10 May 2022 17:20:57 +0200 Message-Id: <2018a84a5d980628eb637b4c85e681db90c45c24.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196152774100001 Content-Type: text/plain; charset="utf-8" The function which started a migration phase should also finish it by calling qemuMigrationJobFinish/qemuMigrationJobContinue so that the code is easier to follow. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index d02e8132e4..b62f7256c4 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -6017,7 +6017,8 @@ qemuMigrationDstFinishActive(virQEMUDriver *driver, int retcode, bool v3proto, unsigned long long timeReceived, - virErrorPtr *orig_err) + virErrorPtr *orig_err, + bool *finishJob) { virDomainPtr dom =3D NULL; g_autoptr(qemuMigrationCookie) mig =3D NULL; @@ -6065,8 +6066,6 @@ qemuMigrationDstFinishActive(virQEMUDriver *driver, qemuMigrationDstComplete(driver, vm, inPostCopy, VIR_ASYNC_JOB_MIGRATION_IN); =20 - qemuMigrationJobFinish(vm); - return dom; =20 error: @@ -6092,12 +6091,10 @@ qemuMigrationDstFinishActive(virQEMUDriver *driver, if (virDomainObjIsFailedPostcopy(vm)) { qemuProcessAutoDestroyRemove(driver, vm); qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); - qemuMigrationJobContinue(vm); + *finishJob =3D false; } else { qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, jobPriv->migParams, priv->job.apiFlags); - - qemuMigrationJobFinish(vm); } =20 if (!virDomainObjIsActive(vm)) @@ -6162,18 +6159,21 @@ qemuMigrationDstFinish(virQEMUDriver *driver, cookiein, cookieinlen, cookieout, cookieoutlen); } + } else { + bool finishJob =3D true; =20 - qemuMigrationJobFinish(vm); - goto cleanup; + dom =3D qemuMigrationDstFinishActive(driver, dconn, vm, cookie_fla= gs, + cookiein, cookieinlen, + cookieout, cookieoutlen, + flags, retcode, v3proto, timeRe= ceived, + &orig_err, &finishJob); + if (!finishJob) { + qemuMigrationJobContinue(vm); + goto cleanup; + } } =20 - dom =3D qemuMigrationDstFinishActive(driver, dconn, vm, cookie_flags, - cookiein, cookieinlen, - cookieout, cookieoutlen, - flags, retcode, v3proto, timeReceiv= ed, - &orig_err); - if (!dom) - goto cleanup; + qemuMigrationJobFinish(vm); =20 cleanup: virPortAllocatorRelease(port); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196206; cv=none; d=zohomail.com; s=zohoarc; b=eUnU9TJPqF62q8L36ZQ1VUWtWRF3Fv6CipzMv9Tg1FWv2+/mAwBLsDTxIh6rPbh+oU4ml206Tq85ajRho+G0SBAmfMGv1gdeQ24Q9rTEJ4E4BiKySpUtu0T/wZlMcVLcvY221UYwV4QCnsFBle8g2ikkq1FGhmPDeeI9hyUgBU0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196206; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=9i6Qz7W93SmRMaYbYdUmUHjlWoobNTFjf5fqb2Bw+gs=; b=RFu2BRFSKvsfC7dqd/Gajc2oZUoQRXT5Ai/ieyt1tbVtD5+E3jQ48c0Sqs0wNKW1dsaAOTzSLMF+2jmnBJmmYlRSGeWEDdLjoO9JO8radALDrekzzL8UPlILg/T8Bpau6lOMMvbB7grmgBUpsSVoZY+jeQkQnxoogMfF1apPYoc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196206110294.55547860496904; Tue, 10 May 2022 08:23:26 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-401-F_Z4K5wjN3KBicyZywx7sQ-1; Tue, 10 May 2022 11:23:12 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6FDC386C16E; Tue, 10 May 2022 15:22:12 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5B1D115088B3; Tue, 10 May 2022 15:22:12 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id BB62D1947B93; Tue, 10 May 2022 15:22:01 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 7EB001947055 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 4A2F94010E46; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0E69240D282C for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id A1886244610; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196204; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=9i6Qz7W93SmRMaYbYdUmUHjlWoobNTFjf5fqb2Bw+gs=; b=hNrGnpvJemxQNM19X5jDGRQoBUokejJJM6Zk2nYelIHOGfPqYVVFkCsuAIixU3vt4JkZf7 k+AC2gtcdAcuqeOSOQyEwYllurULuAWFBLVA75xvj5bu9TlJiCjfBy/NWn37f0qPQ1wA2N Ju4FaEW5q9MqqE5tNnoGNKIJMGSd7ZI= X-MC-Unique: F_Z4K5wjN3KBicyZywx7sQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 37/80] qemu: Make final part of migration Confirm phase reusable Date: Tue, 10 May 2022 17:20:58 +0200 Message-Id: <8b0b560a9fc906e4b9f4430953b776e078a0dea0.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196206999100003 Content-Type: text/plain; charset="utf-8" By separating it into a dedicated qemuMigrationSrcComplete function which can be later called in other places. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 70 ++++++++++++++++++++++++--------------- src/qemu/qemu_migration.h | 5 +++ 2 files changed, 48 insertions(+), 27 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index b62f7256c4..903c1dbf6b 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3518,6 +3518,48 @@ qemuMigrationAnyPrepareDef(virQEMUDriver *driver, } =20 =20 +void +qemuMigrationSrcComplete(virQEMUDriver *driver, + virDomainObj *vm, + virDomainAsyncJob asyncJob) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + virDomainJobData *jobData =3D priv->job.completed; + virObjectEvent *event; + int reason; + + if (jobData) { + /* We need to refresh migration statistics after a completed post-= copy + * migration since jobData contains obsolete data from the time we + * switched to post-copy mode. + */ + if (virDomainObjGetState(vm, &reason) =3D=3D VIR_DOMAIN_PAUSED && + reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY) { + VIR_DEBUG("Refreshing migration statistics"); + if (qemuMigrationAnyFetchStats(driver, vm, VIR_ASYNC_JOB_MIGRA= TION_OUT, + jobData, NULL) < 0) + VIR_WARN("Could not refresh migration statistics"); + } + + qemuDomainJobDataUpdateTime(jobData); + } + + /* If guest uses SPICE and supports seamless migration we have to hold + * up domain shutdown until SPICE server transfers its data */ + qemuMigrationSrcWaitForSpice(vm); + + qemuProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_MIGRATED, asyncJob, + VIR_QEMU_PROCESS_STOP_MIGRATED); + virDomainAuditStop(vm, "migrated"); + + event =3D virDomainEventLifecycleNewFromObj(vm, + VIR_DOMAIN_EVENT_STOPPED, + VIR_DOMAIN_EVENT_STOPPED_MIGRATED); + virObjectEventStateQueue(driver->domainEventState, event); + qemuDomainEventEmitJobCompleted(driver, vm); +} + + static int qemuMigrationSrcConfirmPhase(virQEMUDriver *driver, virDomainObj *vm, @@ -3527,7 +3569,6 @@ qemuMigrationSrcConfirmPhase(virQEMUDriver *driver, int retcode) { g_autoptr(qemuMigrationCookie) mig =3D NULL; - virObjectEvent *event; qemuDomainObjPrivate *priv =3D vm->privateData; qemuDomainJobPrivate *jobPriv =3D priv->job.privateData; virDomainJobData *jobData =3D NULL; @@ -3564,21 +3605,9 @@ qemuMigrationSrcConfirmPhase(virQEMUDriver *driver, =20 /* Update times with the values sent by the destination daemon */ if (mig->jobData && jobData) { - int reason; qemuDomainJobDataPrivate *privJob =3D jobData->privateData; qemuDomainJobDataPrivate *privMigJob =3D mig->jobData->privateData; =20 - /* We need to refresh migration statistics after a completed post-= copy - * migration since priv->job.completed contains obsolete data from= the - * time we switched to post-copy mode. - */ - if (virDomainObjGetState(vm, &reason) =3D=3D VIR_DOMAIN_PAUSED && - reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY && - qemuMigrationAnyFetchStats(driver, vm, VIR_ASYNC_JOB_MIGRATION= _OUT, - jobData, NULL) < 0) - VIR_WARN("Could not refresh migration statistics"); - - qemuDomainJobDataUpdateTime(jobData); jobData->timeDeltaSet =3D mig->jobData->timeDeltaSet; jobData->timeDelta =3D mig->jobData->timeDelta; privJob->stats.mig.downtime_set =3D privMigJob->stats.mig.downtime= _set; @@ -3592,20 +3621,7 @@ qemuMigrationSrcConfirmPhase(virQEMUDriver *driver, * If something failed, resume CPUs, but only if we didn't use post-co= py. */ if (retcode =3D=3D 0) { - /* If guest uses SPICE and supports seamless migration we have to = hold - * up domain shutdown until SPICE server transfers its data */ - qemuMigrationSrcWaitForSpice(vm); - - qemuProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_MIGRATED, - VIR_ASYNC_JOB_MIGRATION_OUT, - VIR_QEMU_PROCESS_STOP_MIGRATED); - virDomainAuditStop(vm, "migrated"); - - event =3D virDomainEventLifecycleNewFromObj(vm, - VIR_DOMAIN_EVENT_STOPPED, - VIR_DOMAIN_EVENT_STOPPED_MIGRATED= ); - virObjectEventStateQueue(driver->domainEventState, event); - qemuDomainEventEmitJobCompleted(driver, vm); + qemuMigrationSrcComplete(driver, vm, VIR_ASYNC_JOB_MIGRATION_OUT); } else { virErrorPtr orig_err; int reason; diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index ecb0ad6302..1d6051859b 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -205,6 +205,11 @@ qemuMigrationSrcConfirm(virQEMUDriver *driver, unsigned int flags, int cancelled); =20 +void +qemuMigrationSrcComplete(virQEMUDriver *driver, + virDomainObj *vm, + virDomainAsyncJob asyncJob); + bool qemuMigrationSrcIsAllowed(virQEMUDriver *driver, virDomainObj *vm, --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196197; cv=none; d=zohomail.com; s=zohoarc; b=n+2V1rgSJWwN4KsypDeWh+LJC7+vBBa3YmFOiWdnYQVSpsqPbbAAyS9Fu3/GG+IG9o0cvkgwBdjbOyFkMwuzxhiEz8pLGP+JSRkeGvA9daOUbU2gOTrqFRml+o3hGlwWKw8ZusYghQR0AlzbMy6T1aksfmcrbzaGuTb+vwC09VA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196197; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=j4u0buK19g2EPpk0YNP/tQ8c3jvAR6Sao8XlPSXDnzk=; b=CHoP+Lhg02/Y2tBqQztGWLmqbsbh5yD4v9ZAvwNJa9EDoit5DDL857cWBr9R8Joea23cyrCfp2Kngq1bb8QhK+tVmWQ4oEVUnym+HgkLNOyHsDXBQVhQxRxoquKu0tqpjTofrnvshccsGqTURzSE7+urVNWzAiNo/Rl/Wmz/Z18= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196197915753.7300751406442; Tue, 10 May 2022 08:23:17 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-247-zxzoQOL0OMaOBObupCBosA-1; Tue, 10 May 2022 11:22:47 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B624019705DD; Tue, 10 May 2022 15:22:00 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id A18DD15063C0; Tue, 10 May 2022 15:22:00 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 2E5C9193F6DC; Tue, 10 May 2022 15:21:55 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5586E194705F for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 2E89F40D282D; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0D93540D2825 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id A2E0E244612; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196196; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=j4u0buK19g2EPpk0YNP/tQ8c3jvAR6Sao8XlPSXDnzk=; b=GUATBJrfbY7FVvhMErkhmZRrnT8zIVGvojoWCXH2jMsGOWyUwhW7k9syaHT+iXkrT6ri1G ixBEj44C7s5upNbnMbp0F271RSpPT8Iu2Td4q5LlPKem4EE9NEwKE5IZDYdNv4Sns87MWp AuklrUYsDyh1UkDnmHizJZZZnE04xHs= X-MC-Unique: zxzoQOL0OMaOBObupCBosA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 38/80] qemu: Make sure migrationPort is released even in callbacks Date: Tue, 10 May 2022 17:20:59 +0200 Message-Id: <3cb567e78e436ceefd7a69201b006ffa0d606d3e.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196198806100004 Content-Type: text/plain; charset="utf-8" Normally migrationPort is released in the Finish phase, but we need to make sure it is properly released also in case qemuMigrationDstFinish is not called at all. Currently the only callback which is called in this situation qemuMigrationDstPrepareCleanup which already releases migrationPort. This patch adds similar handling to additional callbacks which will be used in the future. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 3 +++ src/qemu/qemu_process.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 903c1dbf6b..ad9be3e68e 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5852,6 +5852,9 @@ qemuMigrationDstComplete(virQEMUDriver *driver, =20 qemuMigrationParamsReset(driver, vm, asyncJob, jobPriv->migParams, priv->job.apiFlags); + + virPortAllocatorRelease(priv->migrationPort); + priv->migrationPort =3D 0; } =20 =20 diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index c3a966983f..d92cd8cb5e 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3488,6 +3488,8 @@ qemuProcessCleanupMigrationJob(virQEMUDriver *driver, priv->job.asyncJob !=3D VIR_ASYNC_JOB_MIGRATION_OUT) return; =20 + virPortAllocatorRelease(priv->migrationPort); + priv->migrationPort =3D 0; qemuDomainObjDiscardAsyncJob(vm); } =20 --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196431; cv=none; d=zohomail.com; s=zohoarc; b=RIHpILE08fzfaDKm0/kOUJ1bZ6KSpE/joigAPoTZwegiYKxFElEnN8Y6JgjMvcewBPauMVvqrhtrmDPSxfar1nmBRLFp41umKkZ/9nIbuPbOB60F+Od2rEjNVJRoJjQA25TNTZ8YYbrjzzZvzbaoh8QUMRnhVGhACS4J7itP2cY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196431; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=snvERZd+vuXSb73kO3KlCOtMinEOqqvVIfmQ0IhjxRU=; b=SpqKT7c+ULcbWV+/sEdvnxeRkO+R+S0awjyzBkLzN9K/Fzwdz5XOsU2+Az70Q/455m8Yy2Lky6ro6LP5tLkV1HFRF/Mz1gEW9knSN11p3GzgaoLGbinqouEkO7eSn3zlR6OHe/6hxJ7O5zIrAXpXvHjREaz3vQK3cg73kJbzZ94= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196431600389.4990639749899; Tue, 10 May 2022 08:27:11 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-321-vm2pn78ONZ2Q3C9dLA8ZXg-1; Tue, 10 May 2022 11:23:30 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6AE6684AC60; Tue, 10 May 2022 15:22:18 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 556B740314F; Tue, 10 May 2022 15:22:18 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 0ED7B194E010; Tue, 10 May 2022 15:22:08 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 68B5D19451EC for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 39D21463E1A; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1A02C463E1C for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id A47A1244613; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196430; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=snvERZd+vuXSb73kO3KlCOtMinEOqqvVIfmQ0IhjxRU=; b=hzPtEDvvz0SjzUeleCL9aWkW618kqs7viC61FBthfE54odwG2JPPJF17f8HtHo1LbCKpRM LdXizrPj3DyPLYMqf7Ij75+207cpmcpgb37Wlo70WEgU3tRqF1+JB3bKK1DIhSy/1A4uXL 77+41PRGpzQOpCxnRyq7nj1oHlMzA70= X-MC-Unique: vm2pn78ONZ2Q3C9dLA8ZXg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 39/80] qemu: Pass qemuDomainJobObj to qemuMigrationDstComplete Date: Tue, 10 May 2022 17:21:00 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196433325100003 Content-Type: text/plain; charset="utf-8" When reconnecting to an active domains we need to use a different job structure than the one referenced from the VM object. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 11 ++++++----- src/qemu/qemu_migration.h | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index ad9be3e68e..6938e0fafc 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5804,10 +5804,11 @@ void qemuMigrationDstComplete(virQEMUDriver *driver, virDomainObj *vm, bool inPostCopy, - virDomainAsyncJob asyncJob) + virDomainAsyncJob asyncJob, + qemuDomainJobObj *job) { qemuDomainObjPrivate *priv =3D vm->privateData; - qemuDomainJobPrivate *jobPriv =3D priv->job.privateData; + qemuDomainJobPrivate *jobPriv =3D job->privateData; virObjectEvent *event; =20 if (inPostCopy) { @@ -5848,10 +5849,10 @@ qemuMigrationDstComplete(virQEMUDriver *driver, * is obsolete anyway. */ if (inPostCopy) - g_clear_pointer(&priv->job.completed, virDomainJobDataFree); + g_clear_pointer(&job->completed, virDomainJobDataFree); =20 qemuMigrationParamsReset(driver, vm, asyncJob, jobPriv->migParams, - priv->job.apiFlags); + job->apiFlags); =20 virPortAllocatorRelease(priv->migrationPort); priv->migrationPort =3D 0; @@ -6083,7 +6084,7 @@ qemuMigrationDstFinishActive(virQEMUDriver *driver, VIR_WARN("Unable to encode migration cookie"); =20 qemuMigrationDstComplete(driver, vm, inPostCopy, - VIR_ASYNC_JOB_MIGRATION_IN); + VIR_ASYNC_JOB_MIGRATION_IN, &priv->job); =20 return dom; =20 diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index 1d6051859b..c099cf99cf 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -195,7 +195,8 @@ void qemuMigrationDstComplete(virQEMUDriver *driver, virDomainObj *vm, bool inPostCopy, - virDomainAsyncJob asyncJob); + virDomainAsyncJob asyncJob, + qemuDomainJobObj *job); =20 int qemuMigrationSrcConfirm(virQEMUDriver *driver, --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196183; cv=none; d=zohomail.com; s=zohoarc; b=Y/lV7M5LbarYtWD2dzWXbIF4QxoHdrBl/ZBfM4sY6G70xwr+Hj5cg7TRQLcvFTVH6yXjZRKEs5Tw41s8EYBaRILz1LaedNaQ+5LzbUhnVVa9cOb1WJpE0UW5tVaYSDve9y0kjAZ+ASGMMzMYmuq82pDJKw0Cq+LRfRvr/bsJ5k0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196183; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+aP0USxHDmQto1+ptEiuoQ15iSF10mRCKWDuQEaH85o=; b=ldZKBbjAT9CKBEDkLGRNOpn3maBmFJvKe4XaJJAeWkJWMJ8CzBV6fNq4y6zzpp/LD+P8/y8Dh72cNgyH027vwnSWeBbj66SNt20MBcwQZqNg/9L3+2+0jSVAn+AcenheyVmPOYDVehm59hJB2k5HhVxJMeOjWrIye7S14Ladq+0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 165219618385752.62500428078329; Tue, 10 May 2022 08:23:03 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-179-73ZR4dUYPrKz41sIJ0v2Rg-1; Tue, 10 May 2022 11:22:56 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C380D10AF800; Tue, 10 May 2022 15:22:04 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 79E72403D165; Tue, 10 May 2022 15:21:59 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id AD5481940370; Tue, 10 May 2022 15:21:54 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 8735F1947B8B for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 6495554B096; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2851E54B07D for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id A5C7B244614; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196182; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=+aP0USxHDmQto1+ptEiuoQ15iSF10mRCKWDuQEaH85o=; b=bBRgHe+lz7/nj36PSYEKA3BBIDmzPMl3LSPKfZodMQSJQU7cPDzbuz3Q8B3WldalLDG1PB dgDWLMygfxPg3XJyBKUvIKgO8dPJoBP3XSY8FD46xex0+N7tW8cMXTccYj6jbhIHvB4f+6 LBdXOzE1kwiHUQHKeLn8DcHABWdGFzw= X-MC-Unique: 73ZR4dUYPrKz41sIJ0v2Rg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 40/80] qemu: Finish completed unattended migration Date: Tue, 10 May 2022 17:21:01 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196184724100005 Content-Type: text/plain; charset="utf-8" So far migration could only be completed while a migration API was running and waiting for the migration to finish. In case such API could not be called (the connection that initiated the migration is broken) the migration would just be aborted or left in a "don't know what to do" state. But this will change soon and we will be able to successfully complete such migration once we get the corresponding event from QEMU. This is specific to post-copy migration when vCPUs are already running on the destination and we're only waiting for all memory pages to be transferred. Such post-copy migration (which no-one is actively watching) is called unattended migration. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_domain.c | 1 + src/qemu/qemu_domain.h | 1 + src/qemu/qemu_driver.c | 5 +++++ src/qemu/qemu_migration.c | 43 +++++++++++++++++++++++++++++++++++++-- src/qemu/qemu_migration.h | 6 ++++++ src/qemu/qemu_process.c | 18 ++++++++++++++++ 6 files changed, 72 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 7ad84f7080..00e1f0c94e 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -11074,6 +11074,7 @@ qemuProcessEventFree(struct qemuProcessEvent *event) qemuMonitorMemoryDeviceSizeChangeFree(event->data); break; case QEMU_PROCESS_EVENT_PR_DISCONNECT: + case QEMU_PROCESS_EVENT_UNATTENDED_MIGRATION: case QEMU_PROCESS_EVENT_LAST: break; } diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 3ea0426c7e..94520ac97e 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -410,6 +410,7 @@ typedef enum { QEMU_PROCESS_EVENT_RDMA_GID_STATUS_CHANGED, QEMU_PROCESS_EVENT_GUEST_CRASHLOADED, QEMU_PROCESS_EVENT_MEMORY_DEVICE_SIZE_CHANGE, + QEMU_PROCESS_EVENT_UNATTENDED_MIGRATION, =20 QEMU_PROCESS_EVENT_LAST } qemuProcessEventType; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d19115473a..e268d3a478 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4279,6 +4279,11 @@ static void qemuProcessEventHandler(void *data, void= *opaque) case QEMU_PROCESS_EVENT_MEMORY_DEVICE_SIZE_CHANGE: processMemoryDeviceSizeChange(driver, vm, processEvent->data); break; + case QEMU_PROCESS_EVENT_UNATTENDED_MIGRATION: + qemuMigrationProcessUnattended(driver, vm, + processEvent->action, + processEvent->status); + break; case QEMU_PROCESS_EVENT_LAST: break; } diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 6938e0fafc..dacea63610 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5842,8 +5842,11 @@ qemuMigrationDstComplete(virQEMUDriver *driver, =20 qemuDomainSaveStatus(vm); =20 - /* Guest is successfully running, so cancel previous auto destroy */ - qemuProcessAutoDestroyRemove(driver, vm); + /* Guest is successfully running, so cancel previous auto destroy. The= re's + * nothing to remove when we are resuming post-copy migration. + */ + if (!virDomainObjIsFailedPostcopy(vm)) + qemuProcessAutoDestroyRemove(driver, vm); =20 /* Remove completed stats for post-copy, everything but timing fields * is obsolete anyway. @@ -6212,6 +6215,42 @@ qemuMigrationDstFinish(virQEMUDriver *driver, } =20 =20 +void +qemuMigrationProcessUnattended(virQEMUDriver *driver, + virDomainObj *vm, + virDomainAsyncJob job, + qemuMonitorMigrationStatus status) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + qemuMigrationJobPhase phase; + + if (!qemuMigrationJobIsActive(vm, job) || + status !=3D QEMU_MONITOR_MIGRATION_STATUS_COMPLETED) + return; + + VIR_DEBUG("Unattended %s migration of domain %s successfully finished", + job =3D=3D VIR_ASYNC_JOB_MIGRATION_IN ? "incoming" : "outgoi= ng", + vm->def->name); + + if (job =3D=3D VIR_ASYNC_JOB_MIGRATION_IN) + phase =3D QEMU_MIGRATION_PHASE_FINISH3; + else + phase =3D QEMU_MIGRATION_PHASE_CONFIRM3; + + qemuMigrationJobStartPhase(vm, phase); + + if (job =3D=3D VIR_ASYNC_JOB_MIGRATION_IN) + qemuMigrationDstComplete(driver, vm, true, job, &priv->job); + else + qemuMigrationSrcComplete(driver, vm, job); + + qemuMigrationJobFinish(vm); + + if (!virDomainObjIsActive(vm)) + qemuDomainRemoveInactive(driver, vm); +} + + /* Helper function called while vm is active. */ int qemuMigrationSrcToFile(virQEMUDriver *driver, virDomainObj *vm, diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index c099cf99cf..eeb69a52bf 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -211,6 +211,12 @@ qemuMigrationSrcComplete(virQEMUDriver *driver, virDomainObj *vm, virDomainAsyncJob asyncJob); =20 +void +qemuMigrationProcessUnattended(virQEMUDriver *driver, + virDomainObj *vm, + virDomainAsyncJob job, + qemuMonitorMigrationStatus status); + bool qemuMigrationSrcIsAllowed(virQEMUDriver *driver, virDomainObj *vm, diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index d92cd8cb5e..7b347a9061 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -1619,6 +1619,24 @@ qemuProcessHandleMigrationStatus(qemuMonitor *mon G_= GNUC_UNUSED, qemuDomainSaveStatus(vm); } =20 + /* A post-copy migration marked as failed when reconnecting to a domain + * with running migration may actually still be running, but we're not + * watching it in any thread. Let's make sure the migration is properly + * finished in case we get a "completed" event. + */ + if (virDomainObjIsFailedPostcopy(vm) && + priv->job.asyncOwner =3D=3D 0 && + status =3D=3D QEMU_MONITOR_MIGRATION_STATUS_COMPLETED) { + struct qemuProcessEvent *proc =3D g_new0(struct qemuProcessEvent, = 1); + + proc->eventType =3D QEMU_PROCESS_EVENT_UNATTENDED_MIGRATION; + proc->action =3D priv->job.asyncJob; + proc->status =3D status; + proc->vm =3D virObjectRef(vm); + + qemuProcessEventSubmit(driver, &proc); + } + cleanup: virObjectUnlock(vm); virObjectEventStateQueue(driver->domainEventState, event); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196485; cv=none; d=zohomail.com; s=zohoarc; b=ZLAOfDhGdCUQD/iHG5Ts4/65dtsgNn2Cx6Cdwy/wwBY69Rdo0iGuiVEZ+qFaEXs1m7lAlDXlfiBY0dPDa0wLJxPeTjSZkXGmE3rzh8pR1AQerahc5kkbMSTgLkYgOyxXi28VdmBKoEBaCa0QelhcP5wmNCLfnHt+3NoEUETWRIM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196485; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7Kt4APOzBJar6Hn4MxIJ1CuE2d/dOYEeWfd7ZesRofI=; b=l3LJo/odDvsx43eka77CNFNJ9xonRjs5UEdMYd42yOKugfqVxuAClQFIgEq1K1y98soBBLPXfAgi49A3Cj1DLki80Q1qxYxG1MWFTxkRCkbBcfeMuHib2F+hokFrwZa3LS5AS49zC4Iq9Ba02K1mHdXGeDk2BinWIgXQ9wX49vM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196485598512.8362980837642; Tue, 10 May 2022 08:28:05 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-120-cVYRWnRZPU2sl4LQ1TwElg-1; Tue, 10 May 2022 11:23:23 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1DFC91C161B6; Tue, 10 May 2022 15:22:19 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0928615088BC; Tue, 10 May 2022 15:22:19 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 92686194E11A; Tue, 10 May 2022 15:22:08 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4E9F8194707F for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 2D0B0C28100; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E5DFFC15D58 for ; Tue, 10 May 2022 15:21:48 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id A7225244615; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196484; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=7Kt4APOzBJar6Hn4MxIJ1CuE2d/dOYEeWfd7ZesRofI=; b=TBUxbD1BKLBWiRbwcGGeHkJ1Yziz7jRwNTS+Wv3Y+bdBjg0NzjKslLzWj/3AVKvT8uvwfw 34NflyIUxPfZntH9TK9d1jxR8lxuIlazGDMg4dUceD6XMgNicIfLibBwwv7cMr9METQXPM 6flAc7XiWD+oyHGDExPXWxh0cjK/4+M= X-MC-Unique: cVYRWnRZPU2sl4LQ1TwElg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 41/80] qemu: Ignore missing memory statistics in query-migrate Date: Tue, 10 May 2022 17:21:02 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196486361100001 Content-Type: text/plain; charset="utf-8" We want to use query-migrate QMP command to check the current migration state when reconnecting to active domains, but the reply we get to this command may not contain any statistics at all if called on the destination host. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_monitor_json.c | 88 +++++++++++++++++------------------- 1 file changed, 42 insertions(+), 46 deletions(-) diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 3a497dceae..df3fdfe4fb 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -3249,56 +3249,52 @@ qemuMonitorJSONGetMigrationStatsReply(virJSONValue = *reply, case QEMU_MONITOR_MIGRATION_STATUS_PRE_SWITCHOVER: case QEMU_MONITOR_MIGRATION_STATUS_DEVICE: ram =3D virJSONValueObjectGetObject(ret, "ram"); - if (!ram) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("migration was active, but no RAM info was se= t")); - return -1; - } + if (ram) { + if (virJSONValueObjectGetNumberUlong(ram, "transferred", + &stats->ram_transferred) = < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("migration was active, but RAM 'transferr= ed' " + "data was missing")); + return -1; + } + if (virJSONValueObjectGetNumberUlong(ram, "remaining", + &stats->ram_remaining) < = 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("migration was active, but RAM 'remaining= ' " + "data was missing")); + return -1; + } + if (virJSONValueObjectGetNumberUlong(ram, "total", + &stats->ram_total) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("migration was active, but RAM 'total' " + "data was missing")); + return -1; + } =20 - if (virJSONValueObjectGetNumberUlong(ram, "transferred", - &stats->ram_transferred) < 0)= { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("migration was active, but RAM 'transferred' " - "data was missing")); - return -1; - } - if (virJSONValueObjectGetNumberUlong(ram, "remaining", - &stats->ram_remaining) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("migration was active, but RAM 'remaining' " - "data was missing")); - return -1; - } - if (virJSONValueObjectGetNumberUlong(ram, "total", - &stats->ram_total) < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("migration was active, but RAM 'total' " - "data was missing")); - return -1; - } + if (virJSONValueObjectGetNumberDouble(ram, "mbps", &mbps) =3D= =3D 0 && + mbps > 0) { + /* mpbs from QEMU reports Mbits/s (M as in 10^6 not Mi as = 2^20) */ + stats->ram_bps =3D mbps * (1000 * 1000 / 8); + } =20 - if (virJSONValueObjectGetNumberDouble(ram, "mbps", &mbps) =3D=3D 0= && - mbps > 0) { - /* mpbs from QEMU reports Mbits/s (M as in 10^6 not Mi as 2^20= ) */ - stats->ram_bps =3D mbps * (1000 * 1000 / 8); + if (virJSONValueObjectGetNumberUlong(ram, "duplicate", + &stats->ram_duplicate) = =3D=3D 0) + stats->ram_duplicate_set =3D true; + ignore_value(virJSONValueObjectGetNumberUlong(ram, "normal", + &stats->ram_norm= al)); + ignore_value(virJSONValueObjectGetNumberUlong(ram, "normal-byt= es", + &stats->ram_norm= al_bytes)); + ignore_value(virJSONValueObjectGetNumberUlong(ram, "dirty-page= s-rate", + &stats->ram_dirt= y_rate)); + ignore_value(virJSONValueObjectGetNumberUlong(ram, "page-size", + &stats->ram_page= _size)); + ignore_value(virJSONValueObjectGetNumberUlong(ram, "dirty-sync= -count", + &stats->ram_iter= ation)); + ignore_value(virJSONValueObjectGetNumberUlong(ram, "postcopy-r= equests", + &stats->ram_post= copy_reqs)); } =20 - if (virJSONValueObjectGetNumberUlong(ram, "duplicate", - &stats->ram_duplicate) =3D=3D= 0) - stats->ram_duplicate_set =3D true; - ignore_value(virJSONValueObjectGetNumberUlong(ram, "normal", - &stats->ram_normal)); - ignore_value(virJSONValueObjectGetNumberUlong(ram, "normal-bytes", - &stats->ram_normal_b= ytes)); - ignore_value(virJSONValueObjectGetNumberUlong(ram, "dirty-pages-ra= te", - &stats->ram_dirty_ra= te)); - ignore_value(virJSONValueObjectGetNumberUlong(ram, "page-size", - &stats->ram_page_siz= e)); - ignore_value(virJSONValueObjectGetNumberUlong(ram, "dirty-sync-cou= nt", - &stats->ram_iteratio= n)); - ignore_value(virJSONValueObjectGetNumberUlong(ram, "postcopy-reque= sts", - &stats->ram_postcopy= _reqs)); - disk =3D virJSONValueObjectGetObject(ret, "disk"); if (disk) { rc =3D virJSONValueObjectGetNumberUlong(disk, "transferred", --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196208; cv=none; d=zohomail.com; s=zohoarc; b=g/5RdfFdWcN7/rnuqLvz/m4WZI1JFWrk5lN2vom/awg165IfDBuRuTHUcRphIq0rjCG3pXwXXJOHFH9hXcf60AT/HrNqnoyyUTY3Sz2gYeviIjASJPT4c5VC8qq0TMZOxPrMJpYndUfw8xP3w7rGOHy1/ZaDd/EOhfjZ7mhXwpU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196208; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=/3+OAqdGWMcH7UHKUfmkjET2hyMsSNAUopvnONA1uUU=; b=FuQDOpFmqp2MgAZbvg8attM/XxJxQENY+tdDOtS5KKa2TOFaTCmib3Om+cr+j1i3Gaa273l7t41RrnZyr6uCtEPf7fsqagQb1uOrphGcfgLTeKjCx3cB94Ysi6618+1CWaMWeNt6N2+P4ijVB6b8DNz/sMCa1s+F67Ew+Ff5iZE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196208087419.3683553486974; Tue, 10 May 2022 08:23:28 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-607-xsMpd-QmPne55mI3DFfUWw-1; Tue, 10 May 2022 11:23:16 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id EE51786C167; Tue, 10 May 2022 15:22:02 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id D478A40D2825; Tue, 10 May 2022 15:22:02 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 3E90A1940344; Tue, 10 May 2022 15:21:56 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 6DD16194704D for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 50BFB40D1B9A; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 144A04010E46 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id A86F3244616; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196206; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=/3+OAqdGWMcH7UHKUfmkjET2hyMsSNAUopvnONA1uUU=; b=K8+8c+7i/mEi/7Epra7wOxvym+e9WO261s44Mo3EFmlVg3/02Vfrz34G5wYYQzDsJlek/n 2X0o/iWUQGkMi/jXe267ent4HoQyHeu1H2HYkMHsDrAlex5CH5fQsVtVAlk5BHi6qF0NN0 /eVvwFuiFhCAZi/E4JZVNv0kAkCmBn8= X-MC-Unique: xsMpd-QmPne55mI3DFfUWw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 42/80] qemu: Improve post-copy migration handling on reconnect Date: Tue, 10 May 2022 17:21:03 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196208868100005 Content-Type: text/plain; charset="utf-8" When libvirt daemon is restarted during an active post-copy migration, we do not always mark the migration as broken. In this phase libvirt is not really needed for migration to finish successfully. In fact the migration could have even finished while libvirt was not running or it may still be happily running. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 27 +++++++++++++++++++++++++++ src/qemu/qemu_migration.h | 6 ++++++ src/qemu/qemu_process.c | 39 +++++++++++++++++++++++++++++---------- 3 files changed, 62 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index dacea63610..854dfd43c1 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2460,6 +2460,33 @@ qemuMigrationSrcBeginPhaseBlockDirtyBitmaps(qemuMigr= ationCookie *mig, } =20 =20 +int +qemuMigrationAnyRefreshStatus(virQEMUDriver *driver, + virDomainObj *vm, + virDomainAsyncJob asyncJob, + virDomainJobStatus *status) +{ + g_autoptr(virDomainJobData) jobData =3D NULL; + qemuDomainJobDataPrivate *priv; + + jobData =3D virDomainJobDataInit(&qemuJobDataPrivateDataCallbacks); + priv =3D jobData->privateData; + + if (qemuMigrationAnyFetchStats(driver, vm, asyncJob, jobData, NULL) < = 0) + return -1; + + qemuMigrationUpdateJobType(jobData); + VIR_DEBUG("QEMU reports domain '%s' is in '%s' migration state, " + "translated as %d", + vm->def->name, + qemuMonitorMigrationStatusTypeToString(priv->stats.mig.statu= s), + jobData->status); + + *status =3D jobData->status; + return 0; +} + + /* The caller is supposed to lock the vm and start a migration job. */ static char * qemuMigrationSrcBeginPhase(virQEMUDriver *driver, diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index eeb69a52bf..9351d6ac51 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -279,3 +279,9 @@ qemuMigrationSrcFetchMirrorStats(virQEMUDriver *driver, virDomainObj *vm, virDomainAsyncJob asyncJob, virDomainJobData *jobData); + +int +qemuMigrationAnyRefreshStatus(virQEMUDriver *driver, + virDomainObj *vm, + virDomainAsyncJob asyncJob, + virDomainJobStatus *status); diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 7b347a9061..1cb00af6f1 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3591,10 +3591,8 @@ qemuProcessRecoverMigrationIn(virQEMUDriver *driver, /* migration finished, we started resuming the domain but didn't * confirm success or failure yet; killing it seems safest unless * we already started guest CPUs or we were in post-copy mode */ - if (virDomainObjIsPostcopy(vm, VIR_DOMAIN_JOB_OPERATION_MIGRATION_= IN)) { - qemuMigrationDstPostcopyFailed(vm); + if (virDomainObjIsPostcopy(vm, VIR_DOMAIN_JOB_OPERATION_MIGRATION_= IN)) return 1; - } =20 if (state !=3D VIR_DOMAIN_RUNNING) { VIR_DEBUG("Killing migrated domain %s", vm->def->name); @@ -3661,10 +3659,8 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *driver, * of Finish3 step; third party needs to check what to do next; in * post-copy mode we can use PAUSED_POSTCOPY_FAILED state for this */ - if (postcopy) { - qemuMigrationSrcPostcopyFailed(vm); + if (postcopy) return 1; - } break; =20 case QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED: @@ -3672,10 +3668,8 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *driver, * post-copy mode there's no way back, so let's just mark the doma= in * as broken in that case */ - if (postcopy) { - qemuMigrationSrcPostcopyFailed(vm); + if (postcopy) return 1; - } =20 VIR_DEBUG("Resuming domain %s after failed migration", vm->def->name); @@ -3713,6 +3707,7 @@ qemuProcessRecoverMigration(virQEMUDriver *driver, qemuDomainJobObj *job, unsigned int *stopFlags) { + virDomainJobStatus migStatus =3D VIR_DOMAIN_JOB_STATUS_NONE; qemuDomainJobPrivate *jobPriv =3D job->privateData; virDomainState state; int reason; @@ -3720,6 +3715,8 @@ qemuProcessRecoverMigration(virQEMUDriver *driver, =20 state =3D virDomainObjGetState(vm, &reason); =20 + qemuMigrationAnyRefreshStatus(driver, vm, VIR_ASYNC_JOB_NONE, &migStat= us); + if (job->asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT) { rc =3D qemuProcessRecoverMigrationOut(driver, vm, job, state, reason, stopFlags); @@ -3731,7 +3728,29 @@ qemuProcessRecoverMigration(virQEMUDriver *driver, return -1; =20 if (rc > 0) { - qemuProcessRestoreMigrationJob(vm, job); + if (migStatus =3D=3D VIR_DOMAIN_JOB_STATUS_POSTCOPY) { + VIR_DEBUG("Post-copy migration of domain %s still running, it " + "will be handled as unattended", vm->def->name); + qemuProcessRestoreMigrationJob(vm, job); + return 0; + } + + if (migStatus !=3D VIR_DOMAIN_JOB_STATUS_HYPERVISOR_COMPLETED) { + if (job->asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT) + qemuMigrationSrcPostcopyFailed(vm); + else + qemuMigrationDstPostcopyFailed(vm); + + qemuProcessRestoreMigrationJob(vm, job); + return 0; + } + + VIR_DEBUG("Post-copy migration of domain %s already finished", + vm->def->name); + if (job->asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT) + qemuMigrationSrcComplete(driver, vm, VIR_ASYNC_JOB_NONE); + else + qemuMigrationDstComplete(driver, vm, true, VIR_ASYNC_JOB_NONE,= job); return 0; } =20 --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196175; cv=none; d=zohomail.com; s=zohoarc; b=QQ+IAqfZRSGsOez1ZknwrQhxnFXbFEQ2vy35x16FKEl+rfElqVvI2V5GXQwWtDFVjcaChkoHEte5ck53ncg0YyzhjuEWDQU8cpWeL8Dy7znkyWRKQoMlvcJhO/jkTSKSQ+0r9zQsm9Ri6K8wzCHxsKZP4omYrbwbU3CaXPZtYxE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196175; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+W4eyJMwujw6M6r5PETYjB3lwHQzBqIuDQ+Qz7yecQQ=; b=TnQys8KDnNCiVi2tiYVjvQEGnzJb+oWYodP8XpberF5STcWOhegxbB7mZoXehHqprE5+pf+rDEhF5xngHfBXVzufYAg1NAaoKo7rzxGmEw+HIa5Yr783S4Bbug6dTsZXnUEspt2eJW1M8CcaVdc5wUIWG+LTW371uYKU63wySJA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196175300457.4513382758993; Tue, 10 May 2022 08:22:55 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-561-a2GZ0Wh5PZ2z7lzc-NmqRw-1; Tue, 10 May 2022 11:22:40 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B6B3486309D; Tue, 10 May 2022 15:22:00 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id A1E24464505; Tue, 10 May 2022 15:22:00 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 35FA3193F6DF; Tue, 10 May 2022 15:21:55 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4E5CC194706E for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 36A64C28110; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 14AACC27EB8 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id A9B7A244617; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196174; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=+W4eyJMwujw6M6r5PETYjB3lwHQzBqIuDQ+Qz7yecQQ=; b=LnAKl0g2Om4kXNgN0ZIqchF8YNUv8vBVP9DLunCRquqehXU8Y8dn76lOieXsr/VgYQIIl1 OiuxbRc1mrsmQ/p+bMTQ3mnxWadV3kVMY7OiTfzm4Pyw6vjnWx+X7zHIZa5Ro7SabXY5b0 FhwWBvyMUkKmvOVfLae/B2S3VwetqI8= X-MC-Unique: a2GZ0Wh5PZ2z7lzc-NmqRw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 43/80] qemu: Check flags incompatible with offline migration earlier Date: Tue, 10 May 2022 17:21:04 +0200 Message-Id: <6948d3b8f837f52bea00729123a84d0f3bdd0442.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652197078468100002 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 44 +++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 854dfd43c1..180a760bca 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2541,6 +2541,28 @@ qemuMigrationSrcBeginPhase(virQEMUDriver *driver, return NULL; } =20 + if (flags & VIR_MIGRATE_OFFLINE) { + if (flags & (VIR_MIGRATE_NON_SHARED_DISK | + VIR_MIGRATE_NON_SHARED_INC)) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("offline migration cannot handle " + "non-shared storage")); + return NULL; + } + if (!(flags & VIR_MIGRATE_PERSIST_DEST)) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("offline migration must be specified with " + "the persistent flag set")); + return NULL; + } + if (flags & VIR_MIGRATE_TUNNELLED) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("tunnelled offline migration does not " + "make sense")); + return NULL; + } + } + if (flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC)= ) { if (flags & VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES && !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV)) { @@ -2620,28 +2642,6 @@ qemuMigrationSrcBeginPhase(virQEMUDriver *driver, cookieFlags) < 0) return NULL; =20 - if (flags & VIR_MIGRATE_OFFLINE) { - if (flags & (VIR_MIGRATE_NON_SHARED_DISK | - VIR_MIGRATE_NON_SHARED_INC)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("offline migration cannot handle " - "non-shared storage")); - return NULL; - } - if (!(flags & VIR_MIGRATE_PERSIST_DEST)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("offline migration must be specified with " - "the persistent flag set")); - return NULL; - } - if (flags & VIR_MIGRATE_TUNNELLED) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("tunnelled offline migration does not " - "make sense")); - return NULL; - } - } - if (xmlin) { if (!(def =3D virDomainDefParseString(xmlin, driver->xmlopt, priv-= >qemuCaps, VIR_DOMAIN_DEF_PARSE_INACTIVE | --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196243; cv=none; d=zohomail.com; s=zohoarc; b=Ly8jJ6+a38j9bJTnbG0zAOJXcW6FKtyTBixuZVDCfr+oBqjotKAGAfjs93pvgFLAjiX4kEBUYocqVib9hl1BZMs2oskxnEUdyxPDsPOfScIADZ5V2OKSzScpvIYSWG7CSfbz5yWtqg76wiIs2QdHSXD12gvyhhLj9fMhTxp4Ifg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196243; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=UHzvkfl53wf1jjohiu1aPb5WnsAUiR62lYW8klE463E=; b=dJTC8ENAt1mC6lqb3KIIxy7nJBwly/1KYhxtdkj2P0zBV6im1PkEzVaOsLa9+PHgcE8EO6aikyiC2sANxqHMfQS5tgTUsp5yZxw49qZLk/Kxh5l1DRIKpU7WsnPLrNQblekUCIcGv046xr6ZefV6FfPpgAZsL/KXKxV4YPBpsUU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196243944638.1011167972248; Tue, 10 May 2022 08:24:03 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-649-v-qOV_awPD6p8pqCxL_hTQ-1; Tue, 10 May 2022 11:23:16 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 210BF2802297; Tue, 10 May 2022 15:22:05 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0C48240314F; Tue, 10 May 2022 15:22:05 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 8B78D1947078; Tue, 10 May 2022 15:21:57 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 88EDA1947060 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 545BC463ED0; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 16CDA40314F for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id AB01B244618; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196242; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=UHzvkfl53wf1jjohiu1aPb5WnsAUiR62lYW8klE463E=; b=ES0indeC7Z2Cgael3cdAjT+z6mm/kQozCBndvvt57YACYKavkjseVKg0K2HAQ4zUWFYuBP KymLBQZOdKmyiUefgqSdDBHV45V39A/6g3V4+SMcnkG2Hgy9eY5ccrCE2gvohGHuocb2RE ig7cgLWM4J43bXeNsDWHPjxyctZL54g= X-MC-Unique: v-qOV_awPD6p8pqCxL_hTQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 44/80] qemu: Introduce qemuMigrationSrcBeginXML helper Date: Tue, 10 May 2022 17:21:05 +0200 Message-Id: <5414ef051d7621cb0bf2485e554b87a71339523c.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196245040100001 Content-Type: text/plain; charset="utf-8" Turn the final part of Begin phase formatting a domain XML for migration into a reusable helper. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 95 ++++++++++++++++++++++++--------------- 1 file changed, 58 insertions(+), 37 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 180a760bca..7299bb6a0b 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2487,6 +2487,60 @@ qemuMigrationAnyRefreshStatus(virQEMUDriver *driver, } =20 =20 +static char * +qemuMigrationSrcBeginXML(virQEMUDriver *driver, + virDomainObj *vm, + const char *xmlin, + char **cookieout, + int *cookieoutlen, + unsigned int cookieFlags, + const char **migrate_disks, + size_t nmigrate_disks, + unsigned long flags) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + g_autoptr(qemuMigrationCookie) mig =3D NULL; + + if (priv->origCPU) + cookieFlags |=3D QEMU_MIGRATION_COOKIE_CPU; + + if (!(flags & VIR_MIGRATE_OFFLINE)) + cookieFlags |=3D QEMU_MIGRATION_COOKIE_CAPS; + + if (!(mig =3D qemuMigrationCookieNew(vm->def, priv->origname))) + return NULL; + + if (cookieFlags & QEMU_MIGRATION_COOKIE_NBD && + virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_BLOCK_BIT= MAP_MAPPING) && + qemuMigrationSrcBeginPhaseBlockDirtyBitmaps(mig, vm, migrate_disks, + nmigrate_disks) < 0) + return NULL; + + if (qemuMigrationCookieFormat(mig, driver, vm, + QEMU_MIGRATION_SOURCE, + cookieout, cookieoutlen, + cookieFlags) < 0) + return NULL; + + if (xmlin) { + g_autoptr(virDomainDef) def =3D NULL; + + if (!(def =3D virDomainDefParseString(xmlin, driver->xmlopt, priv-= >qemuCaps, + VIR_DOMAIN_DEF_PARSE_INACTIVE | + VIR_DOMAIN_DEF_PARSE_SKIP_VALI= DATE))) + return NULL; + + if (!qemuDomainCheckABIStability(driver, vm, def)) + return NULL; + + return qemuDomainDefFormatLive(driver, priv->qemuCaps, def, NULL, = false, true); + } + + return qemuDomainDefFormatLive(driver, priv->qemuCaps, vm->def, priv->= origCPU, + false, true); +} + + /* The caller is supposed to lock the vm and start a migration job. */ static char * qemuMigrationSrcBeginPhase(virQEMUDriver *driver, @@ -2499,8 +2553,6 @@ qemuMigrationSrcBeginPhase(virQEMUDriver *driver, const char **migrate_disks, unsigned long flags) { - g_autoptr(qemuMigrationCookie) mig =3D NULL; - g_autoptr(virDomainDef) def =3D NULL; qemuDomainObjPrivate *priv =3D vm->privateData; unsigned int cookieFlags =3D QEMU_MIGRATION_COOKIE_LOCKSTATE; =20 @@ -2621,41 +2673,10 @@ qemuMigrationSrcBeginPhase(virQEMUDriver *driver, vm->newDef && !qemuDomainVcpuHotplugIsInOrder(vm->newDef))) cookieFlags |=3D QEMU_MIGRATION_COOKIE_CPU_HOTPLUG; =20 - if (priv->origCPU) - cookieFlags |=3D QEMU_MIGRATION_COOKIE_CPU; - - if (!(flags & VIR_MIGRATE_OFFLINE)) - cookieFlags |=3D QEMU_MIGRATION_COOKIE_CAPS; - - if (!(mig =3D qemuMigrationCookieNew(vm->def, priv->origname))) - return NULL; - - if (cookieFlags & QEMU_MIGRATION_COOKIE_NBD && - virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_BLOCK_BIT= MAP_MAPPING) && - qemuMigrationSrcBeginPhaseBlockDirtyBitmaps(mig, vm, migrate_disks, - nmigrate_disks) < 0) - return NULL; - - if (qemuMigrationCookieFormat(mig, driver, vm, - QEMU_MIGRATION_SOURCE, - cookieout, cookieoutlen, - cookieFlags) < 0) - return NULL; - - if (xmlin) { - if (!(def =3D virDomainDefParseString(xmlin, driver->xmlopt, priv-= >qemuCaps, - VIR_DOMAIN_DEF_PARSE_INACTIVE | - VIR_DOMAIN_DEF_PARSE_SKIP_VALI= DATE))) - return NULL; - - if (!qemuDomainCheckABIStability(driver, vm, def)) - return NULL; - - return qemuDomainDefFormatLive(driver, priv->qemuCaps, def, NULL, = false, true); - } else { - return qemuDomainDefFormatLive(driver, priv->qemuCaps, vm->def, pr= iv->origCPU, - false, true); - } + return qemuMigrationSrcBeginXML(driver, vm, xmlin, + cookieout, cookieoutlen, cookieFlags, + migrate_disks, nmigrate_disks, + flags); } =20 char * --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196198; cv=none; d=zohomail.com; s=zohoarc; b=ZRbJVCITODM550VlAMJoz5kxlRE6T8v4o7rQL8rzszGlwB1+DbDMg5wjHsgz5qBdvqKf9mPCHsRfY4yEDanh1ya54D0R1+iSyaM1fXw9U8wfVw3G3V0urK/wjcxId3Ssqlcqf7wRHkKrvqwPdc9ftY5nyV/2zYLNCRgRbkNp7GU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196198; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=MZADWMdu+2plo2acbD1JslrYu0dEzd7U3pHkmAe6+gE=; b=N+YNkhOOnNaNbX/AnG4Q90XOoSn1a7Jf/Dyp/VlJEBMHW3XDN8DZy2iu80lnkgtRwqi7Fw7ugM6jYcYMyE0aaON0ucDcMCUKLlVG6Ko90ZRRw0AG7uMbWGBqkExktHLALlT9yAcnTT1rEKXx/dPW38vtKivC8SBaskwaqGL6xW4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 165219619893627.60700982447861; Tue, 10 May 2022 08:23:18 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-394-TA2494voOMS2xi5LLNXMAw-1; Tue, 10 May 2022 11:22:47 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4F0B510AF7EE; Tue, 10 May 2022 15:22:04 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id ED037415F56; Tue, 10 May 2022 15:22:03 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id DD213193F513; Tue, 10 May 2022 15:21:56 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 737581947B83 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 53EAF40E7F12; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1428540D0165 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id AC4D2244619; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196197; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=MZADWMdu+2plo2acbD1JslrYu0dEzd7U3pHkmAe6+gE=; b=ILCu6Rg87S0822nBg8QSTRXgtXN38SktOxiVIuNhi13B+VdrN4bQdqFsHrR39VQeuPOsMb eDJnPpz70nvfBluzTSkOsTVecDVU0w+hlavQ3n01isAnHRF8WB68/13FV3oYXKLx6AzuPk FvTCF3AxMdOyoIcVLRCMamYCHDL7sGs= X-MC-Unique: TA2494voOMS2xi5LLNXMAw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 45/80] qemu: Add new migration phases for post-copy recovery Date: Tue, 10 May 2022 17:21:06 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196200819100007 Content-Type: text/plain; charset="utf-8" When recovering from a failed post-copy migration, we need to go through all migration phases again, but don't need to repeat all the steps in each phase. Let's create a new set of migration phases dedicated to post-copy recovery so that we can easily distinguish between normal and recovery code. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 20 +++++++++++++++++++- src/qemu/qemu_migration.h | 6 ++++++ src/qemu/qemu_process.c | 25 ++++++++++++++++++++++++- 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 7299bb6a0b..301d9db1d2 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -79,6 +79,12 @@ VIR_ENUM_IMPL(qemuMigrationJobPhase, "prepare", "finish2", "finish3", + "postcopy_failed", + "begin_resume", + "perform_resume", + "confirm_resume", + "prepare_resume", + "finish_resume", ); =20 =20 @@ -139,7 +145,8 @@ qemuMigrationJobSetPhase(virDomainObj *vm, { qemuDomainObjPrivate *priv =3D vm->privateData; =20 - if (phase < priv->job.phase) { + if (phase < QEMU_MIGRATION_PHASE_POSTCOPY_FAILED && + phase < priv->job.phase) { VIR_ERROR(_("migration protocol going backwards %s =3D> %s"), qemuMigrationJobPhaseTypeToString(priv->job.phase), qemuMigrationJobPhaseTypeToString(phase)); @@ -2356,18 +2363,29 @@ qemuMigrationSrcCleanup(virDomainObj *vm, } break; =20 + case QEMU_MIGRATION_PHASE_BEGIN_RESUME: + case QEMU_MIGRATION_PHASE_PERFORM_RESUME: + qemuMigrationSrcPostcopyFailed(vm); + qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); + qemuMigrationJobContinue(vm); + break; + case QEMU_MIGRATION_PHASE_PERFORM3: /* cannot be seen without an active migration API; unreachable */ case QEMU_MIGRATION_PHASE_CONFIRM3: case QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED: + case QEMU_MIGRATION_PHASE_CONFIRM_RESUME: /* all done; unreachable */ case QEMU_MIGRATION_PHASE_PREPARE: case QEMU_MIGRATION_PHASE_FINISH2: case QEMU_MIGRATION_PHASE_FINISH3: + case QEMU_MIGRATION_PHASE_PREPARE_RESUME: + case QEMU_MIGRATION_PHASE_FINISH_RESUME: /* incoming migration; unreachable */ case QEMU_MIGRATION_PHASE_PERFORM2: /* single phase outgoing migration; unreachable */ case QEMU_MIGRATION_PHASE_NONE: + case QEMU_MIGRATION_PHASE_POSTCOPY_FAILED: case QEMU_MIGRATION_PHASE_LAST: /* unreachable */ ; diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index 9351d6ac51..7eb0d4fe02 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -100,6 +100,12 @@ typedef enum { QEMU_MIGRATION_PHASE_PREPARE, QEMU_MIGRATION_PHASE_FINISH2, QEMU_MIGRATION_PHASE_FINISH3, + QEMU_MIGRATION_PHASE_POSTCOPY_FAILED, /* marker for resume phases */ + QEMU_MIGRATION_PHASE_BEGIN_RESUME, + QEMU_MIGRATION_PHASE_PERFORM_RESUME, + QEMU_MIGRATION_PHASE_CONFIRM_RESUME, + QEMU_MIGRATION_PHASE_PREPARE_RESUME, + QEMU_MIGRATION_PHASE_FINISH_RESUME, =20 QEMU_MIGRATION_PHASE_LAST } qemuMigrationJobPhase; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 1cb00af6f1..c7ed0a5c56 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3566,6 +3566,10 @@ qemuProcessRecoverMigrationIn(virQEMUDriver *driver, case QEMU_MIGRATION_PHASE_PERFORM3_DONE: case QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED: case QEMU_MIGRATION_PHASE_CONFIRM3: + case QEMU_MIGRATION_PHASE_POSTCOPY_FAILED: + case QEMU_MIGRATION_PHASE_BEGIN_RESUME: + case QEMU_MIGRATION_PHASE_PERFORM_RESUME: + case QEMU_MIGRATION_PHASE_CONFIRM_RESUME: case QEMU_MIGRATION_PHASE_LAST: /* N/A for incoming migration */ break; @@ -3599,6 +3603,10 @@ qemuProcessRecoverMigrationIn(virQEMUDriver *driver, return -1; } break; + + case QEMU_MIGRATION_PHASE_PREPARE_RESUME: + case QEMU_MIGRATION_PHASE_FINISH_RESUME: + return 1; } =20 return 0; @@ -3615,6 +3623,7 @@ static int qemuProcessRecoverMigrationOut(virQEMUDriver *driver, virDomainObj *vm, qemuDomainJobObj *job, + virDomainJobStatus migStatus, virDomainState state, int reason, unsigned int *stopFlags) @@ -3630,6 +3639,9 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *driver, case QEMU_MIGRATION_PHASE_PREPARE: case QEMU_MIGRATION_PHASE_FINISH2: case QEMU_MIGRATION_PHASE_FINISH3: + case QEMU_MIGRATION_PHASE_POSTCOPY_FAILED: + case QEMU_MIGRATION_PHASE_PREPARE_RESUME: + case QEMU_MIGRATION_PHASE_FINISH_RESUME: case QEMU_MIGRATION_PHASE_LAST: /* N/A for outgoing migration */ break; @@ -3680,6 +3692,17 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *driver, /* migration completed, we need to kill the domain here */ *stopFlags |=3D VIR_QEMU_PROCESS_STOP_MIGRATED; return -1; + + case QEMU_MIGRATION_PHASE_CONFIRM_RESUME: + if (migStatus =3D=3D VIR_DOMAIN_JOB_STATUS_HYPERVISOR_COMPLETED) { + *stopFlags |=3D VIR_QEMU_PROCESS_STOP_MIGRATED; + return -1; + } + return 1; + + case QEMU_MIGRATION_PHASE_BEGIN_RESUME: + case QEMU_MIGRATION_PHASE_PERFORM_RESUME: + return 1; } =20 if (resume) { @@ -3718,7 +3741,7 @@ qemuProcessRecoverMigration(virQEMUDriver *driver, qemuMigrationAnyRefreshStatus(driver, vm, VIR_ASYNC_JOB_NONE, &migStat= us); =20 if (job->asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT) { - rc =3D qemuProcessRecoverMigrationOut(driver, vm, job, + rc =3D qemuProcessRecoverMigrationOut(driver, vm, job, migStatus, state, reason, stopFlags); } else { rc =3D qemuProcessRecoverMigrationIn(driver, vm, job, state); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196370; cv=none; d=zohomail.com; s=zohoarc; b=gor1lYac/wG/CWZOfyylNZ2zX0NATBJsapfZ5Hzvt94ECRUf2k9hn16qOxmcyT41sHMNyTnPdrqdjFC6D6+yYRXMf/any9WV987LBF4Kuuo3xIlH71t8/JcMT3za64dzzurUdtJmHLaCwR5ZFTRYB4NSZ8KlgZDk/rY8f4xBxC8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196370; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=pR5u6gWzd7O6GVdYtxUO+0e6tufjDM7H2LXOYbGHpyQ=; b=HpVsUGabp94+FivYrCD8X5aY1dcj5pPWwtXv+61bUdi3Q9itpqWbCHfXyUcYnOV54FWjhLBAw4ofRzt550qUyAfk5ghWxVmw06HxaZazi1/y9sAvZAWyrjddN1FVmBQQE7cA3Gph10gxaf/xKnT4xUBn0XXKqJvX9hDQ/lK/Fmo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196370535293.80016206133075; Tue, 10 May 2022 08:26:10 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-498-HYVOV_XJPeOI-y8w_GHunQ-1; Tue, 10 May 2022 11:23:30 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B763D856D35; Tue, 10 May 2022 15:22:18 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id A25C0401E9C; Tue, 10 May 2022 15:22:18 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5E014194E105; Tue, 10 May 2022 15:22:08 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id A86701947B8C for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 86DA914E1DA4; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6481914E1D8D for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id AD8F424461A; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196369; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=pR5u6gWzd7O6GVdYtxUO+0e6tufjDM7H2LXOYbGHpyQ=; b=HyuXIRPsSEiOHlGPjvkktlp6AgAW6jCev1LS/pABFveALgizRQQL3WETPy38+H46rgPiXI DWhPOruE9Z8hpwRk3/M9DNTl3lDBAi/zjfCIbdl2SeNPE/cPt6BdMVeAHnvJ9StN0fpuEl XQ1hlZxrhXWrQsU6dqrlByoV6W5OSvI= X-MC-Unique: HYVOV_XJPeOI-y8w_GHunQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 46/80] qemu: Separate protocol checks from qemuMigrationJobSetPhase Date: Tue, 10 May 2022 17:21:07 +0200 Message-Id: <60ee8a80bbd53ed87949468b68706dce336ff278.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196370733100001 Content-Type: text/plain; charset="utf-8" Into a new qemuMigrationCheckPhase helper, which can be reused in other places. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 301d9db1d2..5b6073b963 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -139,9 +139,9 @@ qemuMigrationJobStart(virQEMUDriver *driver, } =20 =20 -static void ATTRIBUTE_NONNULL(1) -qemuMigrationJobSetPhase(virDomainObj *vm, - qemuMigrationJobPhase phase) +static int +qemuMigrationCheckPhase(virDomainObj *vm, + qemuMigrationJobPhase phase) { qemuDomainObjPrivate *priv =3D vm->privateData; =20 @@ -150,9 +150,20 @@ qemuMigrationJobSetPhase(virDomainObj *vm, VIR_ERROR(_("migration protocol going backwards %s =3D> %s"), qemuMigrationJobPhaseTypeToString(priv->job.phase), qemuMigrationJobPhaseTypeToString(phase)); - return; + return -1; } =20 + return 0; +} + + +static void ATTRIBUTE_NONNULL(1) +qemuMigrationJobSetPhase(virDomainObj *vm, + qemuMigrationJobPhase phase) +{ + if (qemuMigrationCheckPhase(vm, phase) < 0) + return; + qemuDomainObjSetJobPhase(vm, phase); } =20 --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196255; cv=none; d=zohomail.com; s=zohoarc; b=JvSn3nEkwo2M/F/cjBuIUz57f792uEn2tnEqTXkviKhPvEmDOzozIUgSERAe+Sn2ka6p2OWgFII+NV8h4ftwRv5gQa0RAym4Gqa6+MnAyFIhprTA7rZ/1HqNIfIC3fFQu5ONRNBnZtwwHK7mHqxewEynkQ64ZofrkessgjJTYTw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196255; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5c/JYdYSXZaL+nIpwTFaMvdoplU6gnabg81Pkof34lU=; b=IE3v31848Zj8WQX18eKA7lQsq+OoTyZuXQYflfE8DytKDil1C4ZFL1tllTvSuCqX42j94Qu+Re6IIjnVg0khLSiZ5dDdvtNS+vZav5RYzVmhuZwkm+j1NIBduTwTqo6GXab9r0y1UbvzUgJUsw5wxtL8c9AYCiRoARNImKCNnHo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196255794511.87749076400394; Tue, 10 May 2022 08:24:15 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-673-I28KVrvjPamxFxfMz9H7Vw-1; Tue, 10 May 2022 11:23:23 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 9FC3A88B7A4; Tue, 10 May 2022 15:22:19 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8DCAE15088B0; Tue, 10 May 2022 15:22:19 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D1FF0194E10F; Tue, 10 May 2022 15:22:08 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 2EFB51947B89 for ; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 2317E111D7B2; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DAFAD111D7B7 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id AEE2924461B; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196253; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=5c/JYdYSXZaL+nIpwTFaMvdoplU6gnabg81Pkof34lU=; b=b2ntGXuEl8zZIldC3tdwwPWYVGj6lLtPnlY13qWFvS1N5Xgmxh2j/4F4LeXdOFEw18FoQX wqfWUuKuRMdKNKfyxGM9ITaITlEA6HKdnW9YFt3BpcVCjf6zCNo4FAgSUi3NJM0rdeOr3d fT0Ls0Dps9LQYUtc2K/o8jnTKHSrqh0= X-MC-Unique: I28KVrvjPamxFxfMz9H7Vw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 47/80] qemu: Make qemuMigrationCheckPhase failure fatal Date: Tue, 10 May 2022 17:21:08 +0200 Message-Id: <3d5ab595f983dac7bbdba0c5512a042b4543b725.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196257119100008 Content-Type: text/plain; charset="utf-8" The check can reveal a serious bug in our migration code and we should not silently ignore it. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina --- src/qemu/qemu_migration.c | 58 ++++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 5b6073b963..1c5dd9b391 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -147,9 +147,10 @@ qemuMigrationCheckPhase(virDomainObj *vm, =20 if (phase < QEMU_MIGRATION_PHASE_POSTCOPY_FAILED && phase < priv->job.phase) { - VIR_ERROR(_("migration protocol going backwards %s =3D> %s"), - qemuMigrationJobPhaseTypeToString(priv->job.phase), - qemuMigrationJobPhaseTypeToString(phase)); + virReportError(VIR_ERR_INTERNAL_ERROR, + _("migration protocol going backwards %s =3D> %s"), + qemuMigrationJobPhaseTypeToString(priv->job.phase), + qemuMigrationJobPhaseTypeToString(phase)); return -1; } =20 @@ -157,22 +158,23 @@ qemuMigrationCheckPhase(virDomainObj *vm, } =20 =20 -static void ATTRIBUTE_NONNULL(1) +static int G_GNUC_WARN_UNUSED_RESULT qemuMigrationJobSetPhase(virDomainObj *vm, qemuMigrationJobPhase phase) { if (qemuMigrationCheckPhase(vm, phase) < 0) - return; + return -1; =20 qemuDomainObjSetJobPhase(vm, phase); + return 0; } =20 =20 -static void ATTRIBUTE_NONNULL(1) +static int G_GNUC_WARN_UNUSED_RESULT qemuMigrationJobStartPhase(virDomainObj *vm, qemuMigrationJobPhase phase) { - qemuMigrationJobSetPhase(vm, phase); + return qemuMigrationJobSetPhase(vm, phase); } =20 =20 @@ -2596,8 +2598,9 @@ qemuMigrationSrcBeginPhase(virQEMUDriver *driver, * Otherwise we will start the async job later in the perform phase lo= sing * change protection. */ - if (priv->job.asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT) - qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_BEGIN3); + if (priv->job.asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT && + qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_BEGIN3) < 0) + return NULL; =20 if (!qemuMigrationSrcIsAllowed(driver, vm, true, flags)) return NULL; @@ -3148,7 +3151,9 @@ qemuMigrationDstPrepareAny(virQEMUDriver *driver, if (qemuMigrationJobStart(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, flags) < 0) goto cleanup; - qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PREPARE); + + if (qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PREPARE) < 0) + goto stopjob; =20 /* Domain starts inactive, even if the domain XML had an id field. */ vm->def->id =3D -1; @@ -3668,7 +3673,8 @@ qemuMigrationSrcConfirmPhase(virQEMUDriver *driver, else phase =3D QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED; =20 - qemuMigrationJobSetPhase(vm, phase); + if (qemuMigrationJobSetPhase(vm, phase) < 0) + return -1; =20 if (!(mig =3D qemuMigrationCookieParse(driver, vm->def, priv->origname= , priv, cookiein, cookieinlen, @@ -3753,7 +3759,9 @@ qemuMigrationSrcConfirm(virQEMUDriver *driver, else phase =3D QEMU_MIGRATION_PHASE_CONFIRM3; =20 - qemuMigrationJobStartPhase(vm, phase); + if (qemuMigrationJobStartPhase(vm, phase) < 0) + goto cleanup; + virCloseCallbacksUnset(driver->closeCallbacks, vm, qemuMigrationSrcCleanup); =20 @@ -4920,7 +4928,7 @@ qemuMigrationSrcPerformPeer2Peer2(virQEMUDriver *driv= er, * until the migration is complete. */ VIR_DEBUG("Perform %p", sconn); - qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM2); + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM= 2)); if (flags & VIR_MIGRATE_TUNNELLED) ret =3D qemuMigrationSrcPerformTunnel(driver, vm, st, NULL, NULL, 0, NULL, NULL, @@ -5164,7 +5172,7 @@ qemuMigrationSrcPerformPeer2Peer3(virQEMUDriver *driv= er, * confirm migration completion. */ VIR_DEBUG("Perform3 %p uri=3D%s", sconn, NULLSTR(uri)); - qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM3); + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM= 3)); VIR_FREE(cookiein); cookiein =3D g_steal_pointer(&cookieout); cookieinlen =3D cookieoutlen; @@ -5189,7 +5197,7 @@ qemuMigrationSrcPerformPeer2Peer3(virQEMUDriver *driv= er, if (ret < 0) { virErrorPreserveLast(&orig_err); } else { - qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM3_DONE); + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PER= FORM3_DONE)); } =20 /* If Perform returns < 0, then we need to cancel the VM @@ -5565,7 +5573,9 @@ qemuMigrationSrcPerformJob(virQEMUDriver *driver, migParams, flags, dname, re= source, &v3proto); } else { - qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM2); + if (qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM2) < = 0) + goto endjob; + ret =3D qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri= , cookiein, cookieinlen, cookieout, cookieoutlen, flags, resource, NULL, NULL, 0= , NULL, @@ -5657,7 +5667,9 @@ qemuMigrationSrcPerformPhase(virQEMUDriver *driver, return ret; } =20 - qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PERFORM3); + if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PERFORM3) < 0) + goto endjob; + virCloseCallbacksUnset(driver->closeCallbacks, vm, qemuMigrationSrcCleanup); =20 @@ -5671,7 +5683,7 @@ qemuMigrationSrcPerformPhase(virQEMUDriver *driver, goto endjob; } =20 - qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM3_DONE); + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM= 3_DONE)); =20 if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn, qemuMigrationSrcCleanup) < 0) @@ -6238,9 +6250,10 @@ qemuMigrationDstFinish(virQEMUDriver *driver, =20 ignore_value(virTimeMillisNow(&timeReceived)); =20 - qemuMigrationJobStartPhase(vm, - v3proto ? QEMU_MIGRATION_PHASE_FINISH3 - : QEMU_MIGRATION_PHASE_FINISH2); + if (qemuMigrationJobStartPhase(vm, + v3proto ? QEMU_MIGRATION_PHASE_FINISH3 + : QEMU_MIGRATION_PHASE_FINISH2)= < 0) + goto cleanup; =20 qemuDomainCleanupRemove(vm, qemuMigrationDstPrepareCleanup); g_clear_pointer(&priv->job.completed, virDomainJobDataFree); @@ -6314,7 +6327,8 @@ qemuMigrationProcessUnattended(virQEMUDriver *driver, else phase =3D QEMU_MIGRATION_PHASE_CONFIRM3; =20 - qemuMigrationJobStartPhase(vm, phase); + if (qemuMigrationJobStartPhase(vm, phase) < 0) + return; =20 if (job =3D=3D VIR_ASYNC_JOB_MIGRATION_IN) qemuMigrationDstComplete(driver, vm, true, job, &priv->job); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196185; cv=none; d=zohomail.com; s=zohoarc; b=Pk79NviAMS5urOrE77L3t8R7HBYqKIP99nlwaMO7xDzIQ4t5rm2CoFsCsuud1DkR+pvEpW7gSy0CJ2MVNcy/PEOMnqzXVID1c4W8kwGHkTGRWJYJXQ0ggpbbnbF3ufR1fi/vCWvCm9vPiZQH1+HXoBVrjLgxBuN/2IsoWuHHCUc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196185; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HytgBl1CjZDTOs8bl8f4AYj0eBx9e1ZKPKeFBGhPG5c=; b=QO+37MDa8k5p4XePysBxUQbMMKhQxrDiuH3Rg3DqJnAvVxGvg1e2UY1V1YiHmUntrfSkPyEDks//0ii6BGnbOGDUlJ4vPTEc/VBbTjENB5N8gozJ24dj1moatkNEZlgtsiZ4wadAndpwyMabJ3rhKfZoyiqOifl11BbOCq2JphI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196185412238.55963766187983; Tue, 10 May 2022 08:23:05 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-185-DmuQHI1NNhGiQLzf5Snmcg-1; Tue, 10 May 2022 11:22:58 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id F157885A5BC; Tue, 10 May 2022 15:22:01 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id D801C40E7F06; Tue, 10 May 2022 15:22:01 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id AF92719452D2; Tue, 10 May 2022 15:21:55 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 62C0C1947073 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 52EBD14E1DA0; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2D35014E1D8A for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id B02BD24461C; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196184; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=HytgBl1CjZDTOs8bl8f4AYj0eBx9e1ZKPKeFBGhPG5c=; b=f4G0XUeGqXwAx46izl9ixYa8MM5VAf7Z9poTEBlSlA7mU/VUoCXAKJ4MpqGz09NOBy3nT4 XocpYGgAE5xmF2GFUwJnPM2lO77qrvqAVQUp5XVI/a+1Ums4UVIkEjDYLvKr0SA74c+KHG GGkcqfJAI1Opil1dLoxvUHwf12aBYeE= X-MC-Unique: DmuQHI1NNhGiQLzf5Snmcg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 48/80] qemu: Refactor qemuDomainObjSetJobPhase Date: Tue, 10 May 2022 17:21:09 +0200 Message-Id: <35d10618ff831a795da6f4ac1468784d31291e31.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196186773100007 Content-Type: text/plain; charset="utf-8" We will want to update migration phase without affecting job ownership. Either in the thread that already owns the job or from an event handler which only changes the phase (of a job no-one owns) without assuming it. Let's move the ownership change to a new qemuDomainObjStartJobPhase helper and let qemuDomainObjSetJobPhase set the phase without touching ownership. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_domainjob.c | 44 +++++++++++++++++++++++++++++++++++---- src/qemu/qemu_domainjob.h | 3 +++ src/qemu/qemu_migration.c | 2 +- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_domainjob.c b/src/qemu/qemu_domainjob.c index 8e8d229afe..10381755a9 100644 --- a/src/qemu/qemu_domainjob.c +++ b/src/qemu/qemu_domainjob.c @@ -714,6 +714,10 @@ qemuDomainJobDataToParams(virDomainJobData *jobData, } =20 =20 +/* + * Sets the job phase without changing the job owner. The owner is suppose= d to + * be 0 or the current thread, a warning is issued otherwise. + */ void qemuDomainObjSetJobPhase(virDomainObj *obj, int phase) @@ -728,19 +732,51 @@ qemuDomainObjSetJobPhase(virDomainObj *obj, virDomainAsyncJobTypeToString(priv->job.asyncJob), qemuDomainAsyncJobPhaseToString(priv->job.asyncJob, phase)); =20 + if (priv->job.asyncOwner !=3D 0 && + priv->job.asyncOwner !=3D me) { + VIR_WARN("'%s' async job is owned by thread %llu, API '%s'", + virDomainAsyncJobTypeToString(priv->job.asyncJob), + priv->job.asyncOwner, + NULLSTR(priv->job.asyncOwnerAPI)); + } + + priv->job.phase =3D phase; + qemuDomainSaveStatus(obj); +} + + +/* + * Changes the job owner and sets the job phase. The current owner is supp= osed + * to be 0 or the current thread, a warning is issued otherwise. + */ +void +qemuDomainObjStartJobPhase(virDomainObj *obj, + int phase) +{ + qemuDomainObjPrivate *priv =3D obj->privateData; + unsigned long long me =3D virThreadSelfID(); + + if (!priv->job.asyncJob) + return; + + VIR_DEBUG("Starting phase '%s' of '%s' job", + qemuDomainAsyncJobPhaseToString(priv->job.asyncJob, phase), + virDomainAsyncJobTypeToString(priv->job.asyncJob)); + if (priv->job.asyncOwner =3D=3D 0) { priv->job.asyncOwnerAPI =3D g_strdup(virThreadJobGet()); } else if (me !=3D priv->job.asyncOwner) { - VIR_WARN("'%s' async job is owned by thread %llu", + VIR_WARN("'%s' async job is owned by thread %llu, API '%s'", virDomainAsyncJobTypeToString(priv->job.asyncJob), - priv->job.asyncOwner); + priv->job.asyncOwner, + NULLSTR(priv->job.asyncOwnerAPI)); } =20 - priv->job.phase =3D phase; priv->job.asyncOwner =3D me; - qemuDomainSaveStatus(obj); + qemuDomainObjSetJobPhase(obj, phase); } =20 + void qemuDomainObjSetAsyncJobMask(virDomainObj *obj, unsigned long long allowedJobs) diff --git a/src/qemu/qemu_domainjob.h b/src/qemu/qemu_domainjob.h index 707d4e91ed..e8021a7f04 100644 --- a/src/qemu/qemu_domainjob.h +++ b/src/qemu/qemu_domainjob.h @@ -156,6 +156,9 @@ void qemuDomainObjEndAsyncJob(virDomainObj *obj); void qemuDomainObjAbortAsyncJob(virDomainObj *obj); void qemuDomainObjSetJobPhase(virDomainObj *obj, int phase); +void +qemuDomainObjStartJobPhase(virDomainObj *obj, + int phase); void qemuDomainObjSetAsyncJobMask(virDomainObj *obj, unsigned long long allowedJobs); int qemuDomainObjPreserveJob(virDomainObj *obj, diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 1c5dd9b391..e4c0c1c6f4 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -165,7 +165,7 @@ qemuMigrationJobSetPhase(virDomainObj *vm, if (qemuMigrationCheckPhase(vm, phase) < 0) return -1; =20 - qemuDomainObjSetJobPhase(vm, phase); + qemuDomainObjStartJobPhase(vm, phase); return 0; } =20 --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196245; cv=none; d=zohomail.com; s=zohoarc; b=cwuNP5P+EMKF3mpy2FMRRRByb77P4/b98BcCH2OQ/pBrfA0Qsb1wf7OdcM4lcCn4J9xnFKc2aOytIj9l7HfGbOBZmi8sG87sPFuXFS7aKoTa7IAwadqlxgzAm/sv/Low8nUvIE0x8HBbubF3PQdbwu2YmXCtR6vXqNap7p8IVzc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196245; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qlkbLc2KQfeaSIH/LK+CeY02SsLCA/2+GoanCAlQTIs=; b=WJCbM2T4oSj9bZIXY1SJv2vsPWE9cMnPwovKNZvJ8LRY1zkUeutX7gvcAVBDFMHHmEBypsmUNZeD8LOkv5IUcLQGmwOIjT+ZufWYmAypd7pJWuPxcduxDKm3GFfoMkIeNcpTaivq8O3I8eyJ+scicYhIxWfy9qDkjuGp1QqyVM0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196245516722.2542536586868; Tue, 10 May 2022 08:24:05 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-563-LNYfchGPM_-85jj6ykiDFw-1; Tue, 10 May 2022 11:22:46 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E80013C3231E; Tue, 10 May 2022 15:22:02 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id D428A15088B3; Tue, 10 May 2022 15:22:02 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 38BB11949762; Tue, 10 May 2022 15:21:56 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 73DCA1947B85 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 541BC40E7F15; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2F80A400E897 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id B16D624461D; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196244; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=qlkbLc2KQfeaSIH/LK+CeY02SsLCA/2+GoanCAlQTIs=; b=TVn29gHT03GQqqIe7U/M9g8HpbXr75YK4TstGd7Kj3+fqT7KtCZQuJsSjTOf+nY8Va7jQI 19AwHoEd5yq654kGVdJkLkzvdKT3ENXTg9NS/Kq3CU6z0wdPF1gz4arvfvfLgRM5LiI8yP dz+Iwa6TzkJay3Fu53pLvqGuFj/2HGU= X-MC-Unique: LNYfchGPM_-85jj6ykiDFw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 49/80] qemu: Do not set job owner in qemuMigrationJobSetPhase Date: Tue, 10 May 2022 17:21:10 +0200 Message-Id: <318bd894eecb42bf57f5297b0efeed53f8b2416b.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196247032100008 Content-Type: text/plain; charset="utf-8" Both qemuMigrationJobSetPhase and qemuMigrationJobStartPhase were doing the same thing, which made little sense. Let's follow the difference between qemuDomainObjSetJobPhase and qemuDomainObjStartJobPhase and change job owner only in qemuMigrationJobStartPhase. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index e4c0c1c6f4..3f6921b4b2 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -165,7 +165,7 @@ qemuMigrationJobSetPhase(virDomainObj *vm, if (qemuMigrationCheckPhase(vm, phase) < 0) return -1; =20 - qemuDomainObjStartJobPhase(vm, phase); + qemuDomainObjSetJobPhase(vm, phase); return 0; } =20 @@ -174,7 +174,11 @@ static int G_GNUC_WARN_UNUSED_RESULT qemuMigrationJobStartPhase(virDomainObj *vm, qemuMigrationJobPhase phase) { - return qemuMigrationJobSetPhase(vm, phase); + if (qemuMigrationCheckPhase(vm, phase) < 0) + return -1; + + qemuDomainObjStartJobPhase(vm, phase); + return 0; } =20 =20 @@ -2599,7 +2603,7 @@ qemuMigrationSrcBeginPhase(virQEMUDriver *driver, * change protection. */ if (priv->job.asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT && - qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_BEGIN3) < 0) + qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_BEGIN3) < 0) return NULL; =20 if (!qemuMigrationSrcIsAllowed(driver, vm, true, flags)) @@ -3152,7 +3156,7 @@ qemuMigrationDstPrepareAny(virQEMUDriver *driver, flags) < 0) goto cleanup; =20 - if (qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PREPARE) < 0) + if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PREPARE) < 0) goto stopjob; =20 /* Domain starts inactive, even if the domain XML had an id field. */ @@ -3673,7 +3677,7 @@ qemuMigrationSrcConfirmPhase(virQEMUDriver *driver, else phase =3D QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED; =20 - if (qemuMigrationJobSetPhase(vm, phase) < 0) + if (qemuMigrationJobStartPhase(vm, phase) < 0) return -1; =20 if (!(mig =3D qemuMigrationCookieParse(driver, vm->def, priv->origname= , priv, @@ -4928,7 +4932,7 @@ qemuMigrationSrcPerformPeer2Peer2(virQEMUDriver *driv= er, * until the migration is complete. */ VIR_DEBUG("Perform %p", sconn); - ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM= 2)); + ignore_value(qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PERFO= RM2)); if (flags & VIR_MIGRATE_TUNNELLED) ret =3D qemuMigrationSrcPerformTunnel(driver, vm, st, NULL, NULL, 0, NULL, NULL, @@ -5573,7 +5577,7 @@ qemuMigrationSrcPerformJob(virQEMUDriver *driver, migParams, flags, dname, re= source, &v3proto); } else { - if (qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM2) < = 0) + if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PERFORM2) = < 0) goto endjob; =20 ret =3D qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri= , cookiein, cookieinlen, --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196243; cv=none; d=zohomail.com; s=zohoarc; b=jhTtUofgqHAViTaalq7XLwpBXovgWrWWIzCWFOHu9/ipRXWDul/9Wb1yOn09M6e53cS8bemCcq7AAI4q7hwUoQboeIrJYBnFTswZ0kc3xPeCwzcfNA711eHKtgWg2mNq3ENx7JEtnXNULJImByo+s1izOaVVxmqAIxeyhBdMVcc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196243; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=sHGE48qWVU7Oumwtbz04xD4qa6lgLLBwbRnxFLV6dNI=; b=L+VqvlWKsaziPMq+a0xRsLD9K6rdMgkSZnYSpHknM5RDGUTWpcHdNLOKnrA2/2PmYLcpmJG7hQCdF9YRjI68AYWSQQx/HvWA+es3ZUr5zU3ko7VctAgHCz9jRK0CvGvHuCJCST8Pg36OSbBIPGg9HxmX60ver3vXeziT1r6qcFY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196243229779.0846977079229; Tue, 10 May 2022 08:24:03 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-282-lok_UP7VMPywF-XFTUPKAg-1; Tue, 10 May 2022 11:22:51 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0C23F1D9F894; Tue, 10 May 2022 15:22:04 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id ECA8E54B085; Tue, 10 May 2022 15:22:03 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id E2FE5193F515; Tue, 10 May 2022 15:21:56 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 8CFBC1947075 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 6EE7A54B086; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2CFE854B087 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id B2C5A24461E; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196241; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=sHGE48qWVU7Oumwtbz04xD4qa6lgLLBwbRnxFLV6dNI=; b=hJMZ+2fh0rKjrWAv9+uexgDYllWe9S8anf9SBHEiN6YFGxmpzC7MPBiPxMWePjuCYGjIhU mHjGVzpYTB/X+kT60+8ssb5fVMJIDOV/GD8Os5iwsRrEnT5ng4kZsaJPU9CKQWoyyuuqzf GP3Ia5mP21oO4ZrmnRc/Ww9BpYX2lHs= X-MC-Unique: lok_UP7VMPywF-XFTUPKAg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 50/80] qemu: Use QEMU_MIGRATION_PHASE_POSTCOPY_FAILED Date: Tue, 10 May 2022 17:21:11 +0200 Message-Id: <096318db1d7af3d511ce4e511175386eb0dbd3ad.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196245046100002 Content-Type: text/plain; charset="utf-8" This phase marks a migration protocol as broken in a post-copy phase. Libvirt is no longer actively watching the migration in this phase as the migration API that started the migration failed. This may either happen when post-copy migration really fails (QEMU enters postcopy-paused migration state) or when the migration still progresses between both QEMU processes, but libvirt lost control of it because the connection between libvirt daemons (in p2p migration) or a daemon and client (non-p2p migration) was closed. For example, when one of the daemons was restarted. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 15 +++++++++++---- src/qemu/qemu_process.c | 16 +++++++++++++--- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 3f6921b4b2..c111dd8686 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2369,6 +2369,7 @@ qemuMigrationSrcCleanup(virDomainObj *vm, vm->def->name); =20 if (virDomainObjIsPostcopy(vm, VIR_DOMAIN_JOB_OPERATION_MIGRATION_= OUT)) { + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE= _POSTCOPY_FAILED)); qemuMigrationSrcPostcopyFailed(vm); qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); qemuMigrationJobContinue(vm); @@ -2380,8 +2381,10 @@ qemuMigrationSrcCleanup(virDomainObj *vm, } break; =20 + case QEMU_MIGRATION_PHASE_POSTCOPY_FAILED: case QEMU_MIGRATION_PHASE_BEGIN_RESUME: case QEMU_MIGRATION_PHASE_PERFORM_RESUME: + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); qemuMigrationSrcPostcopyFailed(vm); qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); qemuMigrationJobContinue(vm); @@ -2402,7 +2405,6 @@ qemuMigrationSrcCleanup(virDomainObj *vm, case QEMU_MIGRATION_PHASE_PERFORM2: /* single phase outgoing migration; unreachable */ case QEMU_MIGRATION_PHASE_NONE: - case QEMU_MIGRATION_PHASE_POSTCOPY_FAILED: case QEMU_MIGRATION_PHASE_LAST: /* unreachable */ ; @@ -3774,6 +3776,7 @@ qemuMigrationSrcConfirm(virQEMUDriver *driver, flags, cancelled); =20 if (virDomainObjIsFailedPostcopy(vm)) { + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); qemuMigrationJobContinue(vm); } else { @@ -5607,6 +5610,7 @@ qemuMigrationSrcPerformJob(virQEMUDriver *driver, virErrorPreserveLast(&orig_err); =20 if (virDomainObjIsFailedPostcopy(vm)) { + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); qemuMigrationJobContinue(vm); } else { @@ -5699,6 +5703,8 @@ qemuMigrationSrcPerformPhase(virQEMUDriver *driver, jobPriv->migParams, priv->job.apiFlags); qemuMigrationJobFinish(vm); } else { + if (ret < 0) + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE= _POSTCOPY_FAILED)); qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); qemuMigrationJobContinue(vm); } @@ -5938,7 +5944,7 @@ qemuMigrationDstComplete(virQEMUDriver *driver, /* Guest is successfully running, so cancel previous auto destroy. The= re's * nothing to remove when we are resuming post-copy migration. */ - if (!virDomainObjIsFailedPostcopy(vm)) + if (job->phase < QEMU_MIGRATION_PHASE_POSTCOPY_FAILED) qemuProcessAutoDestroyRemove(driver, vm); =20 /* Remove completed stats for post-copy, everything but timing fields @@ -6205,6 +6211,7 @@ qemuMigrationDstFinishActive(virQEMUDriver *driver, } =20 if (virDomainObjIsFailedPostcopy(vm)) { + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); qemuProcessAutoDestroyRemove(driver, vm); qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); *finishJob =3D false; @@ -6327,9 +6334,9 @@ qemuMigrationProcessUnattended(virQEMUDriver *driver, vm->def->name); =20 if (job =3D=3D VIR_ASYNC_JOB_MIGRATION_IN) - phase =3D QEMU_MIGRATION_PHASE_FINISH3; + phase =3D QEMU_MIGRATION_PHASE_FINISH_RESUME; else - phase =3D QEMU_MIGRATION_PHASE_CONFIRM3; + phase =3D QEMU_MIGRATION_PHASE_CONFIRM_RESUME; =20 if (qemuMigrationJobStartPhase(vm, phase) < 0) return; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index c7ed0a5c56..f42c9a3018 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -1624,7 +1624,8 @@ qemuProcessHandleMigrationStatus(qemuMonitor *mon G_G= NUC_UNUSED, * watching it in any thread. Let's make sure the migration is properly * finished in case we get a "completed" event. */ - if (virDomainObjIsFailedPostcopy(vm) && + if (virDomainObjIsPostcopy(vm, priv->job.current->operation) && + priv->job.phase =3D=3D QEMU_MIGRATION_PHASE_POSTCOPY_FAILED && priv->job.asyncOwner =3D=3D 0 && status =3D=3D QEMU_MONITOR_MIGRATION_STATUS_COMPLETED) { struct qemuProcessEvent *proc =3D g_new0(struct qemuProcessEvent, = 1); @@ -3566,7 +3567,6 @@ qemuProcessRecoverMigrationIn(virQEMUDriver *driver, case QEMU_MIGRATION_PHASE_PERFORM3_DONE: case QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED: case QEMU_MIGRATION_PHASE_CONFIRM3: - case QEMU_MIGRATION_PHASE_POSTCOPY_FAILED: case QEMU_MIGRATION_PHASE_BEGIN_RESUME: case QEMU_MIGRATION_PHASE_PERFORM_RESUME: case QEMU_MIGRATION_PHASE_CONFIRM_RESUME: @@ -3604,6 +3604,7 @@ qemuProcessRecoverMigrationIn(virQEMUDriver *driver, } break; =20 + case QEMU_MIGRATION_PHASE_POSTCOPY_FAILED: case QEMU_MIGRATION_PHASE_PREPARE_RESUME: case QEMU_MIGRATION_PHASE_FINISH_RESUME: return 1; @@ -3639,7 +3640,6 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *driver, case QEMU_MIGRATION_PHASE_PREPARE: case QEMU_MIGRATION_PHASE_FINISH2: case QEMU_MIGRATION_PHASE_FINISH3: - case QEMU_MIGRATION_PHASE_POSTCOPY_FAILED: case QEMU_MIGRATION_PHASE_PREPARE_RESUME: case QEMU_MIGRATION_PHASE_FINISH_RESUME: case QEMU_MIGRATION_PHASE_LAST: @@ -3700,6 +3700,7 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *driver, } return 1; =20 + case QEMU_MIGRATION_PHASE_POSTCOPY_FAILED: case QEMU_MIGRATION_PHASE_BEGIN_RESUME: case QEMU_MIGRATION_PHASE_PERFORM_RESUME: return 1; @@ -3751,9 +3752,18 @@ qemuProcessRecoverMigration(virQEMUDriver *driver, return -1; =20 if (rc > 0) { + job->phase =3D QEMU_MIGRATION_PHASE_POSTCOPY_FAILED; + if (migStatus =3D=3D VIR_DOMAIN_JOB_STATUS_POSTCOPY) { VIR_DEBUG("Post-copy migration of domain %s still running, it " "will be handled as unattended", vm->def->name); + + if (state =3D=3D VIR_DOMAIN_RUNNING) + reason =3D VIR_DOMAIN_RUNNING_POSTCOPY; + else + reason =3D VIR_DOMAIN_PAUSED_POSTCOPY; + + virDomainObjSetState(vm, state, reason); qemuProcessRestoreMigrationJob(vm, job); return 0; } --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196201; cv=none; d=zohomail.com; s=zohoarc; b=Igvgc1D3kkbFzsBiqpXIuPZFa05MWrdaBDtH22Xlcjb6GX+CCrJVpgqV8WhI7JIPqRcyYy9rO/SBz+yfnW+cTX8rBAdMRngLwekdICBCQ/ot14mapRg2XksKvUaxFWgHEb6rUzDlZD5sOprkiJehj6qCS6bODnopXh9GH6aUJZ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196201; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5m+OcC8GLn9ecwZCzbIMLBTw3MEvyFgjoL6sEgiwMKQ=; b=iST2h1OOeaRjuZTnQlnX71mAJyt8cIeZFfQnLuVVjU26hYPk7/XnIy32oT9MBwWlSQoUw7b44j92MX4qJp2GwO3e8cvV2QJT0uA+P7GxxkjwpryWh4bkV937Kd/EZ2kL+VThZF54jFrAlzQGTkwmF9jKgBsP2rZUkiBP3F1UG+0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196201723347.95917871366703; Tue, 10 May 2022 08:23:21 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-609-f_DizcOhOfGH2MG-l42-Iw-1; Tue, 10 May 2022 11:23:06 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 413D11066570; Tue, 10 May 2022 15:22:15 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2690D54B085; Tue, 10 May 2022 15:22:15 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 541D31947B99; Tue, 10 May 2022 15:22:06 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 6F509194706E for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 57EE340D1B9F; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 385E24035782 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id B3FC524461F; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196200; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=5m+OcC8GLn9ecwZCzbIMLBTw3MEvyFgjoL6sEgiwMKQ=; b=eSqZa7QgTyRXzSIZO65MBiCWQoYT78oHcJF5g5cRpGi07UW+ww7B+x63AxRvDi1B4WMzNc cye7LKEnea8u9Xvn6qOThOcXnPzOZafeuEXJSLbPohoVBTTH6UY+i9qOnmwsuJdtgr39PG bF/0YPrFVZvOtLsTKAM49h5tpne9UPE= X-MC-Unique: f_DizcOhOfGH2MG-l42-Iw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 51/80] Introduce VIR_MIGRATE_POSTCOPY_RESUME flag Date: Tue, 10 May 2022 17:21:12 +0200 Message-Id: <48eed84ca99284f2ae9994cf20c38806281bc1cb.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196202825100009 Content-Type: text/plain; charset="utf-8" This flag can be used to restart post-copy migration once it failed because of a broken connection. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- include/libvirt/libvirt-domain.h | 5 +++++ src/libvirt-domain.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index 34b8adc2bf..aee2b49114 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -1084,6 +1084,11 @@ typedef enum { */ VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES =3D (1 << 18), =20 + /* Resume migration which failed in post-copy phase. + * + * Since: 8.4.0 + */ + VIR_MIGRATE_POSTCOPY_RESUME =3D (1 << 19), } virDomainMigrateFlags; =20 =20 diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 2e39687e27..41ba4aa39c 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -9762,6 +9762,12 @@ virDomainMigrateGetMaxSpeed(virDomainPtr domain, * in such case. Because of this, libvirt will refuse to cancel post-copy * migration via virDomainAbortJob. * + * Failed post-copy migration can be recovered once the cause for the fail= ure + * (e.g., a network issue) is resolved by repeating the migration with an + * additional VIR_MIGRATE_POSTCOPY_RESUME flag. This will recreate the + * connection and resume migration from the point where it failed. This st= ep + * can be repeated in case the migration breaks again. + * * The following domain life cycle events are emitted during post-copy * migration: * VIR_DOMAIN_EVENT_SUSPENDED_POSTCOPY (on the source) -- migration enter= ed --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196658; cv=none; d=zohomail.com; s=zohoarc; b=ZtPex4X3qYzOk7FBd9+JLzc19ojOWYExklDvpftj40R994oAHyyw325lcIsm79AUPJy1j4Kl23Bf14y46JJrpwVt1xLrpt7Y4/EEvLMt3gOIrKUMDuMCH08WpqEvbvJ/Td6Dazt9W9UDSA07nEE3nbL8fMvygwqr9ZFHy00DdbE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196658; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=zfoGqV6fu21xeTKHQMEhtM0jX88MF8b8EAksGTvwsHI=; b=XhAthZI6UurDQQMU5CsHVVhdlo6cq4n8RUVYuxfvEJ2zt8VO5ob5eU/vHVYYQsCSyHGwP2w2GcDPWHaq+egXiQYjTwtULTB1VGuEYeEp1D2usFVi2YUUSFzz3FRn9I5+N91jTVcIu1NS0sNO9xZVy2jV3wmOOuFT/KwELKkwYCE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196658870817.0094335438644; Tue, 10 May 2022 08:30:58 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-411-MargH2GqPHmUgiggTHCFzQ-1; Tue, 10 May 2022 11:30:55 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 554E7810BD8; Tue, 10 May 2022 15:30:52 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 40FBD40E7F0C; Tue, 10 May 2022 15:30:52 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 922261947067; Tue, 10 May 2022 15:30:51 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 623951947055 for ; Tue, 10 May 2022 15:28:02 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 54358C27E85; Tue, 10 May 2022 15:28:02 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 34D3EC27E83 for ; Tue, 10 May 2022 15:28:02 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id B5420244620; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196657; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=zfoGqV6fu21xeTKHQMEhtM0jX88MF8b8EAksGTvwsHI=; b=O76L6HhVO2uMRVCOMPVu0bhetj3rpi0O2b8EayLTui+WDUyn45unPq0jFJcVZCpFNGgVhd D3qHE65GImZzadymWUOQlu7f8XFwoiRz3ZUoOMMbYM6fNmz0N4LHl8pxRksjhXGCcGHiM2 OdBCgi4ArA2BuIVQVOr7c86+KHK5NKQ= X-MC-Unique: MargH2GqPHmUgiggTHCFzQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 52/80] virsh: Add --postcopy-resume option for migrate command Date: Tue, 10 May 2022 17:21:13 +0200 Message-Id: <187317531abdbc971640016ed5aafd3c25d8df41.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196659363100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- docs/manpages/virsh.rst | 9 +++++++-- tools/virsh-domain.c | 8 ++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst index e73e590754..e36d64c164 100644 --- a/docs/manpages/virsh.rst +++ b/docs/manpages/virsh.rst @@ -3246,7 +3246,8 @@ migrate migrate [--live] [--offline] [--direct] [--p2p [--tunnelled]] [--persistent] [--undefinesource] [--suspend] [--copy-storage-all] [--copy-storage-inc] [--change-protection] [--unsafe] [--verbose] - [--rdma-pin-all] [--abort-on-error] [--postcopy] [--postcopy-after-p= recopy] + [--rdma-pin-all] [--abort-on-error] [--postcopy] + [--postcopy-after-precopy] [--postcopy-resume] domain desturi [migrateuri] [graphicsuri] [listen-address] [dname] [--timeout seconds [--timeout-suspend | --timeout-postcopy]] [--xml file] [--migrate-disks disk-list] [--disks-port port] @@ -3302,7 +3303,11 @@ Once migration is running, the user may switch to po= st-copy using the automatically switch to post-copy after the first pass of pre-copy is fini= shed. The maximum bandwidth consumed during the post-copy phase may be limited u= sing *--postcopy-bandwidth*. The maximum bandwidth consumed during the pre-copy= phase -may be limited using *--bandwidth*. +may be limited using *--bandwidth*. In case connection between the hosts b= reaks +while migration is in post-copy mode, the domain cannot be resumed on eith= er +source or destination host and the ``migrate`` command will report an error +leaving the domain active on both hosts. To recover from such situation re= peat +the original ``migrate`` command with an additional *--postcopy-resume* fl= ag. =20 *--auto-converge* forces convergence during live migration. The initial guest CPU throttling rate can be set with *auto-converge-initial*. If the diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index ba492e807e..b0d5b15dff 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -10807,6 +10807,10 @@ static const vshCmdOptDef opts_migrate[] =3D { .type =3D VSH_OT_BOOL, .help =3D N_("automatically switch to post-copy migration after one p= ass of pre-copy") }, + {.name =3D "postcopy-resume", + .type =3D VSH_OT_BOOL, + .help =3D N_("resume failed post-copy migration") + }, {.name =3D "migrateuri", .type =3D VSH_OT_STRING, .completer =3D virshCompleteEmpty, @@ -11210,6 +11214,9 @@ doMigrate(void *opaque) if (vshCommandOptBool(cmd, "postcopy")) flags |=3D VIR_MIGRATE_POSTCOPY; =20 + if (vshCommandOptBool(cmd, "postcopy-resume")) + flags |=3D VIR_MIGRATE_POSTCOPY_RESUME; + if (vshCommandOptBool(cmd, "tls")) flags |=3D VIR_MIGRATE_TLS; =20 @@ -11314,6 +11321,7 @@ cmdMigrate(vshControl *ctl, const vshCmd *cmd) VSH_EXCLUSIVE_OPTIONS("live", "offline"); VSH_EXCLUSIVE_OPTIONS("timeout-suspend", "timeout-postcopy"); VSH_REQUIRE_OPTION("postcopy-after-precopy", "postcopy"); + VSH_REQUIRE_OPTION("postcopy-resume", "postcopy"); VSH_REQUIRE_OPTION("timeout-postcopy", "postcopy"); VSH_REQUIRE_OPTION("persistent-xml", "persistent"); VSH_REQUIRE_OPTION("tls-destination", "tls"); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196208; cv=none; d=zohomail.com; s=zohoarc; b=oDJJGcmogBTvcvQPzB/3vzpBt2PE2Ne2h3RWMDS79vVRuEWZFXvq6WG0x40IeO9S+jXjkVpEoOLKmRosit2+UzMidVRvHTIZaalZIhIxcmJOUjygg1+ZdypvldeBuvCpuTfo+vJb2tZI4xMW9hn7LQMqr8q34hvs4W7vtq36a8Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196208; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=OGZGPE0GKTj2JJLL9qpbFQhy5TZ40/4D2PQo9drJuXo=; b=QJaANd79cHuoU2LaQzdgWwdYUm9MxoGIhDKeWgXLJQsFR2gS4Hb4bP6J9qmlPaDb8XoF8wbqMUSRE6FIBuiogV/qHXq83zgmGNRcOdU82nbFa1yVmU5AdWAiEWovFF5noaRnejGOelNfk8PWAb9AdidyaxI8hL3Kx43o0wVcZ70= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196208882676.4759404618047; Tue, 10 May 2022 08:23:28 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-663-Y4eT9aIMPYGvP3bIo15RHg-1; Tue, 10 May 2022 11:23:14 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 502F184B100; Tue, 10 May 2022 15:22:16 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3C9CF40D1B9A; Tue, 10 May 2022 15:22:16 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id E9DDE1940358; Tue, 10 May 2022 15:22:06 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 9C48A1947070 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 6923A40D282D; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4873F40C1421 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id B67D2244621; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196206; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=OGZGPE0GKTj2JJLL9qpbFQhy5TZ40/4D2PQo9drJuXo=; b=eWyEPc2/0mC+p1aO9iAH03KTcieHTxCmzjA7Yq5Ex93PgOeaR2NRQOgS34oQnXs6NbQh8q ppxpSzqwldBCvlYQI0vhUNPhbPa9mDsO4MLL/xgvG54KMoH1WWLZn3wqT4FJt2HOtsIes1 brTRGAcsrSJptZLFDumI7iXzWQSj/2w= X-MC-Unique: Y4eT9aIMPYGvP3bIo15RHg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 53/80] qemu: Don't set VIR_MIGRATE_PAUSED for post-copy resume Date: Tue, 10 May 2022 17:21:14 +0200 Message-Id: <2989f203a801c6eca0a02c4fc0a796b8ef6d7dc9.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196210854100007 Content-Type: text/plain; charset="utf-8" For historical reasons we automatically enabled VIR_MIGRATE_PAUSED flag when a migration was started for a paused domain. However, when resuming failed post-copy migration the domain on the source host will always be paused (as it is already running on the destination host). We must avoid enabling VIR_MIGRATE_PAUSED in this case. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/libvirt-domain.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 41ba4aa39c..07fb8119d9 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -3279,7 +3279,9 @@ virDomainMigrateVersion3Full(virDomainPtr domain, ret =3D virDomainGetInfo(domain, &info); state =3D info.state; } - if (ret =3D=3D 0 && state =3D=3D VIR_DOMAIN_PAUSED) + if (ret =3D=3D 0 && + state =3D=3D VIR_DOMAIN_PAUSED && + !(flags & VIR_MIGRATE_POSTCOPY_RESUME)) flags |=3D VIR_MIGRATE_PAUSED; =20 destflags =3D flags & ~(VIR_MIGRATE_ABORT_ON_ERROR | --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196186; cv=none; d=zohomail.com; s=zohoarc; b=VCMszY+swCRKc/li4P7RrDypdonIjwT4B0oylQewoKA5dEicHjw9RsfhxN4rDrLr92wsBPmeFk3ZgGCGBhYyl4w22+TmMi/uNkcUV5QC4vVYECQigT3zh1qxtCtf1tbQSUL6Ebg3zVFe37meW6NuxFcpVad/mM0agGj3lvCfnoY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196186; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=xCVMyRPCFUr/k+BkQbxEJ0u7ipg6bKQkO/+UyBQoQy8=; b=fihfQMuXeIKEstyz1NCnmwL7qwijwKFcg7jrU+T5/3pWHefGeXbhBdX058ws9CAhQSZOIgwFDuOufV2YX9OdUESSsDyRl5wY+UOm8jkNhozJgBgS5rJLOeAsMa50ryVt9CUsGEbKV+2Qkjliuuta+ZRlOnd5uY+LC9o0FAOCTUQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196186970915.7924668002122; Tue, 10 May 2022 08:23:06 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-572-XulLRMYyPXiu9XN62sUP7A-1; Tue, 10 May 2022 11:22:53 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id F204528009A4; Tue, 10 May 2022 15:22:05 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id DDBD3401E9C; Tue, 10 May 2022 15:22:05 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 0DE50194E113; Tue, 10 May 2022 15:21:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id A72381947B8B for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 8691454B072; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4ABBF54B08D for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id B7C81244622; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196185; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=xCVMyRPCFUr/k+BkQbxEJ0u7ipg6bKQkO/+UyBQoQy8=; b=a4uYQmWxcmbQaYzJs7ZWu1ixsvy4QowwxuHOA139dnp6ED2UB+490VL6t+JGPHMFQZKjHk vxINkxRV0sjkvtYsbKf+2Yt9/Ucp+p51MWL2Bb8qtZSbpoQIufQgdyJmoBAjMZQNDJCSJo i+DDI4wPWA4Adt3V7sO2I4Eba9WOhvA= X-MC-Unique: XulLRMYyPXiu9XN62sUP7A-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 54/80] qemu: Implement VIR_MIGRATE_POSTCOPY_RESUME for Begin phase Date: Tue, 10 May 2022 17:21:15 +0200 Message-Id: <329176cb46114c0beb362bdeaf2e738579237904.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196188792100010 Content-Type: text/plain; charset="utf-8" Mostly we just need to check whether the domain is in a failed post-copy migration that can be resumed. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina --- src/qemu/qemu_migration.c | 143 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index c111dd8686..99b1d4b88b 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2717,6 +2717,143 @@ qemuMigrationSrcBeginPhase(virQEMUDriver *driver, flags); } =20 + +static bool +qemuMigrationAnyCanResume(virDomainObj *vm, + virDomainAsyncJob job, + unsigned long flags, + qemuMigrationJobPhase expectedPhase) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + + VIR_DEBUG("vm=3D%p, job=3D%s, flags=3D0x%lx, expectedPhase=3D%s", + vm, virDomainAsyncJobTypeToString(job), flags, + qemuDomainAsyncJobPhaseToString(VIR_ASYNC_JOB_MIGRATION_OUT, + expectedPhase)); + + if (!(flags & VIR_MIGRATE_POSTCOPY)) { + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", + _("resuming failed post-copy migration requires " + "post-copy to be enabled")); + return false; + } + + /* This should never happen since POSTCOPY_RESUME is newer than + * CHANGE_PROTECTION, but let's check it anyway in case we're talking = to + * a weired client. + */ + if (job =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT && + expectedPhase < QEMU_MIGRATION_PHASE_PERFORM_RESUME && + !(flags & VIR_MIGRATE_CHANGE_PROTECTION)) { + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", + _("resuming failed post-copy migration requires " + "change protection")); + return NULL; + } + + if (!qemuMigrationJobIsActive(vm, job)) + return false; + + if (priv->job.asyncOwner !=3D 0 && + priv->job.asyncOwner !=3D virThreadSelfID()) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("migration of domain %s is being actively monitor= ed " + "by another thread"), + vm->def->name); + return false; + } + + if (!virDomainObjIsPostcopy(vm, priv->job.current->operation)) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("migration of domain %s is not in post-copy phase= "), + vm->def->name); + return false; + } + + if (priv->job.phase < QEMU_MIGRATION_PHASE_POSTCOPY_FAILED && + !virDomainObjIsFailedPostcopy(vm)) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("post-copy migration of domain %s has not failed"= ), + vm->def->name); + return false; + } + + if (priv->job.phase > expectedPhase) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("resuming failed post-copy migration of domain %s= " + "already in progress"), + vm->def->name); + return false; + } + + return true; +} + + +static char * +qemuMigrationSrcBeginResume(virQEMUDriver *driver, + virDomainObj *vm, + const char *xmlin, + char **cookieout, + int *cookieoutlen, + unsigned long flags) +{ + virDomainJobStatus status; + + if (qemuMigrationAnyRefreshStatus(driver, vm, VIR_ASYNC_JOB_MIGRATION_= OUT, + &status) < 0) + return NULL; + + if (status !=3D VIR_DOMAIN_JOB_STATUS_POSTCOPY_PAUSED) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("QEMU reports migration is still running")); + return NULL; + } + + return qemuMigrationSrcBeginXML(driver, vm, xmlin, + cookieout, cookieoutlen, 0, NULL, 0, f= lags); +} + + +static char * +qemuMigrationSrcBeginResumePhase(virConnectPtr conn, + virQEMUDriver *driver, + virDomainObj *vm, + const char *xmlin, + char **cookieout, + int *cookieoutlen, + unsigned long flags) +{ + g_autofree char *xml =3D NULL; + + VIR_DEBUG("vm=3D%p", vm); + + if (!qemuMigrationAnyCanResume(vm, VIR_ASYNC_JOB_MIGRATION_OUT, flags, + QEMU_MIGRATION_PHASE_POSTCOPY_FAILED)) + return NULL; + + if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_BEGIN_RESUME) = < 0) + return NULL; + + virCloseCallbacksUnset(driver->closeCallbacks, vm, + qemuMigrationSrcCleanup); + qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob); + + xml =3D qemuMigrationSrcBeginResume(driver, vm, xmlin, cookieout, cook= ieoutlen, flags); + + if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn, + qemuMigrationSrcCleanup) < 0) + g_clear_pointer(&xml, g_free); + + if (!xml) + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); + + qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); + qemuMigrationJobContinue(vm); + return g_steal_pointer(&xml); +} + + char * qemuMigrationSrcBegin(virConnectPtr conn, virDomainObj *vm, @@ -2741,6 +2878,12 @@ qemuMigrationSrcBegin(virConnectPtr conn, goto cleanup; } =20 + if (flags & VIR_MIGRATE_POSTCOPY_RESUME) { + xml =3D qemuMigrationSrcBeginResumePhase(conn, driver, vm, xmlin, + cookieout, cookieoutlen, fl= ags); + goto cleanup; + } + if ((flags & VIR_MIGRATE_CHANGE_PROTECTION)) { if (qemuMigrationJobStart(driver, vm, VIR_ASYNC_JOB_MIGRATION_OUT, flags) < 0) --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196249; cv=none; d=zohomail.com; s=zohoarc; b=flWoMaC4Ehjnqj0lChg4fDPixom+PzJ9FQd8Qn5kGJTTri5S4pV2A5bi+tJlZDQlqYROYL4aR5ihe/Q4Iea3HIntETh2024G7jatyIlvMxKnjZ33DEsGKPiw77uWQCJbqdbNRPLzggURqG9Uc+tCYCHH+F2IDXUY/wXF0BwliTg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196249; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=aUmDu8JYwSx3PKnUP31BL/c1U8jvud2A0d2MNZkbh/8=; b=PQWVL6/AaiJdAL/Jkbpupc8f71NJKRRZMam9Q+E7wKv1UDTRQGlilDPIbIhQg/vHBk9Vq0KUgV6Zxvqco2DQmZA9LzD8+XL35lE31W7KKVvadmj0UXlgg4kyAdI32WHB9KQnRV5CJVFVHJpc6wF/zbFj19k5XTDesvbjwy7r50Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196249004757.7035641897833; Tue, 10 May 2022 08:24:09 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-617-7N-ufys9PXK9olj84_9JaQ-1; Tue, 10 May 2022 11:22:52 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 01E60A18F0D; Tue, 10 May 2022 15:22:05 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id DF87340CFD45; Tue, 10 May 2022 15:22:04 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 787EC194E00B; Tue, 10 May 2022 15:21:57 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 9D4D41947076 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 867EB40D282B; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 630D540D2822 for ; Tue, 10 May 2022 15:21:49 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id B9052244623; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196248; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=aUmDu8JYwSx3PKnUP31BL/c1U8jvud2A0d2MNZkbh/8=; b=KN6GnVkrWpJ3p5wUwUY7nZJ7EJ+iCZl/B/LVD/4EUVEaNukhRpILZWWAqwKOKyHn1QJTfz vso5v66CP+oUCE+mnWN31HzRslkP5O5Biei7xu6cSDmNZp4/QGMxO1WtVPrY3EhA3cVyW6 6Q6AWFuCjHnXYqpNCiKIWL0N9q4wOvA= X-MC-Unique: 7N-ufys9PXK9olj84_9JaQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 55/80] qmeu: Refactor qemuMigrationSrcPerformPhase Date: Tue, 10 May 2022 17:21:16 +0200 Message-Id: <11f4c64b727f7afeef0845048eb555f523d248aa.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196251090100003 Content-Type: text/plain; charset="utf-8" To make the code flow a bit more sensible. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 99b1d4b88b..dd18a4ad63 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -5819,29 +5819,27 @@ qemuMigrationSrcPerformPhase(virQEMUDriver *driver, } =20 if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PERFORM3) < 0) - goto endjob; + goto cleanup; =20 virCloseCallbacksUnset(driver->closeCallbacks, vm, qemuMigrationSrcCleanup); =20 - ret =3D qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri, co= okiein, cookieinlen, - cookieout, cookieoutlen, - flags, resource, NULL, graphicsuri, - nmigrate_disks, migrate_disks, mig= Params, nbdURI); - - if (ret < 0) { - qemuMigrationSrcRestoreDomainState(driver, vm); - goto endjob; - } - - ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM= 3_DONE)); + if (qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri, cookie= in, cookieinlen, + cookieout, cookieoutlen, + flags, resource, NULL, graphicsuri, + nmigrate_disks, migrate_disks, migPa= rams, nbdURI) < 0) + goto cleanup; =20 if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn, qemuMigrationSrcCleanup) < 0) - goto endjob; + goto cleanup; =20 - endjob: + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM= 3_DONE)); + ret =3D 0; + + cleanup: if (ret < 0 && !virDomainObjIsFailedPostcopy(vm)) { + qemuMigrationSrcRestoreDomainState(driver, vm); qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_OUT, jobPriv->migParams, priv->job.apiFlags); qemuMigrationJobFinish(vm); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196613; cv=none; d=zohomail.com; s=zohoarc; b=c/ZtZyxwq9G5CYP+cUiTLbkkOeFezzsbEex3u8BnTqSXAhhAp7N+S+bxPMUscKTlocQ1pneHzOQvzJSxXjhUEpAAtUg+9zzDUuSbt8no2GLLjP9dDo15B/lS2eTLdUgbE5NOGKtHZbtBqnTlwlJEYon2ncWEMOfASQxILRZWU2c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196613; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=OBtDNB9NTATQYICvp99pJUixQblTZCIt+qpwS00O0A8=; b=YBXzdWvTnS+1VIS1bvlETiaeCgvpj0lKPO2gOcyiD+MUQ5s9dRhgUcqy/vDxUX12ldJjjq31YyXjCQs3Q3J9eRb2cm+heWtcxwKoW6zC1I7Mn25VqYImBudvHHVC04oOikcygUYmIvY2WWoTMAcb7lwD8V6Kdp3w9rA7pidSsPk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196613414136.76425625604304; Tue, 10 May 2022 08:30:13 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-437-y7GsW3T4N-iYKkrRJYRuCg-1; Tue, 10 May 2022 11:30:09 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B0A98293248C; Tue, 10 May 2022 15:30:06 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 824BBC27E80; Tue, 10 May 2022 15:30:06 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 3260D1947055; Tue, 10 May 2022 15:30:06 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 988A3194704D for ; Tue, 10 May 2022 15:28:02 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 7118EC15D40; Tue, 10 May 2022 15:28:02 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 33F48C27E80 for ; Tue, 10 May 2022 15:28:02 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id BA5C2244624; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196612; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=OBtDNB9NTATQYICvp99pJUixQblTZCIt+qpwS00O0A8=; b=glSTphLa9P8LWz4R6oUX1FlbgYRvc2FDAJgOxK5wKPTYHnDOOmey7ad0K3P3oW5cqK9B5w d9dFSjY8OzYIk18gejgLDb9hLrFtyxsvoWH2KNhkd5qmsG5952GR7fp8QQFL/+wch+jVGe vloxQWqUj3/gCp9+cHC07Q5Xct7e38c= X-MC-Unique: y7GsW3T4N-iYKkrRJYRuCg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 56/80] qemu: Separate starting migration from qemuMigrationSrcRun Date: Tue, 10 May 2022 17:21:17 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196615125100001 Content-Type: text/plain; charset="utf-8" qemuMigrationSrcRun does a lot of thing before and after telling QEMU to start the migration. Let's make the core reusable by moving it to a new qemuMigrationSrcStart function. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 118 +++++++++++++++++++++++--------------- 1 file changed, 71 insertions(+), 47 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index dd18a4ad63..e1c67c51ec 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -4413,6 +4413,76 @@ qemuMigrationSrcRunPrepareBlockDirtyBitmaps(virDomai= nObj *vm, } =20 =20 +/* The caller is supposed to enter monitor before calling this. */ +static int +qemuMigrationSrcStart(virQEMUDriver *driver, + virDomainObj *vm, + qemuMigrationSpec *spec, + unsigned int migrateFlags, + int *tunnelFd) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + g_autofree char *timestamp =3D NULL; + int rc; + + /* connect to the destination qemu if needed */ + if ((spec->destType =3D=3D MIGRATION_DEST_CONNECT_HOST || + spec->destType =3D=3D MIGRATION_DEST_CONNECT_SOCKET) && + qemuMigrationSrcConnect(driver, vm, spec) < 0) { + return -1; + } + + /* log start of migration */ + if ((timestamp =3D virTimeStringNow()) !=3D NULL) + qemuDomainLogAppendMessage(driver, vm, "%s: initiating migration\n= ", timestamp); + + switch (spec->destType) { + case MIGRATION_DEST_HOST: + if (STREQ(spec->dest.host.protocol, "rdma") && + vm->def->mem.hard_limit > 0 && + virProcessSetMaxMemLock(vm->pid, vm->def->mem.hard_limit << 10= ) < 0) { + return -1; + } + return qemuMonitorMigrateToHost(priv->mon, migrateFlags, + spec->dest.host.protocol, + spec->dest.host.name, + spec->dest.host.port); + + case MIGRATION_DEST_SOCKET: + qemuSecurityDomainSetPathLabel(driver, vm, spec->dest.socket.path,= false); + return qemuMonitorMigrateToSocket(priv->mon, migrateFlags, + spec->dest.socket.path); + + case MIGRATION_DEST_CONNECT_HOST: + case MIGRATION_DEST_CONNECT_SOCKET: + /* handled above and transformed into MIGRATION_DEST_FD */ + break; + + case MIGRATION_DEST_FD: + if (spec->fwdType !=3D MIGRATION_FWD_DIRECT) { + if (!tunnelFd) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("tunnelFD argument is required for tunnel= led " + "migration")); + VIR_FORCE_CLOSE(spec->dest.fd.local); + VIR_FORCE_CLOSE(spec->dest.fd.qemu); + return -1; + } + *tunnelFd =3D spec->dest.fd.local; + spec->dest.fd.local =3D -1; + } + rc =3D qemuMonitorMigrateToFd(priv->mon, migrateFlags, + spec->dest.fd.qemu); + VIR_FORCE_CLOSE(spec->dest.fd.qemu); + return rc; + } + + virReportError(VIR_ERR_INTERNAL_ERROR, + _("unexpected migration schema: %d"), spec->destType); + return -1; +} + + static int qemuMigrationSrcRun(virQEMUDriver *driver, virDomainObj *vm, @@ -4448,7 +4518,6 @@ qemuMigrationSrcRun(virQEMUDriver *driver, bool cancel =3D false; unsigned int waitFlags; g_autoptr(virDomainDef) persistDef =3D NULL; - g_autofree char *timestamp =3D NULL; int rc; =20 if (resource > 0) @@ -4624,52 +4693,7 @@ qemuMigrationSrcRun(virQEMUDriver *driver, qemuMonitorSetMigrationSpeed(priv->mon, priv->migMaxBandwidth) < 0) goto exit_monitor; =20 - /* connect to the destination qemu if needed */ - if ((spec->destType =3D=3D MIGRATION_DEST_CONNECT_HOST || - spec->destType =3D=3D MIGRATION_DEST_CONNECT_SOCKET) && - qemuMigrationSrcConnect(driver, vm, spec) < 0) { - goto exit_monitor; - } - - /* log start of migration */ - if ((timestamp =3D virTimeStringNow()) !=3D NULL) - qemuDomainLogAppendMessage(driver, vm, "%s: initiating migration\n= ", timestamp); - - rc =3D -1; - switch (spec->destType) { - case MIGRATION_DEST_HOST: - if (STREQ(spec->dest.host.protocol, "rdma") && - vm->def->mem.hard_limit > 0 && - virProcessSetMaxMemLock(vm->pid, vm->def->mem.hard_limit << 10= ) < 0) { - goto exit_monitor; - } - rc =3D qemuMonitorMigrateToHost(priv->mon, migrate_flags, - spec->dest.host.protocol, - spec->dest.host.name, - spec->dest.host.port); - break; - - case MIGRATION_DEST_SOCKET: - qemuSecurityDomainSetPathLabel(driver, vm, spec->dest.socket.path,= false); - rc =3D qemuMonitorMigrateToSocket(priv->mon, migrate_flags, - spec->dest.socket.path); - break; - - case MIGRATION_DEST_CONNECT_HOST: - case MIGRATION_DEST_CONNECT_SOCKET: - /* handled above and transformed into MIGRATION_DEST_FD */ - break; - - case MIGRATION_DEST_FD: - if (spec->fwdType !=3D MIGRATION_FWD_DIRECT) { - fd =3D spec->dest.fd.local; - spec->dest.fd.local =3D -1; - } - rc =3D qemuMonitorMigrateToFd(priv->mon, migrate_flags, - spec->dest.fd.qemu); - VIR_FORCE_CLOSE(spec->dest.fd.qemu); - break; - } + rc =3D qemuMigrationSrcStart(driver, vm, spec, migrate_flags, &fd); =20 qemuDomainObjExitMonitor(vm); if (rc < 0) --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196250; cv=none; d=zohomail.com; s=zohoarc; b=hXoLpns1oj02u4yYhl+8xRrToyRJV68/Qhdhv5thKymxtQ4aIHKWzQF1gTVT+IFwVJxTl2WZ4RNy6g2FsK5e2RehGYGNNlIMcxNWFRPBahCZJpkFSx6pasxAkgCIH2zRkRd6Z0elAKMysfDMquyL45+JCt5OXTv/PC0H2V1WdZk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196250; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=yzCvWWvnWctUYWqaCiuMP+U4GR2MjxEli7GeA3K8/78=; b=W7e9gSqnd+OaafDePQvwCB4fKYK7O6cW9dmMRbtypAm9JB2SaEfGdyqyK3SSfWjflne7AZtS7KumPxloB8f+OTXYwQ8AtZd0bWZChCIvAj3LwSW0jq/VbrMR8S78TBUgyO0gd30qzG22zbdtoV2gcoiVJ5q8QJ5E1D6bBribVCw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196250854983.6216421821204; Tue, 10 May 2022 08:24:10 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-562-7HzjDwtWMryj_BJtPx0Q-Q-1; Tue, 10 May 2022 11:23:21 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 50352857D00; Tue, 10 May 2022 15:22:14 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3C9E415088B0; Tue, 10 May 2022 15:22:14 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id F23481949762; Tue, 10 May 2022 15:22:02 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 66B4819451EC for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 4EE6BC27EB1; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2F8F3C27DB5 for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id BB96B244625; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196249; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=yzCvWWvnWctUYWqaCiuMP+U4GR2MjxEli7GeA3K8/78=; b=GropBjIgS+E8Eb5HO2HD+nrzP2lRvx47nYuOQGIXBGamJGNZv7tx4OxQ2CZ1lQ76GB62S5 dcrfPaoUAbXmAVUbmvQn1qgwvdjVA8kAj0expOdKyMpl9bvGdUBYcerwoIXKmj68C1eUcn C49l8+pxNnwlwJQedO8jPhulQCqThRU= X-MC-Unique: 7HzjDwtWMryj_BJtPx0Q-Q-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 57/80] qemu: Add support for 'resume' parameter of migrate QMP command Date: Tue, 10 May 2022 17:21:18 +0200 Message-Id: <534a2419101403d89ecfb511c1a4ba97971cf7e2.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196251085100002 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 8 ++++++-- src/qemu/qemu_monitor.h | 1 + src/qemu/qemu_monitor_json.c | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index e1c67c51ec..30c8dbd954 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -4433,8 +4433,12 @@ qemuMigrationSrcStart(virQEMUDriver *driver, } =20 /* log start of migration */ - if ((timestamp =3D virTimeStringNow()) !=3D NULL) - qemuDomainLogAppendMessage(driver, vm, "%s: initiating migration\n= ", timestamp); + if ((timestamp =3D virTimeStringNow()) !=3D NULL) { + if (migrateFlags & QEMU_MONITOR_MIGRATE_RESUME) + qemuDomainLogAppendMessage(driver, vm, "%s: resuming migration= \n", timestamp); + else + qemuDomainLogAppendMessage(driver, vm, "%s: initiating migrati= on\n", timestamp); + } =20 switch (spec->destType) { case MIGRATION_DEST_HOST: diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 5949e21a39..38b65eb950 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -907,6 +907,7 @@ typedef enum { QEMU_MONITOR_MIGRATE_BACKGROUND =3D 1 << 0, QEMU_MONITOR_MIGRATE_NON_SHARED_DISK =3D 1 << 1, /* migration with non-= shared storage with full disk copy */ QEMU_MONITOR_MIGRATE_NON_SHARED_INC =3D 1 << 2, /* migration with non-= shared storage with incremental copy */ + QEMU_MONITOR_MIGRATE_RESUME =3D 1 << 3, /* resume failed post-= copy migration */ QEMU_MONITOR_MIGRATION_FLAGS_LAST } QEMU_MONITOR_MIGRATE; =20 diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index df3fdfe4fb..ea2e001483 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -3419,10 +3419,12 @@ int qemuMonitorJSONMigrate(qemuMonitor *mon, bool detach =3D !!(flags & QEMU_MONITOR_MIGRATE_BACKGROUND); bool blk =3D !!(flags & QEMU_MONITOR_MIGRATE_NON_SHARED_DISK); bool inc =3D !!(flags & QEMU_MONITOR_MIGRATE_NON_SHARED_INC); + bool resume =3D !!(flags & QEMU_MONITOR_MIGRATE_RESUME); g_autoptr(virJSONValue) cmd =3D qemuMonitorJSONMakeCommand("migrate", "b:detach", d= etach, "b:blk", blk, "b:inc", inc, + "b:resume", r= esume, "s:uri", uri, NULL); g_autoptr(virJSONValue) reply =3D NULL; --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196166; cv=none; d=zohomail.com; s=zohoarc; b=S8RqeZkiOXQNZsOfWM9p5QWJlrBMrhBx4mfnzNC0dORgDwr9zVNYNTTQAcdS0EpwgsszXZpOZODaR3oispQ6TPWD5NOAZopVDBVaXx4ehvCwbeRa5UigS5A3viRndFdxFkoDTWB320IF5SdqcOpZvvUeuSPcuMqBNU9xaF2gG1c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196166; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=o5PF4N2BsDq1Jyf/Ejzo+W7o/BKTpsWdsZt8TXK9yQ0=; b=bwwVxuFFjKUsifjbwvaPx1rH/l6gm/tModm/SS1neS+BNShMJmqUV34XbyDrz1042AB16LkA9Zp3toAZjSOd2sSDYP6GL3pEGv2mwKg8rsdRPAwoTPoNDkvSOWqqbOmU6Eq7FVRwci5SNJjmeWWk5fOwzMUSlB1oeN8k0J5t6t8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196166033843.4991898424656; Tue, 10 May 2022 08:22:46 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-221-FE05UuzGM9WOrx4u-beOsw-1; Tue, 10 May 2022 11:22:35 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 159E23C977DA; Tue, 10 May 2022 15:22:07 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id EDA4015088B0; Tue, 10 May 2022 15:22:06 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id EACF5194E115; Tue, 10 May 2022 15:21:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 8961B1947071 for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 6B94740E7F0C; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2FA1340E7F06 for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id BCE03244626; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196164; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=o5PF4N2BsDq1Jyf/Ejzo+W7o/BKTpsWdsZt8TXK9yQ0=; b=Cow3uAIaIpFpdyQak80r5TR/TQJxma777/EMd/9aGNA2uEnaBvExggtgZuFtwozUTa4MeY znIq+XtDRHMAm0awgYPYLnZliNW60U1xGTfm5wlpxaCigPg+vSqWFu4RgwC22OOxcJkVcI PM8Ovp0RDdiOHVPgSlC/YQOdL8ihu98= X-MC-Unique: FE05UuzGM9WOrx4u-beOsw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 58/80] qemu: Implement VIR_MIGRATE_POSTCOPY_RESUME for Perform phase Date: Tue, 10 May 2022 17:21:19 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196166636100003 Content-Type: text/plain; charset="utf-8" It just calls migrate QMP command with resume=3Dtrue without having to worry about migration capabilities or parameters, storage migration, etc. since everything has already been done in the normal Perform phase. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 110 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 106 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 30c8dbd954..29be797d78 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -4857,6 +4857,51 @@ qemuMigrationSrcRun(virQEMUDriver *driver, goto error; } =20 + +static int +qemuMigrationSrcResume(virQEMUDriver *driver, + virDomainObj *vm, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + qemuMigrationSpec *spec) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + g_autoptr(qemuMigrationCookie) mig =3D NULL; + unsigned int migrateFlags =3D QEMU_MONITOR_MIGRATE_BACKGROUND | + QEMU_MONITOR_MIGRATE_RESUME; + int rc; + + VIR_DEBUG("vm=3D%p", vm); + + mig =3D qemuMigrationCookieParse(driver, vm->def, priv->origname, priv, + cookiein, cookieinlen, + QEMU_MIGRATION_COOKIE_CAPS); + if (!mig) + return -1; + + if (qemuDomainObjEnterMonitorAsync(driver, vm, + VIR_ASYNC_JOB_MIGRATION_OUT) < 0) + return -1; + + rc =3D qemuMigrationSrcStart(driver, vm, spec, migrateFlags, NULL); + + qemuDomainObjExitMonitor(vm); + if (rc < 0) + return -1; + + if (qemuMigrationCookieFormat(mig, driver, vm, + QEMU_MIGRATION_SOURCE, + cookieout, cookieoutlen, + QEMU_MIGRATION_COOKIE_STATS) < 0) { + VIR_WARN("Unable to encode migration cookie"); + } + + return 0; +} + + /* Perform migration using QEMU's native migrate support, * not encrypted obviously */ @@ -4946,10 +4991,16 @@ qemuMigrationSrcPerformNative(virQEMUDriver *driver, =20 spec.fwdType =3D MIGRATION_FWD_DIRECT; =20 - ret =3D qemuMigrationSrcRun(driver, vm, persist_xml, cookiein, cookiei= nlen, cookieout, - cookieoutlen, flags, resource, &spec, dconn, - graphicsuri, nmigrate_disks, migrate_disks, - migParams, nbdURI); + if (flags & VIR_MIGRATE_POSTCOPY_RESUME) { + ret =3D qemuMigrationSrcResume(driver, vm, cookiein, cookieinlen, + cookieout, cookieoutlen, &spec); + } else { + ret =3D qemuMigrationSrcRun(driver, vm, persist_xml, cookiein, coo= kieinlen, + cookieout, cookieoutlen, flags, resource, + &spec, dconn, graphicsuri, + nmigrate_disks, migrate_disks, + migParams, nbdURI); + } =20 if (spec.destType =3D=3D MIGRATION_DEST_FD) VIR_FORCE_CLOSE(spec.dest.fd.qemu); @@ -5812,6 +5863,51 @@ qemuMigrationSrcPerformJob(virQEMUDriver *driver, return ret; } =20 + +static int +qemuMigrationSrcPerformResume(virQEMUDriver *driver, + virConnectPtr conn, + virDomainObj *vm, + const char *uri, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + unsigned long flags) +{ + int ret; + + VIR_DEBUG("vm=3D%p, uri=3D%s", vm, uri); + + if (!qemuMigrationAnyCanResume(vm, VIR_ASYNC_JOB_MIGRATION_OUT, flags, + QEMU_MIGRATION_PHASE_BEGIN_RESUME)) + return -1; + + if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PERFORM_RESUME= ) < 0) + return -1; + + virCloseCallbacksUnset(driver->closeCallbacks, vm, + qemuMigrationSrcCleanup); + qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob); + + ret =3D qemuMigrationSrcPerformNative(driver, vm, NULL, uri, + cookiein, cookieinlen, + cookieout, cookieoutlen, flags, + 0, NULL, NULL, 0, NULL, NULL, NULL= ); + + if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn, + qemuMigrationSrcCleanup) < 0) + ret =3D -1; + + if (ret < 0) + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); + + qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); + qemuMigrationJobContinue(vm); + return ret; +} + + /* * This implements perform phase of v3 migration protocol. */ @@ -5837,6 +5933,12 @@ qemuMigrationSrcPerformPhase(virQEMUDriver *driver, qemuDomainJobPrivate *jobPriv =3D priv->job.privateData; int ret =3D -1; =20 + if (flags & VIR_MIGRATE_POSTCOPY_RESUME) { + return qemuMigrationSrcPerformResume(driver, conn, vm, uri, + cookiein, cookieinlen, + cookieout, cookieoutlen, flag= s); + } + /* If we didn't start the job in the begin phase, start it now. */ if (!(flags & VIR_MIGRATE_CHANGE_PROTECTION)) { if (qemuMigrationJobStart(driver, vm, VIR_ASYNC_JOB_MIGRATION_OUT, --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196255; cv=none; d=zohomail.com; s=zohoarc; b=h0L/s8p0tsNQtARmVuD6nrG02fYpqathknhSdIRS9lbAiZT1eUuYaSdzXmTVVFd0LFofXed2ekGYtbkoNbDVfHja3karALb3t+v33zicrXGBeJKjb5uHV0dcZUt16sxaLw4p5ivRxAErJvUlNeqnWnp0uHTDWFEwKVWi+VpMV44= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196255; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Loaf11k1cKYajVU9BRaI4qEjUVcbyvlmVrKo9xGgEaY=; b=daEvAYaXo6TWPVjhJg3okcKW/i6bLBPc/cYqgMU4ixp+cNjh1irwF+so4e/fLFe1nImgxzZF+Z7zMQ1m9FXtKnXMyknSrwO4m0oORAPnhFx6P0hYNtNVn2pzi8GaTBKQUBaFzNfe5q2luULVaaBIetzbITP05df6ZEiVAMjBa94= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196254999122.94522318734266; Tue, 10 May 2022 08:24:14 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-277-s7hKOpmgP3GphpIqW6s6nA-1; Tue, 10 May 2022 11:22:52 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3364E862F95; Tue, 10 May 2022 15:22:06 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id DE0D240D017A; Tue, 10 May 2022 15:22:05 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 0ADDA194E10F; Tue, 10 May 2022 15:21:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5EEC81947070 for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 4AEB514E1D8A; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2B53614E1D88 for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id BE1FF244627; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196254; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=Loaf11k1cKYajVU9BRaI4qEjUVcbyvlmVrKo9xGgEaY=; b=jVoPA+hGZvMe5Qodv+znKmhuaWZmucLQkPp7UgYYwNBhsqZycgCyfw/rRShUlMhL79jzKP EliY8bwbwpg/c2BehQay4HSRCVLBVTW5VxjblSSP3DoyHm0NnQMTbOhUyoMxAJQQCvUKhT h0JLx+JLBiRJCEbXWLQuht4jMXGfQls= X-MC-Unique: s7hKOpmgP3GphpIqW6s6nA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 59/80] qemu: Implement VIR_MIGRATE_POSTCOPY_RESUME for Confirm phase Date: Tue, 10 May 2022 17:21:20 +0200 Message-Id: <263f6ed4c21defe94f9e8380a6cf08cf4b00b95d.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196257129100009 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 49 +++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 29be797d78..8ed1c2c2b6 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3812,15 +3812,19 @@ qemuMigrationSrcConfirmPhase(virQEMUDriver *driver, =20 virCheckFlags(QEMU_MIGRATION_FLAGS, -1); =20 - /* Keep the original migration phase in case post-copy failed as the j= ob - * will stay active even though migration API finishes with an error. - */ - if (virDomainObjIsFailedPostcopy(vm)) + if (flags & VIR_MIGRATE_POSTCOPY_RESUME) { + phase =3D QEMU_MIGRATION_PHASE_CONFIRM_RESUME; + } else if (virDomainObjIsFailedPostcopy(vm)) { + /* Keep the original migration phase in case post-copy failed as t= he + * job will stay active even though migration API finishes with an + * error. + */ phase =3D priv->job.phase; - else if (retcode =3D=3D 0) + } else if (retcode =3D=3D 0) { phase =3D QEMU_MIGRATION_PHASE_CONFIRM3; - else + } else { phase =3D QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED; + } =20 if (qemuMigrationJobStartPhase(vm, phase) < 0) return -1; @@ -3895,24 +3899,35 @@ qemuMigrationSrcConfirm(virQEMUDriver *driver, qemuDomainObjPrivate *priv =3D vm->privateData; int ret =3D -1; =20 - if (!qemuMigrationJobIsActive(vm, VIR_ASYNC_JOB_MIGRATION_OUT)) - goto cleanup; + VIR_DEBUG("vm=3D%p, flags=3D0x%x, cancelled=3D%d", vm, flags, cancelle= d); =20 - /* Keep the original migration phase in case post-copy failed as the j= ob - * will stay active even though migration API finishes with an error. - */ - if (virDomainObjIsFailedPostcopy(vm)) - phase =3D priv->job.phase; - else if (cancelled) - phase =3D QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED; - else - phase =3D QEMU_MIGRATION_PHASE_CONFIRM3; + if (flags & VIR_MIGRATE_POSTCOPY_RESUME) { + if (!qemuMigrationAnyCanResume(vm, VIR_ASYNC_JOB_MIGRATION_OUT, fl= ags, + QEMU_MIGRATION_PHASE_PERFORM_RESUME= )) + goto cleanup; + phase =3D QEMU_MIGRATION_PHASE_CONFIRM_RESUME; + } else { + if (!qemuMigrationJobIsActive(vm, VIR_ASYNC_JOB_MIGRATION_OUT)) + goto cleanup; + + /* Keep the original migration phase in case post-copy failed as t= he + * job will stay active even though migration API finishes with an + * error. + */ + if (virDomainObjIsFailedPostcopy(vm)) + phase =3D priv->job.phase; + else if (cancelled) + phase =3D QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED; + else + phase =3D QEMU_MIGRATION_PHASE_CONFIRM3; + } =20 if (qemuMigrationJobStartPhase(vm, phase) < 0) goto cleanup; =20 virCloseCallbacksUnset(driver->closeCallbacks, vm, qemuMigrationSrcCleanup); + qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob); =20 ret =3D qemuMigrationSrcConfirmPhase(driver, vm, cookiein, cookieinlen, --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196218; cv=none; d=zohomail.com; s=zohoarc; b=V0Sze6ZshVUv5pTyukXSXHuxYKi6L6jNQ3wzeejTkMJhegRlcZbhWw6Am6Bi0eLPnAZ/qBTIsz8EYaPCToL3GgOe1gfptSzPA76snI2M8FelfgT3S1/fCmkJfv9Z95y/LrHcg0BfqwMoHqm0nYvNMk3KsSIfwPEx/pBNz2iOKz8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196218; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+sU/30ucAsKOSnBaRajMiA0x3v+VHOhTb8j3K7unJiU=; b=fK7jryAKE7Pqc1eddukjbZtyXflbXVtCfWm40r2IIJjxqnj0CHoBFEG64Dcuhsp3BVdXYjEgx3Nppjkgwq6HUfV+q+t1SUwvByPerMx2iax2Az2LQhGfaes14IrPMin6ONWD7h9sicuhb/vni+tEnj28DiSZQBqoHMXBnXd9e/M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196218528565.9197458939539; Tue, 10 May 2022 08:23:38 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-164-9aqTnnsaP1uwPPK8EsNxgA-1; Tue, 10 May 2022 11:23:28 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 210EE3C977EC; Tue, 10 May 2022 15:22:20 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0B7904010E46; Tue, 10 May 2022 15:22:20 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 3EDD21940374; Tue, 10 May 2022 15:22:09 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id C2B511947061 for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 9AC5814E1D93; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4DFA114E1D91 for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id BF874244628; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196217; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=+sU/30ucAsKOSnBaRajMiA0x3v+VHOhTb8j3K7unJiU=; b=ibwbTzHYeXhW1NPCLAJTE/28BI2T2lC7xnynRO4q9toA/LGcERY38MSkiz/NR5ShNe3xRY eRqUqpkSMYva9uQyl6HH2mSFOd74FmjYDieglwH7OcCHEhxTaj6WsgZIGwn83yCXR4bpWX DOhzNN4NfF073AqhhV4ZIkdwlOxtjCA= X-MC-Unique: 9aqTnnsaP1uwPPK8EsNxgA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 60/80] qemu: Introduce qemuMigrationDstPrepareFresh Date: Tue, 10 May 2022 17:21:21 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196219017100001 Content-Type: text/plain; charset="utf-8" Moves most of the code from qemuMigrationDstPrepareAny to a new qemuMigrationDstPrepareFresh so that qemuMigrationDstPrepareAny can be shared with post-copy resume. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 165 ++++++++++++++++++++++++-------------- 1 file changed, 103 insertions(+), 62 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 8ed1c2c2b6..f1e3774034 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3119,27 +3119,26 @@ qemuMigrationDstPrepareAnyBlockDirtyBitmaps(virDoma= inObj *vm, =20 =20 static int -qemuMigrationDstPrepareAny(virQEMUDriver *driver, - virConnectPtr dconn, - const char *cookiein, - int cookieinlen, - char **cookieout, - int *cookieoutlen, - virDomainDef **def, - const char *origname, - virStreamPtr st, - const char *protocol, - unsigned short port, - bool autoPort, - const char *listenAddress, - size_t nmigrate_disks, - const char **migrate_disks, - int nbdPort, - const char *nbdURI, - qemuMigrationParams *migParams, - unsigned long flags) +qemuMigrationDstPrepareFresh(virQEMUDriver *driver, + virConnectPtr dconn, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + virDomainDef **def, + const char *origname, + virStreamPtr st, + const char *protocol, + unsigned short port, + bool autoPort, + const char *listenAddress, + size_t nmigrate_disks, + const char **migrate_disks, + int nbdPort, + const char *nbdURI, + qemuMigrationParams *migParams, + unsigned long flags) { - g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); virDomainObj *vm =3D NULL; virObjectEvent *event =3D NULL; virErrorPtr origErr; @@ -3159,55 +3158,18 @@ qemuMigrationDstPrepareAny(virQEMUDriver *driver, int rv; g_autofree char *tlsAlias =3D NULL; =20 + VIR_DEBUG("name=3D%s, origname=3D%s, protocol=3D%s, port=3D%hu, " + "listenAddress=3D%s, nbdPort=3D%d, nbdURI=3D%s, flags=3D0x%l= x", + (*def)->name, NULLSTR(origname), protocol, port, + listenAddress, nbdPort, NULLSTR(nbdURI), flags); + if (flags & VIR_MIGRATE_OFFLINE) { - if (flags & (VIR_MIGRATE_NON_SHARED_DISK | - VIR_MIGRATE_NON_SHARED_INC)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("offline migration cannot handle " - "non-shared storage")); - goto cleanup; - } - if (!(flags & VIR_MIGRATE_PERSIST_DEST)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("offline migration must be specified with " - "the persistent flag set")); - goto cleanup; - } - if (tunnel) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("tunnelled offline migration does not " - "make sense")); - goto cleanup; - } cookieFlags =3D 0; } else { cookieFlags =3D QEMU_MIGRATION_COOKIE_GRAPHICS | QEMU_MIGRATION_COOKIE_CAPS; } =20 - if (flags & VIR_MIGRATE_POSTCOPY && - (!(flags & VIR_MIGRATE_LIVE) || - flags & VIR_MIGRATE_PAUSED)) { - virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", - _("post-copy migration is not supported with non-li= ve " - "or paused migration")); - goto cleanup; - } - - if (flags & VIR_MIGRATE_POSTCOPY && flags & VIR_MIGRATE_TUNNELLED) { - virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", - _("post-copy is not supported with tunnelled migrat= ion")); - goto cleanup; - } - - if (cfg->migrateTLSForce && - !(flags & VIR_MIGRATE_TUNNELLED) && - !(flags & VIR_MIGRATE_TLS)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("this libvirtd instance allows migration only wit= h VIR_MIGRATE_TLS flag")); - goto cleanup; - } - if (!qemuMigrationSrcIsAllowedHostdev(*def)) goto cleanup; =20 @@ -3499,6 +3461,85 @@ qemuMigrationDstPrepareAny(virQEMUDriver *driver, } =20 =20 +static int +qemuMigrationDstPrepareAny(virQEMUDriver *driver, + virConnectPtr dconn, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + virDomainDef **def, + const char *origname, + virStreamPtr st, + const char *protocol, + unsigned short port, + bool autoPort, + const char *listenAddress, + size_t nmigrate_disks, + const char **migrate_disks, + int nbdPort, + const char *nbdURI, + qemuMigrationParams *migParams, + unsigned long flags) +{ + g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver); + + if (flags & VIR_MIGRATE_OFFLINE) { + if (flags & (VIR_MIGRATE_NON_SHARED_DISK | + VIR_MIGRATE_NON_SHARED_INC)) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("offline migration cannot handle " + "non-shared storage")); + return -1; + } + if (!(flags & VIR_MIGRATE_PERSIST_DEST)) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("offline migration must be specified with " + "the persistent flag set")); + return -1; + } + if (st) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("tunnelled offline migration does not " + "make sense")); + return -1; + } + } + + if (flags & VIR_MIGRATE_POSTCOPY && + (!(flags & VIR_MIGRATE_LIVE) || + flags & VIR_MIGRATE_PAUSED)) { + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", + _("post-copy migration is not supported with non-li= ve " + "or paused migration")); + return -1; + } + + if (flags & VIR_MIGRATE_POSTCOPY && flags & VIR_MIGRATE_TUNNELLED) { + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", + _("post-copy is not supported with tunnelled migrat= ion")); + return -1; + } + + if (cfg->migrateTLSForce && + !(flags & VIR_MIGRATE_TUNNELLED) && + !(flags & VIR_MIGRATE_TLS)) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("this libvirtd instance allows migration only wit= h VIR_MIGRATE_TLS flag")); + return -1; + } + + return qemuMigrationDstPrepareFresh(driver, dconn, + cookiein, cookieinlen, + cookieout, cookieoutlen, + def, origname, st, protocol, + port, autoPort, listenAddress, + nmigrate_disks, migrate_disks, + nbdPort, nbdURI, + migParams, flags); +} + + /* * This version starts an empty VM listening on a localhost TCP port, and * sets up the corresponding virStream to handle the incoming data. --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196501; cv=none; d=zohomail.com; s=zohoarc; b=c+EKjdJa1RSjuYZDdl+98a1naSk2/8PbAWQiRtBw8sTiZ8a/hfLdzcwGsD5mr9qWvtA5K26s72gx9OT+9Yo2MyBXYG0gS7X1JmwINHs3U3D1ZmGKWORJ+mS6m2eimXpTHlobYyrX9dWWkS0rKBHQ0ZxY3V+aCf3wkSn5OcYaPWs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196501; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5+S1RrBl9Q0JwfLy0INP6DiRG+QSpgeMOp+KzYbl0X4=; b=MmDvurzCx1Q7V998Rxn3dk5z9q545PDVuOyOvln7D9uHB8XnW8eqGOVAu8Z134H7CvnuO5zjE6g00FL0h0wSjyp1Zol0RLNYGBO4dt5n3+ZMMwMGBSvW18y0IONk++RcX1MfC33yeAKljk4TFlCNZn+SoQIThzoauh6xVQ0Urbg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 165219650113883.75910512284884; Tue, 10 May 2022 08:28:21 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-665-6DY5_q1ANxawqen5L_u-aw-1; Tue, 10 May 2022 11:28:13 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E15DC2949BD1; Tue, 10 May 2022 15:28:09 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id CE51140CFD06; Tue, 10 May 2022 15:28:08 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 9F59D194705D; Tue, 10 May 2022 15:28:08 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 63B25194704D for ; Tue, 10 May 2022 15:28:00 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 480AE403579A; Tue, 10 May 2022 15:28:00 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E420A40C1421 for ; Tue, 10 May 2022 15:27:59 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id C1666244629; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196499; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=5+S1RrBl9Q0JwfLy0INP6DiRG+QSpgeMOp+KzYbl0X4=; b=XCB9qLovkB3yoWd+H5jXBTtC1dUjJVqLIyeVHCjS1cwdgPhj804pCKdRHAkUHVjWDbd9Uj m0OoK350hDg6YPWZ8ickW2ZIPgN9WeoeAlahG5WkwdrJX5AMPkKhLr++GbOnLXVy18Hfzp afevnZY5traxx38JYmU7s0XT15j9290= X-MC-Unique: 6DY5_q1ANxawqen5L_u-aw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 61/80] qemu: Refactor qemuMigrationDstPrepareFresh Date: Tue, 10 May 2022 17:21:22 +0200 Message-Id: <9624e404bf7ba91ff2fe2543527e69f93270fa69.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196502440100001 Content-Type: text/plain; charset="utf-8" Offline migration jumps over a big part of qemuMigrationDstPrepareFresh. Let's move that part into a new qemuMigrationDstPrepareActive function to make the code easier to follow. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 374 +++++++++++++++++++++----------------- 1 file changed, 206 insertions(+), 168 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index f1e3774034..dc608fb8a4 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3118,6 +3118,200 @@ qemuMigrationDstPrepareAnyBlockDirtyBitmaps(virDoma= inObj *vm, } =20 =20 +static int +qemuMigrationDstPrepareActive(virQEMUDriver *driver, + virDomainObj *vm, + virConnectPtr dconn, + qemuMigrationCookie *mig, + virStreamPtr st, + const char *protocol, + unsigned short port, + const char *listenAddress, + size_t nmigrate_disks, + const char **migrate_disks, + int nbdPort, + const char *nbdURI, + qemuMigrationParams *migParams, + unsigned long flags) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + qemuDomainJobPrivate *jobPriv =3D priv->job.privateData; + qemuProcessIncomingDef *incoming =3D NULL; + g_autofree char *tlsAlias =3D NULL; + virObjectEvent *event =3D NULL; + virErrorPtr origErr =3D NULL; + int dataFD[2] =3D { -1, -1 }; + bool stopProcess =3D false; + unsigned int startFlags; + bool relabel =3D false; + bool tunnel =3D !!st; + int ret =3D -1; + int rv; + + if (STREQ_NULLABLE(protocol, "rdma") && + !virMemoryLimitIsSet(vm->def->mem.hard_limit)) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("cannot start RDMA migration with no memory hard " + "limit set")); + goto error; + } + + if (qemuMigrationDstPrecreateStorage(vm, mig->nbd, + nmigrate_disks, migrate_disks, + !!(flags & VIR_MIGRATE_NON_SHARED= _INC)) < 0) + goto error; + + if (tunnel && + virPipe(dataFD) < 0) + goto error; + + startFlags =3D VIR_QEMU_PROCESS_START_AUTODESTROY; + + if (qemuProcessInit(driver, vm, mig->cpu, VIR_ASYNC_JOB_MIGRATION_IN, + true, startFlags) < 0) + goto error; + stopProcess =3D true; + + if (!(incoming =3D qemuMigrationDstPrepare(vm, tunnel, protocol, + listenAddress, port, + dataFD[0]))) + goto error; + + if (qemuProcessPrepareDomain(driver, vm, startFlags) < 0) + goto error; + + if (qemuProcessPrepareHost(driver, vm, startFlags) < 0) + goto error; + + rv =3D qemuProcessLaunch(dconn, driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, + incoming, NULL, + VIR_NETDEV_VPORT_PROFILE_OP_MIGRATE_IN_START, + startFlags); + if (rv < 0) { + if (rv =3D=3D -2) + relabel =3D true; + goto error; + } + relabel =3D true; + + if (tunnel) { + if (virFDStreamOpen(st, dataFD[1]) < 0) { + virReportSystemError(errno, "%s", + _("cannot pass pipe for tunnelled migrati= on")); + goto error; + } + dataFD[1] =3D -1; /* 'st' owns the FD now & will close it */ + } + + if (STREQ_NULLABLE(protocol, "rdma") && + vm->def->mem.hard_limit > 0 && + virProcessSetMaxMemLock(vm->pid, vm->def->mem.hard_limit << 10) < = 0) { + goto error; + } + + if (qemuMigrationDstPrepareAnyBlockDirtyBitmaps(vm, mig, migParams, fl= ags) < 0) + goto error; + + if (qemuMigrationParamsCheck(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, + migParams, mig->caps->automatic) < 0) + goto error; + + /* Migrations using TLS need to add the "tls-creds-x509" object and + * set the migration TLS parameters */ + if (flags & VIR_MIGRATE_TLS) { + if (qemuMigrationParamsEnableTLS(driver, vm, true, + VIR_ASYNC_JOB_MIGRATION_IN, + &tlsAlias, NULL, + migParams) < 0) + goto error; + } else { + if (qemuMigrationParamsDisableTLS(vm, migParams) < 0) + goto error; + } + + if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, + migParams) < 0) + goto error; + + if (mig->nbd && + flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC)= && + virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NBD_SERVER)) { + const char *nbdTLSAlias =3D NULL; + + if (flags & VIR_MIGRATE_TLS) { + if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NBD_TLS)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("QEMU NBD server does not support TLS tra= nsport")); + goto error; + } + + nbdTLSAlias =3D tlsAlias; + } + + if (qemuMigrationDstStartNBDServer(driver, vm, incoming->address, + nmigrate_disks, migrate_disks, + nbdPort, nbdURI, + nbdTLSAlias) < 0) { + goto error; + } + } + + if (mig->lockState) { + VIR_DEBUG("Received lockstate %s", mig->lockState); + VIR_FREE(priv->lockState); + priv->lockState =3D g_steal_pointer(&mig->lockState); + } else { + VIR_DEBUG("Received no lockstate"); + } + + if (qemuMigrationDstRun(driver, vm, incoming->uri, + VIR_ASYNC_JOB_MIGRATION_IN) < 0) + goto error; + + if (qemuProcessFinishStartup(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, + false, VIR_DOMAIN_PAUSED_MIGRATION) < 0) + goto error; + + if (!(flags & VIR_MIGRATE_OFFLINE)) { + virDomainAuditStart(vm, "migrated", true); + event =3D virDomainEventLifecycleNewFromObj(vm, + VIR_DOMAIN_EVENT_STARTED, + VIR_DOMAIN_EVENT_STARTED_MIGRATED= ); + } + + ret =3D 0; + + cleanup: + qemuProcessIncomingDefFree(incoming); + VIR_FORCE_CLOSE(dataFD[0]); + VIR_FORCE_CLOSE(dataFD[1]); + virObjectEventStateQueue(driver->domainEventState, event); + virErrorRestore(&origErr); + return ret; + + error: + virErrorPreserveLast(&origErr); + qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, + jobPriv->migParams, priv->job.apiFlags); + + if (stopProcess) { + unsigned int stopFlags =3D VIR_QEMU_PROCESS_STOP_MIGRATED; + if (!relabel) + stopFlags |=3D VIR_QEMU_PROCESS_STOP_NO_RELABEL; + virDomainAuditStart(vm, "migrated", false); + qemuProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED, + VIR_ASYNC_JOB_MIGRATION_IN, stopFlags); + /* release if port is auto selected which is not the case if + * it is given in parameters + */ + if (nbdPort =3D=3D 0) + virPortAllocatorRelease(priv->nbdPort); + priv->nbdPort =3D 0; + } + goto cleanup; +} + + static int qemuMigrationDstPrepareFresh(virQEMUDriver *driver, virConnectPtr dconn, @@ -3140,32 +3334,20 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, unsigned long flags) { virDomainObj *vm =3D NULL; - virObjectEvent *event =3D NULL; virErrorPtr origErr; int ret =3D -1; - int dataFD[2] =3D { -1, -1 }; qemuDomainObjPrivate *priv =3D NULL; qemuMigrationCookie *mig =3D NULL; - qemuDomainJobPrivate *jobPriv =3D NULL; - bool tunnel =3D !!st; g_autofree char *xmlout =3D NULL; - unsigned int cookieFlags; - unsigned int startFlags; - qemuProcessIncomingDef *incoming =3D NULL; + unsigned int cookieFlags =3D 0; bool taint_hook =3D false; - bool stopProcess =3D false; - bool relabel =3D false; - int rv; - g_autofree char *tlsAlias =3D NULL; =20 VIR_DEBUG("name=3D%s, origname=3D%s, protocol=3D%s, port=3D%hu, " "listenAddress=3D%s, nbdPort=3D%d, nbdURI=3D%s, flags=3D0x%l= x", (*def)->name, NULLSTR(origname), protocol, port, listenAddress, nbdPort, NULLSTR(nbdURI), flags); =20 - if (flags & VIR_MIGRATE_OFFLINE) { - cookieFlags =3D 0; - } else { + if (!(flags & VIR_MIGRATE_OFFLINE)) { cookieFlags =3D QEMU_MIGRATION_COOKIE_GRAPHICS | QEMU_MIGRATION_COOKIE_CAPS; } @@ -3238,7 +3420,6 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, goto cleanup; =20 priv =3D vm->privateData; - jobPriv =3D priv->job.privateData; priv->origname =3D g_strdup(origname); =20 if (taint_hook) { @@ -3246,19 +3427,6 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, priv->hookRun =3D true; } =20 - if (STREQ_NULLABLE(protocol, "rdma") && - !virMemoryLimitIsSet(vm->def->mem.hard_limit)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("cannot start RDMA migration with no memory hard " - "limit set")); - goto cleanup; - } - - if (qemuMigrationDstPrecreateStorage(vm, mig->nbd, - nmigrate_disks, migrate_disks, - !!(flags & VIR_MIGRATE_NON_SHARED= _INC)) < 0) - goto cleanup; - if (qemuMigrationJobStart(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, flags) < 0) goto cleanup; @@ -3269,122 +3437,21 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, /* Domain starts inactive, even if the domain XML had an id field. */ vm->def->id =3D -1; =20 - if (flags & VIR_MIGRATE_OFFLINE) - goto done; - - if (tunnel && - virPipe(dataFD) < 0) - goto stopjob; - - startFlags =3D VIR_QEMU_PROCESS_START_AUTODESTROY; - - if (qemuProcessInit(driver, vm, mig->cpu, VIR_ASYNC_JOB_MIGRATION_IN, - true, startFlags) < 0) - goto stopjob; - stopProcess =3D true; - - if (!(incoming =3D qemuMigrationDstPrepare(vm, tunnel, protocol, - listenAddress, port, - dataFD[0]))) - goto stopjob; - - if (qemuProcessPrepareDomain(driver, vm, startFlags) < 0) - goto stopjob; - - if (qemuProcessPrepareHost(driver, vm, startFlags) < 0) - goto stopjob; - - rv =3D qemuProcessLaunch(dconn, driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, - incoming, NULL, - VIR_NETDEV_VPORT_PROFILE_OP_MIGRATE_IN_START, - startFlags); - if (rv < 0) { - if (rv =3D=3D -2) - relabel =3D true; - goto stopjob; - } - relabel =3D true; - - if (tunnel) { - if (virFDStreamOpen(st, dataFD[1]) < 0) { - virReportSystemError(errno, "%s", - _("cannot pass pipe for tunnelled migrati= on")); - goto stopjob; - } - dataFD[1] =3D -1; /* 'st' owns the FD now & will close it */ - } - - if (STREQ_NULLABLE(protocol, "rdma") && - vm->def->mem.hard_limit > 0 && - virProcessSetMaxMemLock(vm->pid, vm->def->mem.hard_limit << 10) < = 0) { - goto stopjob; - } - - if (qemuMigrationDstPrepareAnyBlockDirtyBitmaps(vm, mig, migParams, fl= ags) < 0) - goto stopjob; - - if (qemuMigrationParamsCheck(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, - migParams, mig->caps->automatic) < 0) - goto stopjob; - - /* Migrations using TLS need to add the "tls-creds-x509" object and - * set the migration TLS parameters */ - if (flags & VIR_MIGRATE_TLS) { - if (qemuMigrationParamsEnableTLS(driver, vm, true, - VIR_ASYNC_JOB_MIGRATION_IN, - &tlsAlias, NULL, - migParams) < 0) - goto stopjob; - } else { - if (qemuMigrationParamsDisableTLS(vm, migParams) < 0) - goto stopjob; - } - - if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, - migParams) < 0) - goto stopjob; - - if (mig->nbd && - flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC)= && - virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NBD_SERVER)) { - const char *nbdTLSAlias =3D NULL; - - if (flags & VIR_MIGRATE_TLS) { - if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NBD_TLS)) { - virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", - _("QEMU NBD server does not support TLS tra= nsport")); - goto stopjob; - } - - nbdTLSAlias =3D tlsAlias; - } - - if (qemuMigrationDstStartNBDServer(driver, vm, incoming->address, - nmigrate_disks, migrate_disks, - nbdPort, nbdURI, - nbdTLSAlias) < 0) { + if (!(flags & VIR_MIGRATE_OFFLINE)) { + if (qemuMigrationDstPrepareActive(driver, vm, dconn, mig, st, + protocol, port, listenAddress, + nmigrate_disks, migrate_disks, + nbdPort, nbdURI, + migParams, flags) < 0) { goto stopjob; } - cookieFlags |=3D QEMU_MIGRATION_COOKIE_NBD; - } =20 - if (mig->lockState) { - VIR_DEBUG("Received lockstate %s", mig->lockState); - VIR_FREE(priv->lockState); - priv->lockState =3D g_steal_pointer(&mig->lockState); - } else { - VIR_DEBUG("Received no lockstate"); + if (mig->nbd && + flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_= INC) && + virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NBD_SERVER)) + cookieFlags |=3D QEMU_MIGRATION_COOKIE_NBD; } =20 - if (qemuMigrationDstRun(driver, vm, incoming->uri, - VIR_ASYNC_JOB_MIGRATION_IN) < 0) - goto stopjob; - - if (qemuProcessFinishStartup(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, - false, VIR_DOMAIN_PAUSED_MIGRATION) < 0) - goto stopjob; - - done: if (qemuMigrationCookieFormat(mig, driver, vm, QEMU_MIGRATION_DESTINATION, cookieout, cookieoutlen, cookieFlags) < = 0) { @@ -3397,13 +3464,6 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, =20 qemuDomainCleanupAdd(vm, qemuMigrationDstPrepareCleanup); =20 - if (!(flags & VIR_MIGRATE_OFFLINE)) { - virDomainAuditStart(vm, "migrated", true); - event =3D virDomainEventLifecycleNewFromObj(vm, - VIR_DOMAIN_EVENT_STARTED, - VIR_DOMAIN_EVENT_STARTED_MIGRATED= ); - } - /* We keep the job active across API calls until the finish() call. * This prevents any other APIs being invoked while incoming * migration is taking place. @@ -3421,41 +3481,19 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, =20 cleanup: virErrorPreserveLast(&origErr); - qemuProcessIncomingDefFree(incoming); - VIR_FORCE_CLOSE(dataFD[0]); - VIR_FORCE_CLOSE(dataFD[1]); if (ret < 0 && priv) { /* priv is set right after vm is added to the list of domains * and there is no 'goto cleanup;' in the middle of those */ VIR_FREE(priv->origname); - /* release if port is auto selected which is not the case if - * it is given in parameters - */ - if (nbdPort =3D=3D 0) - virPortAllocatorRelease(priv->nbdPort); - priv->nbdPort =3D 0; virDomainObjRemoveTransientDef(vm); qemuDomainRemoveInactive(driver, vm); } virDomainObjEndAPI(&vm); - virObjectEventStateQueue(driver->domainEventState, event); qemuMigrationCookieFree(mig); virErrorRestore(&origErr); return ret; =20 stopjob: - qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, - jobPriv->migParams, priv->job.apiFlags); - - if (stopProcess) { - unsigned int stopFlags =3D VIR_QEMU_PROCESS_STOP_MIGRATED; - if (!relabel) - stopFlags |=3D VIR_QEMU_PROCESS_STOP_NO_RELABEL; - virDomainAuditStart(vm, "migrated", false); - qemuProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED, - VIR_ASYNC_JOB_MIGRATION_IN, stopFlags); - } - qemuMigrationJobFinish(vm); goto cleanup; } --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196542; cv=none; d=zohomail.com; s=zohoarc; b=gE/INLGOriXIsccYmRGVf52TPTvTCK5ViRNYYfOHnSOnK1e/B59in+cqyUU+Lsl77VMI7ymHoTpz+z/LylKwitg9NFr3xZ7wVeeLpoSATSM6PbYaItBieMBCAYlh0zpfC+7Nd5Oc/wndvrsHQSSQvV1GSEPpFUHzxhXUrqVKpTw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196542; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LlYLUti/FpP/jtkNyNIbBcOotqDqDo1ztglcNK4xHoM=; b=H5LGUwv9VK4Vaj71iHRTgCtEIe3/vY7cPN1rkGS08MCWDkOL5Tb00XaMsHu2RyoKgNrD/dbGabRE7jo8LQmhHbXmIGDIhJlS4lf7uy4lHNd0e0SpWPxW5w9hanO3KX+wa/9YYVNzrbk54PBPxrBILwBY/E+DJ+SYE4cnA+0MtAw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196542773580.8436672250041; Tue, 10 May 2022 08:29:02 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-284-R4EYuBEDPkOiBfcmtt1COg-1; Tue, 10 May 2022 11:28:13 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D60222949BC8; Tue, 10 May 2022 15:28:09 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id BF0DD14E0B4F; Tue, 10 May 2022 15:28:09 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 15628194707C; Tue, 10 May 2022 15:28:09 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 65872194704D for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 3266A54B093; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1238154B08D for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id C240B24462A; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196541; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=LlYLUti/FpP/jtkNyNIbBcOotqDqDo1ztglcNK4xHoM=; b=KAQoMltJxHA+Dd+xPjb4MT0TJ7t+GIZWYmTQIv0pSjXxwaH7kuJ6cDb7n913H5k/iaMNQx gfNQLvLNTvgdXERLeO0VkG/BIqjQrzy6laWFNhvoUvRekB4AVgetWvoxvsAYx/WYAPWHMX HShVgCIh5IBWXgr7l4Gj8VyTorXeXF8= X-MC-Unique: R4EYuBEDPkOiBfcmtt1COg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 62/80] qemu: Simplify cleanup in qemuMigrationDstPrepareFresh Date: Tue, 10 May 2022 17:21:23 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196544673100003 Content-Type: text/plain; charset="utf-8" Since most of the cleanup code was moved out of this function, we don't need to preserve the original error here. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index dc608fb8a4..07b8c99343 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3334,10 +3334,9 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, unsigned long flags) { virDomainObj *vm =3D NULL; - virErrorPtr origErr; int ret =3D -1; qemuDomainObjPrivate *priv =3D NULL; - qemuMigrationCookie *mig =3D NULL; + g_autoptr(qemuMigrationCookie) mig =3D NULL; g_autofree char *xmlout =3D NULL; unsigned int cookieFlags =3D 0; bool taint_hook =3D false; @@ -3480,7 +3479,6 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, ret =3D 0; =20 cleanup: - virErrorPreserveLast(&origErr); if (ret < 0 && priv) { /* priv is set right after vm is added to the list of domains * and there is no 'goto cleanup;' in the middle of those */ @@ -3489,8 +3487,6 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, qemuDomainRemoveInactive(driver, vm); } virDomainObjEndAPI(&vm); - qemuMigrationCookieFree(mig); - virErrorRestore(&origErr); return ret; =20 stopjob: --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196175; cv=none; d=zohomail.com; s=zohoarc; b=Jc+YDLWzqfTncPArT9tE9OImlD+7oNg+oZFuJPO2lDu5fLiZocHM2C+6cYeLfwpqkHSoalJv9IXSYaOqXEg6ihBA91aqmQUYGPA8pnrHLkn04dvtcMmPy1PId00HSFdTtkRSRg+mMe7NHlMOih96HmSVaFeD/KsjqNx71zEAMwY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196175; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=O1v29gth9867PCGaBtCitYWJ7CgwIZSiiuG3C195p1E=; b=IDqU+bXMLZIdPbzf06EoieNqjD/H0sMcrMAnsTf55FtxRtWKgwV4gT4jIrK8wVkJq0EYm80Ivtw/nMjUF773+klvxEZbOoZPXtV/2L84CCgsLhO7mjW+pVlRdtqwGAur4SAQFMdeepFFKvwe1ENJpyA57x0yDHpLol+PPVmkZSI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196175574958.7691292510787; Tue, 10 May 2022 08:22:55 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-650-Ub-_tySrM6mV-gQe4kA5RA-1; Tue, 10 May 2022 11:22:39 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id EEFD93CF2AA0; Tue, 10 May 2022 15:22:07 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id D790315088B4; Tue, 10 May 2022 15:22:07 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 6EB13194E120; Tue, 10 May 2022 15:21:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 83A321947064 for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 738734010E46; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 508DB403D166 for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id C392024462B; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196174; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=O1v29gth9867PCGaBtCitYWJ7CgwIZSiiuG3C195p1E=; b=XbeA10qHG+GRMtasoB/1hiy8ecHQCFLcEdPuJ4WqKczDZioFSIOcSw0Ccav/ZJ88+jxpct NofhjsKgfWCpAbm8D5M7RRciC8nUvkDq+tMS/ed0NyWk2dumAIzDVvNZr8RlHj9Kzgy+vb dNiNf+J49c09nEv/9veR4HpPKPyhxkM= X-MC-Unique: Ub-_tySrM6mV-gQe4kA5RA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 63/80] qemu: Add support for migrate-recover QMP command Date: Tue, 10 May 2022 17:21:24 +0200 Message-Id: <8163dcfe0be31b18676e6e04308d65db20dfb455.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652197078468100001 Content-Type: text/plain; charset="utf-8" This command tells QEMU to start listening for an incoming post-copy recovery connection. Just like migrate-incoming is used for starting fresh migration on the destination host. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_monitor.c | 12 ++++++++++++ src/qemu/qemu_monitor.h | 4 ++++ src/qemu/qemu_monitor_json.c | 19 +++++++++++++++++++ src/qemu/qemu_monitor_json.h | 4 ++++ 4 files changed, 39 insertions(+) diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 589fef4385..5424fdc4fd 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -4568,3 +4568,15 @@ qemuMonitorChangeMemoryRequestedSize(qemuMonitor *mo= n, =20 return qemuMonitorJSONChangeMemoryRequestedSize(mon, alias, requesteds= ize); } + + +int +qemuMonitorMigrateRecover(qemuMonitor *mon, + const char *uri) +{ + VIR_DEBUG("uri=3D%s", uri); + + QEMU_CHECK_MONITOR(mon); + + return qemuMonitorJSONMigrateRecover(mon, uri); +} diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 38b65eb950..812f8f4dc2 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1592,3 +1592,7 @@ int qemuMonitorChangeMemoryRequestedSize(qemuMonitor *mon, const char *alias, unsigned long long requestedsize); + +int +qemuMonitorMigrateRecover(qemuMonitor *mon, + const char *uri); diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index ea2e001483..44361ae003 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -8988,3 +8988,22 @@ qemuMonitorJSONChangeMemoryRequestedSize(qemuMonitor= *mon, =20 return qemuMonitorJSONSetObjectProperty(mon, path, "requested-size", &= prop); } + + +int +qemuMonitorJSONMigrateRecover(qemuMonitor *mon, + const char *uri) +{ + g_autoptr(virJSONValue) cmd =3D NULL; + g_autoptr(virJSONValue) reply =3D NULL; + + if (!(cmd =3D qemuMonitorJSONMakeCommand("migrate-recover", + "s:uri", uri, + NULL))) + return -1; + + if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) + return -1; + + return qemuMonitorJSONCheckError(cmd, reply); +} diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index afd100f653..a60c0bfac4 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -874,3 +874,7 @@ int qemuMonitorJSONChangeMemoryRequestedSize(qemuMonitor *mon, const char *alias, unsigned long long requestedsize); + +int +qemuMonitorJSONMigrateRecover(qemuMonitor *mon, + const char *uri); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196188; cv=none; d=zohomail.com; s=zohoarc; b=XcB2XSnfXDbcqI1MZ7a8r/xTf6obkWpc9JEdVo1PxD6Cf/dxpxcJ6QxWqaNNP0kGsUpbdf+S47cGkIhV9ohiKX2cboQ96UtRA+A2D00tmjZV0UtPDdvaQ+UnMtb5fMnviapW5gepU3112QvBrHPPHuqUhVaVC/mQkuNDMnIAwD4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196188; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=hfVYsMme6XxTaxaYcQZ8wswpTF76qm56fE9XcdCucnU=; b=C6p8yvqi7G2lox8q1Z/sDIId6JGsEXv2hGYPewr3RwRrVkiqmeu06t4cZlFbcvT4j0feMIQJv3/AfccQgKbgZ3iG/ckYkDxdR6H+SubhR9imGfmJGjX8X+6xUv9eXqIzERFdBJYgOVucl8bmRWODP+bD03Zz0St7UPltNek2ets= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 165219618898368.93563641918115; Tue, 10 May 2022 08:23:08 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-127-SmxtWy90NSGkw06HHhucng-1; Tue, 10 May 2022 11:22:48 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0F2C61E02E26; Tue, 10 May 2022 15:22:07 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id ECF9D54B070; Tue, 10 May 2022 15:22:06 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id C886F194E11B; Tue, 10 May 2022 15:21:58 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id BBAD2194706E for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 9A4F054B09D; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4EBA554B072 for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id C4CFD24462C; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196188; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=hfVYsMme6XxTaxaYcQZ8wswpTF76qm56fE9XcdCucnU=; b=fhWzPstqmi+StlE6plCQeaOLS05S3BgnX0WH/9yMDnRnk/YxMxu61mVfeI2Td9X2XxoMQL ierN1hczFbdctc/yvtpSZxED1xgG3hVb2JK0GRXQ0u46fQEhoSglxR9mMPuEVpZjahq553 tmam5P1n7F93b1P06RuizRj2hYi4eqY= X-MC-Unique: SmxtWy90NSGkw06HHhucng-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 64/80] qemu: Rename qemuMigrationSrcCleanup Date: Tue, 10 May 2022 17:21:25 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196190786100016 Content-Type: text/plain; charset="utf-8" The function is now called qemuMigrationAnyConnectionClosed to make it clear it is supposed to handle broken connection during migration. It will soon be used on both sides of migration so the "Src" part was changed to "Any" to avoid renaming the function twice in a row. The original *Cleanup name could easily be confused with cleanup callbacks called when a domain is destroyed. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 07b8c99343..d44d5c6ec4 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2336,9 +2336,9 @@ qemuMigrationDstRun(virQEMUDriver *driver, * qemuDomainMigratePerform3 and qemuDomainMigrateConfirm3. */ static void -qemuMigrationSrcCleanup(virDomainObj *vm, - virConnectPtr conn, - void *opaque) +qemuMigrationAnyConnectionClosed(virDomainObj *vm, + virConnectPtr conn, + void *opaque) { virQEMUDriver *driver =3D opaque; qemuDomainObjPrivate *priv =3D vm->privateData; @@ -2836,13 +2836,13 @@ qemuMigrationSrcBeginResumePhase(virConnectPtr conn, return NULL; =20 virCloseCallbacksUnset(driver->closeCallbacks, vm, - qemuMigrationSrcCleanup); + qemuMigrationAnyConnectionClosed); qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob); =20 xml =3D qemuMigrationSrcBeginResume(driver, vm, xmlin, cookieout, cook= ieoutlen, flags); =20 if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn, - qemuMigrationSrcCleanup) < 0) + qemuMigrationAnyConnectionClosed) < 0) g_clear_pointer(&xml, g_free); =20 if (!xml) @@ -2921,7 +2921,7 @@ qemuMigrationSrcBegin(virConnectPtr conn, * place. */ if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn, - qemuMigrationSrcCleanup) < 0) { + qemuMigrationAnyConnectionClosed) < 0) { VIR_FREE(xml); goto endjob; } @@ -4001,7 +4001,7 @@ qemuMigrationSrcConfirm(virQEMUDriver *driver, goto cleanup; =20 virCloseCallbacksUnset(driver->closeCallbacks, vm, - qemuMigrationSrcCleanup); + qemuMigrationAnyConnectionClosed); qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob); =20 ret =3D qemuMigrationSrcConfirmPhase(driver, vm, @@ -5977,7 +5977,7 @@ qemuMigrationSrcPerformResume(virQEMUDriver *driver, return -1; =20 virCloseCallbacksUnset(driver->closeCallbacks, vm, - qemuMigrationSrcCleanup); + qemuMigrationAnyConnectionClosed); qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob); =20 ret =3D qemuMigrationSrcPerformNative(driver, vm, NULL, uri, @@ -5986,7 +5986,7 @@ qemuMigrationSrcPerformResume(virQEMUDriver *driver, 0, NULL, NULL, 0, NULL, NULL, NULL= ); =20 if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn, - qemuMigrationSrcCleanup) < 0) + qemuMigrationAnyConnectionClosed) < 0) ret =3D -1; =20 if (ret < 0) @@ -6042,7 +6042,7 @@ qemuMigrationSrcPerformPhase(virQEMUDriver *driver, goto cleanup; =20 virCloseCallbacksUnset(driver->closeCallbacks, vm, - qemuMigrationSrcCleanup); + qemuMigrationAnyConnectionClosed); =20 if (qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri, cookie= in, cookieinlen, cookieout, cookieoutlen, @@ -6051,7 +6051,7 @@ qemuMigrationSrcPerformPhase(virQEMUDriver *driver, goto cleanup; =20 if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn, - qemuMigrationSrcCleanup) < 0) + qemuMigrationAnyConnectionClosed) < 0) goto cleanup; =20 ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM= 3_DONE)); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196309; cv=none; d=zohomail.com; s=zohoarc; b=gdXX8w9FF4cEfgXerU71dCzEDQIU2iWprYrwdocgKhEh1ivWAOnDLipxWaJE952jM55lbBQsKZFZDVf/gbYqqff22XWnhLzX/mFuLBG85E4Yrg9p1g7LF/ueh7vAbvL7IlUxQRsuGMjoA62COeZ2OBmJLmWUe4J01aQSugXTnlo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196309; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=SLwseW2+TOLRN6/RA3LgyZJXXV6txN13KamHELiwnzY=; b=NZtfVaTpioB5chwtJJTT2de9EutaEYVcyZje9dNAzGdmQ78HKfJGpi932W1OWsrzGZkHz86mTqdRppAkN5VgNSyoi3Q/Pqe4hqA7Tr+cYONMhNRup6UZQWvtYZJPUEkZnip7a7uqtyLsERbmAXuLFsOsRKwSF04lbKAPiieKG3k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196309446949.5121786017087; Tue, 10 May 2022 08:25:09 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-266-eqS8_XICPGOUXdbt7-zxRQ-1; Tue, 10 May 2022 11:22:44 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 50DB62919EAD; Tue, 10 May 2022 15:22:09 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3ED0C15088B0; Tue, 10 May 2022 15:22:09 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4E32A194F4BC; Tue, 10 May 2022 15:22:00 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id AA5A5194705F for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 9A8E1C28107; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 53C60C28106 for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id C624D244630; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196308; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=SLwseW2+TOLRN6/RA3LgyZJXXV6txN13KamHELiwnzY=; b=AnPwsz9Y8ogW2+5tH1iRX7gFtTKAyOTPmd1DvX99qhqGaG3uejxPWMp+WDr0Fm8yDSZ4jW 99V50JWm4OCUOe/tmsITOL8FT7BLVVQi7z6PeVqmpfgfwDl/ADm9vZsdaDyexZvATRhRlY tXZ3CYmfsE0EI3YL8USzDs7FGM61c4M= X-MC-Unique: eqS8_XICPGOUXdbt7-zxRQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 65/80] qemu: Refactor qemuMigrationAnyConnectionClosed Date: Tue, 10 May 2022 17:21:26 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196310348100013 Content-Type: text/plain; charset="utf-8" To prepare the code for handling incoming migration too. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 72 +++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index d44d5c6ec4..c0ab59f688 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2329,11 +2329,12 @@ qemuMigrationDstRun(virQEMUDriver *driver, } =20 =20 -/* This is called for outgoing non-p2p migrations when a connection to the - * client which initiated the migration was closed but we were waiting for= it - * to follow up with the next phase, that is, in between - * qemuDomainMigrateBegin3 and qemuDomainMigratePerform3 or - * qemuDomainMigratePerform3 and qemuDomainMigrateConfirm3. +/* This is called for outgoing non-p2p and incoming migrations when a + * connection to the client which controls the migration was closed but we + * were waiting for it to follow up with the next phase, that is, in betwe= en + * qemuDomainMigrateBegin3 and qemuDomainMigratePerform3, + * qemuDomainMigratePerform3 and qemuDomainMigrateConfirm3, or + * qemuDomainMigratePrepare3 and qemuDomainMigrateFinish3. */ static void qemuMigrationAnyConnectionClosed(virDomainObj *vm, @@ -2343,6 +2344,7 @@ qemuMigrationAnyConnectionClosed(virDomainObj *vm, virQEMUDriver *driver =3D opaque; qemuDomainObjPrivate *priv =3D vm->privateData; qemuDomainJobPrivate *jobPriv =3D priv->job.privateData; + bool postcopy =3D false; =20 VIR_DEBUG("vm=3D%s, conn=3D%p, asyncJob=3D%s, phase=3D%s", vm->def->name, conn, @@ -2350,64 +2352,68 @@ qemuMigrationAnyConnectionClosed(virDomainObj *vm, qemuDomainAsyncJobPhaseToString(priv->job.asyncJob, priv->job.phase)); =20 - if (!qemuMigrationJobIsActive(vm, VIR_ASYNC_JOB_MIGRATION_OUT)) + if (!qemuMigrationJobIsActive(vm, VIR_ASYNC_JOB_MIGRATION_IN) && + !qemuMigrationJobIsActive(vm, VIR_ASYNC_JOB_MIGRATION_OUT)) return; =20 - VIR_DEBUG("The connection which started outgoing migration of domain %= s" - " was closed; canceling the migration", + VIR_WARN("The connection which controls migration of domain %s was clo= sed", vm->def->name); =20 switch ((qemuMigrationJobPhase) priv->job.phase) { case QEMU_MIGRATION_PHASE_BEGIN3: - /* just forget we were about to migrate */ - qemuMigrationJobFinish(vm); + VIR_DEBUG("Aborting outgoing migration after Begin phase"); break; =20 case QEMU_MIGRATION_PHASE_PERFORM3_DONE: - VIR_WARN("Migration of domain %s finished but we don't know if the" - " domain was successfully started on destination or not", - vm->def->name); - if (virDomainObjIsPostcopy(vm, VIR_DOMAIN_JOB_OPERATION_MIGRATION_= OUT)) { - ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE= _POSTCOPY_FAILED)); - qemuMigrationSrcPostcopyFailed(vm); - qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); - qemuMigrationJobContinue(vm); + VIR_DEBUG("Migration protocol interrupted in post-copy mode"); + postcopy =3D true; } else { - qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_O= UT, - jobPriv->migParams, priv->job.apiFlag= s); - /* clear the job and let higher levels decide what to do */ - qemuMigrationJobFinish(vm); + VIR_WARN("Migration of domain %s finished but we don't know if= the " + "domain was successfully started on destination or no= t", + vm->def->name); } break; =20 case QEMU_MIGRATION_PHASE_POSTCOPY_FAILED: case QEMU_MIGRATION_PHASE_BEGIN_RESUME: case QEMU_MIGRATION_PHASE_PERFORM_RESUME: - ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); - qemuMigrationSrcPostcopyFailed(vm); - qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); - qemuMigrationJobContinue(vm); + VIR_DEBUG("Connection closed while resuming failed post-copy migra= tion"); + postcopy =3D true; break; =20 + case QEMU_MIGRATION_PHASE_PREPARE: + case QEMU_MIGRATION_PHASE_FINISH2: + case QEMU_MIGRATION_PHASE_FINISH3: + case QEMU_MIGRATION_PHASE_PREPARE_RESUME: + case QEMU_MIGRATION_PHASE_FINISH_RESUME: + /* incoming migration; the domain will be autodestroyed */ + return; + case QEMU_MIGRATION_PHASE_PERFORM3: /* cannot be seen without an active migration API; unreachable */ case QEMU_MIGRATION_PHASE_CONFIRM3: case QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED: case QEMU_MIGRATION_PHASE_CONFIRM_RESUME: /* all done; unreachable */ - case QEMU_MIGRATION_PHASE_PREPARE: - case QEMU_MIGRATION_PHASE_FINISH2: - case QEMU_MIGRATION_PHASE_FINISH3: - case QEMU_MIGRATION_PHASE_PREPARE_RESUME: - case QEMU_MIGRATION_PHASE_FINISH_RESUME: - /* incoming migration; unreachable */ case QEMU_MIGRATION_PHASE_PERFORM2: /* single phase outgoing migration; unreachable */ case QEMU_MIGRATION_PHASE_NONE: case QEMU_MIGRATION_PHASE_LAST: /* unreachable */ - ; + return; + } + + if (postcopy) { + if (priv->job.asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT) + qemuMigrationSrcPostcopyFailed(vm); + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); + qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); + qemuMigrationJobContinue(vm); + } else { + qemuMigrationParamsReset(driver, vm, priv->job.asyncJob, + jobPriv->migParams, priv->job.apiFlags); + qemuMigrationJobFinish(vm); } } =20 --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196188; cv=none; d=zohomail.com; s=zohoarc; b=fT3G7Fj1HtonVqQ6RdjjOh6hihAbqvatO0UriZLfLZBT+Qtwx/+oFEB0V5WUXPycDj86WcqaZA46c/JsHCwdJuDaz6PxO9fzzOqNZLVYNP8iWXn+cEopgfooIsamf9OUccXZaGTVpcw/NsheAtY3+wtpkM1jznNRIaOcA5FgV6w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196188; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=uK0scVwon6IX6+QiOBibkp3DiLIaLWXybdHgmF2TAKY=; b=ZwAFIQgPyV+HqI7A6uIlNftyMOTs+ycNpa+L76PB9dOL/lPlXDqEcBUI4sabO6XFX7HF9N+gEJSuvNQscbDdPUhekA42fuHxRtjD5PrDJYWZGAH2fe8bF2Oso0tf1BMGbi22nNB6hNqFVEug/iW48w/4vPCAF6wC6qYCUVzF2dE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196188664354.1601045015725; Tue, 10 May 2022 08:23:08 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-509-hibSFhUVOma_fzU66yQPTA-1; Tue, 10 May 2022 11:22:55 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4215F1E7DCEF; Tue, 10 May 2022 15:22:09 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2B07740314F; Tue, 10 May 2022 15:22:09 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 3904A1940377; Tue, 10 May 2022 15:22:00 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id AAFF11947070 for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 9BE48C28112; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5190BC27DB5 for ; Tue, 10 May 2022 15:21:50 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id C75E2244632; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196187; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=uK0scVwon6IX6+QiOBibkp3DiLIaLWXybdHgmF2TAKY=; b=DNtAnOKt+z50NstaUkcgAsVpAnpWs9/ucPUv0+YF9KoRkP+zA6UrrudDrj1kGeL03MljBx Oij9QQJT9np+rkMxyut/jgDdf/finG5O/qs47tnGDzp8d5RM2l1A1seaPdaWfM90WEyN9m hQvy43ry1c8mBcfv4IILVjxVSYdbd80= X-MC-Unique: hibSFhUVOma_fzU66yQPTA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 66/80] qemu: Handle incoming migration in qemuMigrationAnyConnectionClosed Date: Tue, 10 May 2022 17:21:27 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196190783100015 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index c0ab59f688..c1a60c90ef 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2378,15 +2378,12 @@ qemuMigrationAnyConnectionClosed(virDomainObj *vm, case QEMU_MIGRATION_PHASE_POSTCOPY_FAILED: case QEMU_MIGRATION_PHASE_BEGIN_RESUME: case QEMU_MIGRATION_PHASE_PERFORM_RESUME: + case QEMU_MIGRATION_PHASE_PREPARE_RESUME: VIR_DEBUG("Connection closed while resuming failed post-copy migra= tion"); postcopy =3D true; break; =20 case QEMU_MIGRATION_PHASE_PREPARE: - case QEMU_MIGRATION_PHASE_FINISH2: - case QEMU_MIGRATION_PHASE_FINISH3: - case QEMU_MIGRATION_PHASE_PREPARE_RESUME: - case QEMU_MIGRATION_PHASE_FINISH_RESUME: /* incoming migration; the domain will be autodestroyed */ return; =20 @@ -2395,6 +2392,9 @@ qemuMigrationAnyConnectionClosed(virDomainObj *vm, case QEMU_MIGRATION_PHASE_CONFIRM3: case QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED: case QEMU_MIGRATION_PHASE_CONFIRM_RESUME: + case QEMU_MIGRATION_PHASE_FINISH2: + case QEMU_MIGRATION_PHASE_FINISH3: + case QEMU_MIGRATION_PHASE_FINISH_RESUME: /* all done; unreachable */ case QEMU_MIGRATION_PHASE_PERFORM2: /* single phase outgoing migration; unreachable */ @@ -2407,6 +2407,8 @@ qemuMigrationAnyConnectionClosed(virDomainObj *vm, if (postcopy) { if (priv->job.asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT) qemuMigrationSrcPostcopyFailed(vm); + else + qemuMigrationDstPostcopyFailed(vm); ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); qemuMigrationJobContinue(vm); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196535; cv=none; d=zohomail.com; s=zohoarc; b=ZcGRdRvMDRZivQBLUdtRqxEfrT751nzWRWONfsObqHTYc6smh6mb2I2Pa199xyznjjNLtehrjh9RRGjyLnq8dQ+PllOI88/HRjnyX71YSXMhNxHjwP1G0O9LD9HlIY6etB/gh251E9wFN97dUUuaFsdR+c3lgAUkxxzjUVmAZoM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196535; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Cuhl08HjXRntUfQai6CNftKyWBtHwMINkHZ5Mw2w7ps=; b=n1hxUhnjhKQZmUPu9hm7D6B3YtqtRyKHHTehNYlXG6WIvztv2PMePe6bLY1dwViKPfKbVpExjQkFpiqoUv+eHH+y7d2KVo5lD+IcWclOm1NpAvPT+UxAKXNQsCEXihaoQLc0R04euWadLbw2HZHUNjN45tTiy3GMfFGsJrcdArc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196535141286.68184364184856; Tue, 10 May 2022 08:28:55 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-207-OfGbK7Q1Pdq1OJS1eLqhSA-1; Tue, 10 May 2022 11:28:50 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E22B42919EC0; Tue, 10 May 2022 15:28:47 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9E6AE409B3FD; Tue, 10 May 2022 15:28:47 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 6CFBC1947059; Tue, 10 May 2022 15:28:47 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 2F5731947055 for ; Tue, 10 May 2022 15:28:00 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 12C38C27E85; Tue, 10 May 2022 15:28:00 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E6EC3C27E80 for ; Tue, 10 May 2022 15:27:59 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id C8984244633; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196534; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=Cuhl08HjXRntUfQai6CNftKyWBtHwMINkHZ5Mw2w7ps=; b=LrQS8bDXtcGgX6fSp6Ip6962qWQCr752vvPExR0+0b35IrUAnlt6smUxa9eYI7Ah0p1166 Q0CVDlQavZSe4Fn2GZ/swnMq67mwBjpXhJFHdIXpDpoih7EoFgLr5bi6wRbmLqjibb36kq S/poWEiC/6LNcuUMIzJB33oRx+K47kA= X-MC-Unique: OfGbK7Q1Pdq1OJS1eLqhSA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 67/80] qemu: Start a migration phase in qemuMigrationAnyConnectionClosed Date: Tue, 10 May 2022 17:21:28 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196536644100001 Content-Type: text/plain; charset="utf-8" Non-postcopy case talks to QEMU monitor and thus needs to create a nested job. Since qemuMigrationAnyConnectionClosed is called in case there's no thread processing a migration API, we need to make the current thread a temporary owner of the migration job to avoid "This thread doesn't seem to be the async job owner: 0". This is done by starting a migration phase. While no monitor interaction happens in postcopy case and just setting the phase (to indicate a broken postcopy migration) would be enough, being consistent and setting the owner does not hurt anything. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index c1a60c90ef..2e9235e1d5 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2345,6 +2345,7 @@ qemuMigrationAnyConnectionClosed(virDomainObj *vm, qemuDomainObjPrivate *priv =3D vm->privateData; qemuDomainJobPrivate *jobPriv =3D priv->job.privateData; bool postcopy =3D false; + int phase; =20 VIR_DEBUG("vm=3D%s, conn=3D%p, asyncJob=3D%s, phase=3D%s", vm->def->name, conn, @@ -2404,12 +2405,17 @@ qemuMigrationAnyConnectionClosed(virDomainObj *vm, return; } =20 + if (postcopy) + phase =3D QEMU_MIGRATION_PHASE_POSTCOPY_FAILED; + else + phase =3D QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED; + ignore_value(qemuMigrationJobStartPhase(vm, phase)); + if (postcopy) { if (priv->job.asyncJob =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT) qemuMigrationSrcPostcopyFailed(vm); else qemuMigrationDstPostcopyFailed(vm); - ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); qemuMigrationJobContinue(vm); } else { --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196670; cv=none; d=zohomail.com; s=zohoarc; b=YOYbRmhUv4zau1mId5ZfFr8O6uC5JGyDHMcDXcwelkioNhYCQteALBnuHyvjp6uftuxW1MVbA1aisgXBYQeTE4pzrpVXoZsVtdH+tD0XYA0D9iXk4rSe7wJHYgH9JV+bMncPS9s69UQRe2k7jGa8rVbD1EDohLfk4fEP4ONFN1E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196670; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kWONviysrNSF63VoNBacJHJov9+14bbDvYT9kAN92tU=; b=Sf3Av3jdICBzTqNjKtfykLC+hB360Hr3EJDQIWwjI3tdYVJ4PWq+srkRWWShRfy67Uhn2FlxOIvf3inAttCnMTpgQD0MbhzY/JQpGj5nq3E5OMvr+g8W4ifE4RbWmhQj5DqkkxuDcOmObwggWhekV+wyJxW2squiJ+1YcpIjLPE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196670386570.4856829030722; Tue, 10 May 2022 08:31:10 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-277-tdGbY0tvNJqLCy0LCyZfmw-1; Tue, 10 May 2022 11:30:55 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id DE3FC3C32317; Tue, 10 May 2022 15:30:52 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id BF71FC28107; Tue, 10 May 2022 15:30:52 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 0D4871947079; Tue, 10 May 2022 15:30:52 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5A0AA1947059 for ; Tue, 10 May 2022 15:28:05 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 3BACD2166B4C; Tue, 10 May 2022 15:28:05 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F2BBE2166B2F for ; Tue, 10 May 2022 15:27:59 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id CA6D5244634; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196669; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=kWONviysrNSF63VoNBacJHJov9+14bbDvYT9kAN92tU=; b=QF/XvRBwOzaJIzj4x40NjYU0V/bR8AUr8DR4Rxzl+Sw58Pkpit1tZCfRZgxheeB4cHbIet 7bMjw++8gcMX+Byb/fH7l98Rtml5D3ChMuKyBEuMnfC9C53/m2ZQdqJ7GvGB0fFS9z8tS4 Cbfroe4rJBFnJhbZ8fu2l3UP/dPh8sQ= X-MC-Unique: tdGbY0tvNJqLCy0LCyZfmw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 68/80] qemu: Implement VIR_MIGRATE_POSTCOPY_RESUME for Prepare phase Date: Tue, 10 May 2022 17:21:29 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196671400100001 Content-Type: text/plain; charset="utf-8" The QEMU process is already running, all we need to do is to call migrate-recover QMP command. Except for some checks and cookie handling, of course. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 99 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 2e9235e1d5..a8481f7515 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3509,6 +3509,98 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, } =20 =20 +static int +qemuMigrationDstPrepareResume(virQEMUDriver *driver, + virConnectPtr conn, + const char *cookiein, + int cookieinlen, + char **cookieout, + int *cookieoutlen, + virDomainDef *def, + const char *origname, + const char *protocol, + unsigned short port, + const char *listenAddress, + unsigned long flags) +{ + g_autoptr(qemuMigrationCookie) mig =3D NULL; + qemuProcessIncomingDef *incoming =3D NULL; + qemuDomainObjPrivate *priv; + virDomainJobStatus status; + virDomainObj *vm; + int ret =3D -1; + + VIR_DEBUG("name=3D%s, origname=3D%s, protocol=3D%s, port=3D%hu, " + "listenAddress=3D%s, flags=3D0x%lx", + def->name, NULLSTR(origname), protocol, port, + NULLSTR(listenAddress), flags); + + vm =3D virDomainObjListFindByName(driver->domains, def->name); + if (!vm) { + virReportError(VIR_ERR_NO_DOMAIN, + _("no domain with matching name '%s'"), def->name); + qemuMigrationDstErrorReport(driver, def->name); + return -1; + } + priv =3D vm->privateData; + + if (!qemuMigrationAnyCanResume(vm, VIR_ASYNC_JOB_MIGRATION_IN, flags, + QEMU_MIGRATION_PHASE_POSTCOPY_FAILED)) + goto cleanup; + + if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PREPARE_RESUME= ) < 0) + goto cleanup; + + qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob); + + if (qemuMigrationAnyRefreshStatus(driver, vm, VIR_ASYNC_JOB_MIGRATION_= IN, + &status) < 0) + goto cleanup; + + if (status !=3D VIR_DOMAIN_JOB_STATUS_POSTCOPY_PAUSED) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("QEMU reports migration is still running")); + goto cleanup; + } + + if (!(mig =3D qemuMigrationCookieParse(driver, def, origname, NULL, + cookiein, cookieinlen, + QEMU_MIGRATION_COOKIE_CAPS))) + goto cleanup; + + if (!(incoming =3D qemuMigrationDstPrepare(vm, false, protocol, + listenAddress, port, -1))) + goto cleanup; + + if (qemuDomainObjEnterMonitorAsync(driver, vm, VIR_ASYNC_JOB_MIGRATION= _IN) < 0) + goto cleanup; + + ret =3D qemuMonitorMigrateRecover(priv->mon, incoming->uri); + qemuDomainObjExitMonitor(vm); + + if (ret < 0) + goto cleanup; + + if (qemuMigrationCookieFormat(mig, driver, vm, + QEMU_MIGRATION_DESTINATION, + cookieout, cookieoutlen, + QEMU_MIGRATION_COOKIE_CAPS) < 0) + VIR_WARN("Unable to encode migration cookie"); + + virCloseCallbacksSet(driver->closeCallbacks, vm, conn, + qemuMigrationAnyConnectionClosed); + + cleanup: + qemuProcessIncomingDefFree(incoming); + if (ret < 0) + ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); + qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); + qemuMigrationJobContinue(vm); + virDomainObjEndAPI(&vm); + return ret; +} + + static int qemuMigrationDstPrepareAny(virQEMUDriver *driver, virConnectPtr dconn, @@ -3577,6 +3669,13 @@ qemuMigrationDstPrepareAny(virQEMUDriver *driver, return -1; } =20 + if (flags & VIR_MIGRATE_POSTCOPY_RESUME) { + return qemuMigrationDstPrepareResume(driver, dconn, cookiein, cook= ieinlen, + cookieout, cookieoutlen, + *def, origname, protocol, por= t, + listenAddress, flags); + } + return qemuMigrationDstPrepareFresh(driver, dconn, cookiein, cookieinlen, cookieout, cookieoutlen, --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196590; cv=none; d=zohomail.com; s=zohoarc; b=nA66rl4SGDePJ50qJJ8fCMrCy9uSYfGMBVAOcNdXxgmxdAlZ9BBNfUh+VZTZT55wgRmuzA530cC578qzJjZmWF78G3I+hXcsCichP0RXGl2bq4xFaIEpLaLrsnyXwEkfQS/wdtmx0SSuMOpFCaPeDE/BwpoQDY6UkyAKDLXeiSs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196590; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VRyIxHo4JyVIpRCXctc2gXIQiAwvTfLCDskM/hst1wI=; b=XHpg4u56tsYlw0F6QMDybnYxvCWKoR06eyChHkdjOr79uaI46BEMSEBTna7v9Y4giKd01WjvUOvJhfQ4IQ6Md+xpcJ4JJ/6zZsBX6p0NQ+mRc676g4uSSOfMQk2bHhYxyKIXJhTJSB12GPksap8cO5ZDcssazXN+B9jd9eMDa1g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196590231902.0844723380796; Tue, 10 May 2022 08:29:50 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-613-xwnSQXLMOzCx2S6aVEFSlg-1; Tue, 10 May 2022 11:29:44 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E44651C0F689; Tue, 10 May 2022 15:29:41 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id CCF8B2166B4C; Tue, 10 May 2022 15:29:41 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id A1B071947055; Tue, 10 May 2022 15:29:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 8EF971947060 for ; Tue, 10 May 2022 15:28:13 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 5BAA1111E414; Tue, 10 May 2022 15:28:13 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3B674111E411 for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id CBAF0244635; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196589; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=VRyIxHo4JyVIpRCXctc2gXIQiAwvTfLCDskM/hst1wI=; b=Na/ZwPwys5Bm2qRjul/7oBMXtwJMwA0Q7Yystg9DCbXwWx130Yu3XnW771M23tRqEly/M4 jf9t5DznQbLw01/DrGDxrurcfcXwVzgamV195scvNrX6GVEfiFFSMA6z9Str3/xxqLTN37 MGzqLbVXs1WGznldezQLDQZ3Jf8RVe8= X-MC-Unique: xwnSQXLMOzCx2S6aVEFSlg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 69/80] qemu: Implement VIR_MIGRATE_POSTCOPY_RESUME for Finish phase Date: Tue, 10 May 2022 17:21:30 +0200 Message-Id: <885b8552bc9663daa7847af64e52f8994b8c78c8.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196590960100001 Content-Type: text/plain; charset="utf-8" Everything was already done in the normal Finish phase and vCPUs are running. We just need to wait for all remaining data to be transferred. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 46 ++++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index a8481f7515..430dfb1abb 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -6600,6 +6600,22 @@ qemuMigrationDstFinishFresh(virQEMUDriver *driver, } =20 =20 +static int +qemuMigrationDstFinishResume(virQEMUDriver *driver, + virDomainObj *vm) +{ + VIR_DEBUG("vm=3D%p", vm); + + if (qemuMigrationDstWaitForCompletion(driver, vm, + VIR_ASYNC_JOB_MIGRATION_IN, + false) < 0) { + return -1; + } + + return 0; +} + + static virDomainPtr qemuMigrationDstFinishActive(virQEMUDriver *driver, virConnectPtr dconn, @@ -6647,8 +6663,14 @@ qemuMigrationDstFinishActive(virQEMUDriver *driver, goto error; } =20 - rc =3D qemuMigrationDstFinishFresh(driver, vm, mig, flags, v3proto, - timeReceived, &doKill, &inPostCopy); + if (flags & VIR_MIGRATE_POSTCOPY_RESUME) { + rc =3D qemuMigrationDstFinishResume(driver, vm); + inPostCopy =3D true; + } else { + rc =3D qemuMigrationDstFinishFresh(driver, vm, mig, flags, v3proto, + timeReceived, &doKill, &inPostCop= y); + } + if (rc < 0 || !(dom =3D virGetDomain(dconn, vm->def->name, vm->def->uuid, vm->de= f->id))) goto error; @@ -6719,6 +6741,8 @@ qemuMigrationDstFinish(virQEMUDriver *driver, qemuDomainObjPrivate *priv =3D vm->privateData; unsigned short port; unsigned long long timeReceived =3D 0; + int phase =3D v3proto ? QEMU_MIGRATION_PHASE_FINISH3 + : QEMU_MIGRATION_PHASE_FINISH2; =20 VIR_DEBUG("driver=3D%p, dconn=3D%p, vm=3D%p, cookiein=3D%s, cookieinle= n=3D%d, " "cookieout=3D%p, cookieoutlen=3D%p, flags=3D0x%lx, retcode= =3D%d", @@ -6733,14 +6757,24 @@ qemuMigrationDstFinish(virQEMUDriver *driver, goto cleanup; } =20 + if (flags & VIR_MIGRATE_POSTCOPY_RESUME) { + if (!qemuMigrationAnyCanResume(vm, VIR_ASYNC_JOB_MIGRATION_IN, fla= gs, + QEMU_MIGRATION_PHASE_PREPARE_RESUME= )) + goto cleanup; + phase =3D QEMU_MIGRATION_PHASE_FINISH_RESUME; + } ignore_value(virTimeMillisNow(&timeReceived)); =20 - if (qemuMigrationJobStartPhase(vm, - v3proto ? QEMU_MIGRATION_PHASE_FINISH3 - : QEMU_MIGRATION_PHASE_FINISH2)= < 0) + if (qemuMigrationJobStartPhase(vm, phase) < 0) goto cleanup; =20 - qemuDomainCleanupRemove(vm, qemuMigrationDstPrepareCleanup); + if (flags & VIR_MIGRATE_POSTCOPY_RESUME) { + virCloseCallbacksUnset(driver->closeCallbacks, vm, + qemuMigrationAnyConnectionClosed); + qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob); + } else { + qemuDomainCleanupRemove(vm, qemuMigrationDstPrepareCleanup); + } g_clear_pointer(&priv->job.completed, virDomainJobDataFree); =20 cookie_flags =3D QEMU_MIGRATION_COOKIE_NETWORK | --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196570; cv=none; d=zohomail.com; s=zohoarc; b=VSquBcnuiB6ZM5/3wfoxPjXY5eQbxoEBggwJGSUOJGfzYJvmCepUUiiCYzW5hnROlB3wWJYzGHNLEToYPv0MzMeiLE21mNOAuwaA4oV1+KdS+TjaJRiJqxpzYBGIdMiX27KIz/ry7DM7uqWBXQCFMwU7E6lApt5DumAEULSfmiM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196570; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=AONi26lhdx7KIekt602HmD/XBhdHHpU+dOYeVE20uLM=; b=WYaSnqNkDmcIXSa1vNoOVarSA6lIB+2sgWlBNLAoD444AXSkhyzLfKJlvsqHfiv3xzEP6944LUtUQ+hifwsuCeTMBI5y28m4hdlPirNd2/FqgcYGEsOxNC86Nl/3+Qweol5RruWjokPFKIyTcCWpIYDJOQFOgxvJCU4L2CNqavE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196570163609.7210371025803; Tue, 10 May 2022 08:29:30 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-520-X3jAX-mLMiiD2ah14_itjg-1; Tue, 10 May 2022 11:28:12 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E240B3C1E321; Tue, 10 May 2022 15:28:08 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id CF19314E09E7; Tue, 10 May 2022 15:28:08 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 9692F1947060; Tue, 10 May 2022 15:28:08 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 20B4C194704D for ; Tue, 10 May 2022 15:28:00 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 1074640D1B9F; Tue, 10 May 2022 15:28:00 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E4276403579A for ; Tue, 10 May 2022 15:27:59 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id CCEFC244636; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196568; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=AONi26lhdx7KIekt602HmD/XBhdHHpU+dOYeVE20uLM=; b=YQ7PsuiG8HRdkSOVJribmPWAH662i0RsTox4RLskos5WJGZJ/Njt0UjB1gQX96ItHULmXR Ff2HezT/Z8uQ2sfEnGJGVsQm+3g9vjmt+Er9Jsjr/ifQwFEhdVs9jDo/cHtkhkXHI6wytL rVYnxgnyXM7ltp5BBVvKDlGmvPIeopg= X-MC-Unique: X3jAX-mLMiiD2ah14_itjg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 70/80] qemu: Create completed jobData in qemuMigrationSrcComplete Date: Tue, 10 May 2022 17:21:31 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196570823100001 Content-Type: text/plain; charset="utf-8" Normally the structure is created once the source reports completed migration, but with post-copy migration we can get here even after libvirt daemon was restarted. It doesn't make sense to preserve the structure in our status XML as we're going to rewrite almost all of it while refreshing the stats anyway. So we just create the structure here if it doesn't exist to make sure we can properly report statistics of a completed migration. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 430dfb1abb..1fc978bad5 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3947,22 +3947,26 @@ qemuMigrationSrcComplete(virQEMUDriver *driver, virObjectEvent *event; int reason; =20 - if (jobData) { - /* We need to refresh migration statistics after a completed post-= copy - * migration since jobData contains obsolete data from the time we - * switched to post-copy mode. - */ - if (virDomainObjGetState(vm, &reason) =3D=3D VIR_DOMAIN_PAUSED && - reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY) { - VIR_DEBUG("Refreshing migration statistics"); - if (qemuMigrationAnyFetchStats(driver, vm, VIR_ASYNC_JOB_MIGRA= TION_OUT, - jobData, NULL) < 0) - VIR_WARN("Could not refresh migration statistics"); - } + if (!jobData) { + priv->job.completed =3D virDomainJobDataCopy(priv->job.current); + jobData =3D priv->job.completed; + jobData->status =3D VIR_DOMAIN_JOB_STATUS_COMPLETED; + } =20 - qemuDomainJobDataUpdateTime(jobData); + /* We need to refresh migration statistics after a completed post-copy + * migration since jobData contains obsolete data from the time we + * switched to post-copy mode. + */ + if (virDomainObjGetState(vm, &reason) =3D=3D VIR_DOMAIN_PAUSED && + reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY) { + VIR_DEBUG("Refreshing migration statistics"); + if (qemuMigrationAnyFetchStats(driver, vm, VIR_ASYNC_JOB_MIGRATION= _OUT, + jobData, NULL) < 0) + VIR_WARN("Could not refresh migration statistics"); } =20 + qemuDomainJobDataUpdateTime(jobData); + /* If guest uses SPICE and supports seamless migration we have to hold * up domain shutdown until SPICE server transfers its data */ qemuMigrationSrcWaitForSpice(vm); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196492; cv=none; d=zohomail.com; s=zohoarc; b=kstCTX0FmGMBiRivnFzwrzvT03EfKxPHIvs25kAC36G7JAwqgMBg5RHRj8Qub2spdpXPRoiKsFg70i+Qo90emjwurdoLWVFb4pjVLqbWmL6gihqPJx//ldooFjhhRV90DtcDpbXFFQwDn+UwErOq2V1HhCdySFI9B1stUbrGYk8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196492; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+na1Q0tlq+2rP0/GKxxUMdyWEuLYYgsI8sMErer5bvY=; b=jwEjjA75qOzhquqVeX0m8DuqrAn7JABINQue5Q3hKk+iuP48RauPQxitINBgWf9VsTMqlwMDnb7YtNiq9GI8XS8YrtXf3LDhJYIAW0kggRRlzWaQnm5SzpeiKkWxS1wZEWghZIMVYxbo19gyV/GH74VaOFffCiItdu+cz9G2LYc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196492688393.644045213642; Tue, 10 May 2022 08:28:12 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-205-3MTj-1GZNTaF3r_mBaq8zQ-1; Tue, 10 May 2022 11:28:06 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 32CF22949BDA; Tue, 10 May 2022 15:28:03 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id C882240D2822; Tue, 10 May 2022 15:28:02 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 9F0641947059; Tue, 10 May 2022 15:28:02 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4C5A8194704D for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 315DEC27E94; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 124E1C27E80 for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id CE27D244637; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196491; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=+na1Q0tlq+2rP0/GKxxUMdyWEuLYYgsI8sMErer5bvY=; b=b74Im/mHZVXTIT7bHtAaBwR0cWH/vFMbr0WXF6mktA5DhtJIzKzPQXi+JvAgRb/E1dsG0c 2tIkcE4jV+clWOVvMoiB5Fi0ErzLnwfjIx8BnpZZts8efeIYsumpCA0y0pbBreaoffDt4S HFC1r+c8V5VHjQ4BowWou6RKBIAut6w= X-MC-Unique: 3MTj-1GZNTaF3r_mBaq8zQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 71/80] qemu: Register qemuProcessCleanupMigrationJob after Begin phase Date: Tue, 10 May 2022 17:21:32 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196494345100001 Content-Type: text/plain; charset="utf-8" The callback will properly cleanup non-p2p migration job in case the migrating domain dies between Begin and Perform while the client which controls the migration is not cooperating (normally the API for the next migration phase would handle this). The same situation can happen even after Prepare and Perform phases, but they both already register a suitable callback, so no fix is needed there. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 1fc978bad5..38a67f7e20 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2939,6 +2939,7 @@ qemuMigrationSrcBegin(virConnectPtr conn, VIR_FREE(xml); goto endjob; } + qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); qemuMigrationJobContinue(vm); } else { goto endjob; --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196663; cv=none; d=zohomail.com; s=zohoarc; b=C9kwe2B4hA1yrAAi1hjib0JVpi5AevcJ1FFFlQaS06J1o4PzzQ8N5/qji3/Bo1h6An3vMaOhtgUjAM+u5tKyP4YbPwXHV2XMmTRuF8ObgcvktnihnsY6qmMwYRkhl6N21i1wd9ChuUbnBShRDNP396WBwMsY664Pm8SZxkbJzrM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196663; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=07GycYCMNG6CbEx384XPtkh3CF6e00vfF4eJn387nBg=; b=MhJ0BXLPEsQttFOxfVEcKhD1JooE474FbiyhjaxAWOvXMybRgPP0qDF1Em6zbwr9+Ov0vhfVoidKTyscAyOzvyb0oqCeloDaCwQFfbGDR9jR3J+YJYa9uFuJF+VVb3HcnGD7QHEQdi4CXFcojPndNgrGLUPRx/N54AZ5jUwEhLs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 16521966636561016.1051274970487; Tue, 10 May 2022 08:31:03 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-459-XALTrg4vOHCYAzDud4d3-w-1; Tue, 10 May 2022 11:30:55 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2F86E801210; Tue, 10 May 2022 15:30:52 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id D912A54B09D; Tue, 10 May 2022 15:30:51 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 75575194705E; Tue, 10 May 2022 15:30:51 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 37924194704D for ; Tue, 10 May 2022 15:28:00 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 2CAA640CFD06; Tue, 10 May 2022 15:28:00 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E525540CFD1A for ; Tue, 10 May 2022 15:27:59 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id CF6DF244638; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196662; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=07GycYCMNG6CbEx384XPtkh3CF6e00vfF4eJn387nBg=; b=ED8P4X3RQoJWImYbp5EEl211FISvxgTMSuhnAwm/qFXv9b/b7jcAVs+Wj487eCgQ2++M7s Y5Xjmpt4h220xuRRuGDiPg6cfOuFh7DWH53LxORik0UM64Oqpi73Fg/4HiSx9qWLuCL9Vs yRv3amvg47ofRWs2pooK4S8Gzaas2uw= X-MC-Unique: XALTrg4vOHCYAzDud4d3-w-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 72/80] qemu: Call qemuDomainCleanupAdd from qemuMigrationJobContinue Date: Tue, 10 May 2022 17:21:33 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196665395100001 Content-Type: text/plain; charset="utf-8" Every single call to qemuMigrationJobContinue needs to register a cleanup callback in case the migrating domain dies between phases or when migration is paused due to a failure in postcopy mode. Let's integrate registering the callback in qemuMigrationJobContinue to make sure the current thread does not release a migration job without setting a cleanup callback. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 38a67f7e20..d7e8b9d1e4 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -183,8 +183,10 @@ qemuMigrationJobStartPhase(virDomainObj *vm, =20 =20 static void ATTRIBUTE_NONNULL(1) -qemuMigrationJobContinue(virDomainObj *vm) +qemuMigrationJobContinue(virDomainObj *vm, + qemuDomainCleanupCallback cleanup) { + qemuDomainCleanupAdd(vm, cleanup); qemuDomainObjReleaseAsyncJob(vm); } =20 @@ -2416,8 +2418,7 @@ qemuMigrationAnyConnectionClosed(virDomainObj *vm, qemuMigrationSrcPostcopyFailed(vm); else qemuMigrationDstPostcopyFailed(vm); - qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); - qemuMigrationJobContinue(vm); + qemuMigrationJobContinue(vm, qemuProcessCleanupMigrationJob); } else { qemuMigrationParamsReset(driver, vm, priv->job.asyncJob, jobPriv->migParams, priv->job.apiFlags); @@ -2862,8 +2863,7 @@ qemuMigrationSrcBeginResumePhase(virConnectPtr conn, if (!xml) ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); =20 - qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); - qemuMigrationJobContinue(vm); + qemuMigrationJobContinue(vm, qemuProcessCleanupMigrationJob); return g_steal_pointer(&xml); } =20 @@ -2939,8 +2939,7 @@ qemuMigrationSrcBegin(virConnectPtr conn, VIR_FREE(xml); goto endjob; } - qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); - qemuMigrationJobContinue(vm); + qemuMigrationJobContinue(vm, qemuProcessCleanupMigrationJob); } else { goto endjob; } @@ -3476,13 +3475,11 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, VIR_WARN("Unable to encode migration cookie"); } =20 - qemuDomainCleanupAdd(vm, qemuMigrationDstPrepareCleanup); - /* We keep the job active across API calls until the finish() call. * This prevents any other APIs being invoked while incoming * migration is taking place. */ - qemuMigrationJobContinue(vm); + qemuMigrationJobContinue(vm, qemuMigrationDstPrepareCleanup); =20 if (autoPort) priv->migrationPort =3D port; @@ -3595,8 +3592,7 @@ qemuMigrationDstPrepareResume(virQEMUDriver *driver, qemuProcessIncomingDefFree(incoming); if (ret < 0) ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); - qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); - qemuMigrationJobContinue(vm); + qemuMigrationJobContinue(vm, qemuProcessCleanupMigrationJob); virDomainObjEndAPI(&vm); return ret; } @@ -4128,8 +4124,7 @@ qemuMigrationSrcConfirm(virQEMUDriver *driver, =20 if (virDomainObjIsFailedPostcopy(vm)) { ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); - qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); - qemuMigrationJobContinue(vm); + qemuMigrationJobContinue(vm, qemuProcessCleanupMigrationJob); } else { qemuMigrationJobFinish(vm); } @@ -6041,8 +6036,7 @@ qemuMigrationSrcPerformJob(virQEMUDriver *driver, =20 if (virDomainObjIsFailedPostcopy(vm)) { ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); - qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); - qemuMigrationJobContinue(vm); + qemuMigrationJobContinue(vm, qemuProcessCleanupMigrationJob); } else { /* v2 proto has no confirm phase so we need to reset migration par= ameters * here @@ -6110,8 +6104,7 @@ qemuMigrationSrcPerformResume(virQEMUDriver *driver, if (ret < 0) ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); =20 - qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); - qemuMigrationJobContinue(vm); + qemuMigrationJobContinue(vm, qemuProcessCleanupMigrationJob); return ret; } =20 @@ -6184,8 +6177,7 @@ qemuMigrationSrcPerformPhase(virQEMUDriver *driver, } else { if (ret < 0) ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE= _POSTCOPY_FAILED)); - qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); - qemuMigrationJobContinue(vm); + qemuMigrationJobContinue(vm, qemuProcessCleanupMigrationJob); } =20 if (!virDomainObjIsActive(vm)) @@ -6714,7 +6706,6 @@ qemuMigrationDstFinishActive(virQEMUDriver *driver, if (virDomainObjIsFailedPostcopy(vm)) { ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POS= TCOPY_FAILED)); qemuProcessAutoDestroyRemove(driver, vm); - qemuDomainCleanupAdd(vm, qemuProcessCleanupMigrationJob); *finishJob =3D false; } else { qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_MIGRATION_IN, @@ -6805,7 +6796,7 @@ qemuMigrationDstFinish(virQEMUDriver *driver, flags, retcode, v3proto, timeRe= ceived, &orig_err, &finishJob); if (!finishJob) { - qemuMigrationJobContinue(vm); + qemuMigrationJobContinue(vm, qemuProcessCleanupMigrationJob); goto cleanup; } } --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196497; cv=none; d=zohomail.com; s=zohoarc; b=GIPW0g7Vx5lUxDHXywUfIVpUpz3RqTUOied1Z2LPnrM+Ll+FX5QYUvalqBvtxfok+4/CgEPaFg1j3njGkI4ZA1mBq7i2Se9CUrq2VBjKrchm4YkPPr4ghbZRVgoAJ00k4PtgjxjfI9TkDdImkwAu+GWnKZzgAdW+/EjDqYq58pA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196497; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+p0pKGnzk4oqXy5vrOT25RfaHYVngEkZYDzouGl4OlY=; b=E7juNruKNyZfmCs48sFRFFwSFfr4TdItkSGFlMDskOtWNDjaW5HrUQRBiH2GOcm1lr0tdv/z7rU5m7P6HVg89abWZln14u0EF4ILuDxKjSlxGY9yhodub73RXj95BLxfu2wfZW7HMi3WtXxguHQEngKw7ksi2KTxgjT5RR9BYaY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196497129858.0753467200375; Tue, 10 May 2022 08:28:17 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-595-jRxT2HsgPo2XScfH90FTeQ-1; Tue, 10 May 2022 11:28:13 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 63442100BABB; Tue, 10 May 2022 15:28:10 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4654B40CFD25; Tue, 10 May 2022 15:28:10 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 620931947070; Tue, 10 May 2022 15:28:09 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4C82A1947055 for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 315ACC27E83; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1134FC15D40 for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id D0AEC244639; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196496; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=+p0pKGnzk4oqXy5vrOT25RfaHYVngEkZYDzouGl4OlY=; b=PibaEXP4BbY+jiUD6Zpg/LBV3WJQxHUEtl1Qbr8d+41aNn88ArelR2/tGN6WO/OY/kFowL 0B7+vp72J9YkDfwQc8u5/QeK+07KX8BxJsPqrVUUYD295edXdYsSs0yKqlxQNxgNaJ+IAo Z47fYuu9Dq6ZieIv2xTfGpSLkwutcl4= X-MC-Unique: jRxT2HsgPo2XScfH90FTeQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 73/80] qemu: Implement VIR_MIGRATE_POSTCOPY_RESUME for peer-to-peer migration Date: Tue, 10 May 2022 17:21:34 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196498354100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.c | 53 ++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index d7e8b9d1e4..24aa831c45 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2759,7 +2759,7 @@ qemuMigrationAnyCanResume(virDomainObj *vm, */ if (job =3D=3D VIR_ASYNC_JOB_MIGRATION_OUT && expectedPhase < QEMU_MIGRATION_PHASE_PERFORM_RESUME && - !(flags & VIR_MIGRATE_CHANGE_PROTECTION)) { + !(flags & (VIR_MIGRATE_CHANGE_PROTECTION | VIR_MIGRATE_PEER2PEER))= ) { virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", _("resuming failed post-copy migration requires " "change protection")); @@ -5473,9 +5473,14 @@ qemuMigrationSrcPerformPeer2Peer3(virQEMUDriver *dri= ver, * bit here, because we are already running inside the context of * a single job. */ =20 - dom_xml =3D qemuMigrationSrcBeginPhase(driver, vm, xmlin, dname, - &cookieout, &cookieoutlen, - nmigrate_disks, migrate_disks, fl= ags); + if (flags & VIR_MIGRATE_POSTCOPY_RESUME) { + dom_xml =3D qemuMigrationSrcBeginResume(driver, vm, xmlin, + &cookieout, &cookieoutlen, f= lags); + } else { + dom_xml =3D qemuMigrationSrcBeginPhase(driver, vm, xmlin, dname, + &cookieout, &cookieoutlen, + nmigrate_disks, migrate_disks= , flags); + } if (!dom_xml) goto cleanup; =20 @@ -5531,7 +5536,8 @@ qemuMigrationSrcPerformPeer2Peer3(virQEMUDriver *driv= er, goto cleanup; } =20 - if (virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_PAUSED) + if (!(flags & VIR_MIGRATE_POSTCOPY_RESUME) && + virDomainObjGetState(vm, NULL) =3D=3D VIR_DOMAIN_PAUSED) flags |=3D VIR_MIGRATE_PAUSED; =20 destflags =3D flags & ~(VIR_MIGRATE_ABORT_ON_ERROR | @@ -5980,22 +5986,35 @@ qemuMigrationSrcPerformJob(virQEMUDriver *driver, qemuDomainObjPrivate *priv =3D vm->privateData; qemuDomainJobPrivate *jobPriv =3D priv->job.privateData; =20 - if (qemuMigrationJobStart(driver, vm, VIR_ASYNC_JOB_MIGRATION_OUT, - flags) < 0) - goto cleanup; + if (flags & VIR_MIGRATE_POSTCOPY_RESUME) { + if (!qemuMigrationAnyCanResume(vm, VIR_ASYNC_JOB_MIGRATION_OUT, fl= ags, + QEMU_MIGRATION_PHASE_POSTCOPY_FAILE= D)) + goto cleanup; =20 - if (!(flags & VIR_MIGRATE_OFFLINE) && virDomainObjCheckActive(vm) < 0) - goto endjob; + if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_BEGIN_RESU= ME) < 0) + goto cleanup; =20 - if (!qemuMigrationSrcIsAllowed(driver, vm, true, flags)) - goto endjob; + virCloseCallbacksUnset(driver->closeCallbacks, vm, + qemuMigrationAnyConnectionClosed); + qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob); + } else { + if (qemuMigrationJobStart(driver, vm, VIR_ASYNC_JOB_MIGRATION_OUT, + flags) < 0) + goto cleanup; =20 - if (!(flags & (VIR_MIGRATE_UNSAFE | VIR_MIGRATE_OFFLINE)) && - !qemuMigrationSrcIsSafe(vm->def, priv->qemuCaps, - nmigrate_disks, migrate_disks, flags)) - goto endjob; + if (!(flags & VIR_MIGRATE_OFFLINE) && virDomainObjCheckActive(vm) = < 0) + goto endjob; =20 - qemuMigrationSrcStoreDomainState(vm); + if (!qemuMigrationSrcIsAllowed(driver, vm, true, flags)) + goto endjob; + + if (!(flags & (VIR_MIGRATE_UNSAFE | VIR_MIGRATE_OFFLINE)) && + !qemuMigrationSrcIsSafe(vm->def, priv->qemuCaps, + nmigrate_disks, migrate_disks, flags)) + goto endjob; + + qemuMigrationSrcStoreDomainState(vm); + } =20 if ((flags & (VIR_MIGRATE_TUNNELLED | VIR_MIGRATE_PEER2PEER))) { ret =3D qemuMigrationSrcPerformPeer2Peer(driver, conn, vm, xmlin, = persist_xml, --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196509; cv=none; d=zohomail.com; s=zohoarc; b=IfE3OWzqPHgXoNMtM/nR5Sul6zMTzZIUb4qwm5l0mN+r6eY1YAKkS+mik3vjmMLCtFYIpyr10d7wCVN9H6N9zYqRuVs159iWXBMW3b7hbI1Nwq4jtvpm3jfEc0bgF4LqCxJdbZHurSifJ3dsUopnwiMrHJHkZ6KdxzNLBgq3BuU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196509; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=cod7e8AxsUz3jh6FrxYWML4h8lDz7tfkLCa+1BvhAAI=; b=aSeiCObqM6atSuzbVQmTyQOoVIdOLuwi0McL+dFpBHK7mNnd5I85tjC7LiGZVbqC7NEFJk5SvDPJIKGpxy/2Fbq64FVbEDQin1oBM8wbpseGWCftr11xCh/+N6WZtAeh/Lx9a5ppOe8FeoIL4CVecljTpnW148KYGldKuQeusrw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 165219650965468.95124712568497; Tue, 10 May 2022 08:28:29 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-384-jDuAomezPKCis4opZ6XinA-1; Tue, 10 May 2022 11:28:25 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C77358015BA; Tue, 10 May 2022 15:28:22 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id B0DB7403D167; Tue, 10 May 2022 15:28:22 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 80DF71947059; Tue, 10 May 2022 15:28:22 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5B4AC194705D for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 4D0B314DFBA8; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2D37014DFB98 for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id D1FA924463A; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196508; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=cod7e8AxsUz3jh6FrxYWML4h8lDz7tfkLCa+1BvhAAI=; b=NWpd4862VwfAAh//aMcOR2beKDZPDQLAwzfmEM0wLdApU1D2Y4jtx1DOnX29fwzxc9vrVl d8Jv1GIKdvJm9NG42WENMLOKb5T7AOo4l47LxHidp8GMwPqaLHrPM9eflWU/hyQpogIiF/ KWa0hviF1R2YJjMZCVkJXOHlyHnVBn8= X-MC-Unique: jDuAomezPKCis4opZ6XinA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 74/80] qemu: Enable support for VIR_MIGRATE_POSTCOPY_RESUME Date: Tue, 10 May 2022 17:21:35 +0200 Message-Id: <9ed5ff7e8a27153c8a443b31859c3dfac8261bfa.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196510516100001 Content-Type: text/plain; charset="utf-8" Since all parts of post-copy recovery have been implemented now, it's time to enable the corresponding flag. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_migration.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index 7eb0d4fe02..fbc0549b34 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -60,6 +60,7 @@ VIR_MIGRATE_TLS | \ VIR_MIGRATE_PARALLEL | \ VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES | \ + VIR_MIGRATE_POSTCOPY_RESUME | \ 0) =20 /* All supported migration parameters and their types. */ --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196641; cv=none; d=zohomail.com; s=zohoarc; b=CTFv3EI08CWsQoTg+Mj5VKyblcjDP/173WolqUCpkVj4/9RuiXj8jwwWqIoMOFZa17L08NaKyfAFOFyiWqd+9s1NndNX7wzzzfjg7MHt7XGAT7hVsS4VRBzZ8qJwoaJ00ledQBtfipLy3dfAtohJO1DGIar1vnbIJOVlpyL04qw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196641; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=A+CfFKWQyAu8/pewU/TI2CJTQxTuK2jbvPVQO1yWwtU=; b=S5jT8aztJKBVqDxJNsSityhW6FdZk8XGeQxj0N4DuPl3VAyDd7kDn1xiNrkjcwIKUEHoV5Y6Zeugl4vJeiuyBmYrYAECn/76L9RnKulnFx2rSqrGGHgf69YWPNij/eZI/4WiIDlnCbuk5qmTmwPZV3hfBDracSFWRybTynqaxGA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196641333611.2135827735309; Tue, 10 May 2022 08:30:41 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-79-SQA56krXMHi6oqNhRtFZfA-1; Tue, 10 May 2022 11:30:38 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6675E1C3E980; Tue, 10 May 2022 15:30:35 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2F0E354B09F; Tue, 10 May 2022 15:30:34 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D3BCB1947077; Tue, 10 May 2022 15:30:33 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D3EAA1947059 for ; Tue, 10 May 2022 15:28:19 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id B937C7C58; Tue, 10 May 2022 15:28:19 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7D2009E68 for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id D341624463B; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196639; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=A+CfFKWQyAu8/pewU/TI2CJTQxTuK2jbvPVQO1yWwtU=; b=Neo8XdBO2OrXM3cPgmF2a9svZH+Kl20k+o+/CX/M7PF0BPKVJXxb6N3ys8siKUU7G1QLey 0CWMTw++idQuN4rZp2U5aE+UFcQOcgGZYYH0XL5GOHhajq4VNxcmJPsGTRa2mOK+b0pRWM DJRbz53ns0Fqvlo2FJa3O2ozl2NSO/s= X-MC-Unique: SQA56krXMHi6oqNhRtFZfA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 75/80] Add virDomainAbortJobFlags public API Date: Tue, 10 May 2022 17:21:36 +0200 Message-Id: <4d2f71368643aa55198589d96b86a589a990fd87.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196643264100001 Content-Type: text/plain; charset="utf-8" The original virDomainAbortJob did not support flags. Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- include/libvirt/libvirt-domain.h | 3 +++ src/driver-hypervisor.h | 5 ++++ src/libvirt-domain.c | 45 ++++++++++++++++++++++++++++++++ src/libvirt_public.syms | 1 + src/remote/remote_driver.c | 1 + src/remote/remote_protocol.x | 14 +++++++++- src/remote_protocol-structs | 5 ++++ 7 files changed, 73 insertions(+), 1 deletion(-) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index aee2b49114..af4406cb61 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -4099,6 +4099,9 @@ int virDomainGetJobStats(virDomainPtr domain, unsigned int flags); int virDomainAbortJob(virDomainPtr dom); =20 +int virDomainAbortJobFlags(virDomainPtr dom, + unsigned int flags); + /** * virDomainJobOperation: * diff --git a/src/driver-hypervisor.h b/src/driver-hypervisor.h index 69516e8fea..016d5cec7c 100644 --- a/src/driver-hypervisor.h +++ b/src/driver-hypervisor.h @@ -746,6 +746,10 @@ typedef int typedef int (*virDrvDomainAbortJob)(virDomainPtr domain); =20 +typedef int +(*virDrvDomainAbortJobFlags)(virDomainPtr domain, + unsigned int flags); + typedef int (*virDrvDomainMigrateGetMaxDowntime)(virDomainPtr domain, unsigned long long *downtime, @@ -1590,6 +1594,7 @@ struct _virHypervisorDriver { virDrvDomainGetJobInfo domainGetJobInfo; virDrvDomainGetJobStats domainGetJobStats; virDrvDomainAbortJob domainAbortJob; + virDrvDomainAbortJobFlags domainAbortJobFlags; virDrvDomainMigrateGetMaxDowntime domainMigrateGetMaxDowntime; virDrvDomainMigrateSetMaxDowntime domainMigrateSetMaxDowntime; virDrvDomainMigrateGetCompressionCache domainMigrateGetCompressionCach= e; diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 07fb8119d9..1e1b378361 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -9459,6 +9459,51 @@ virDomainAbortJob(virDomainPtr domain) } =20 =20 +/** + * virDomainAbortJobFlags: + * @domain: a domain object + * @flags: extra flags; not used yet, callers should always pass 0 + * + * Requests that the current background job be aborted at the + * soonest opportunity. In case the job is a migration in a post-copy mode, + * this function will report an error (see virDomainMigrateStartPostCopy f= or + * more details). + * + * Returns 0 in case of success and -1 in case of failure. + * + * Since: 8.4.0 + */ +int +virDomainAbortJobFlags(virDomainPtr domain, + unsigned int flags) +{ + virConnectPtr conn; + + VIR_DOMAIN_DEBUG(domain); + + virResetLastError(); + + virCheckDomainReturn(domain, -1); + conn =3D domain->conn; + + virCheckReadOnlyGoto(conn->flags, error); + + if (conn->driver->domainAbortJobFlags) { + int ret; + ret =3D conn->driver->domainAbortJobFlags(domain, flags); + if (ret < 0) + goto error; + return ret; + } + + virReportUnsupportedError(); + + error: + virDispatchError(conn); + return -1; +} + + /** * virDomainMigrateSetMaxDowntime: * @domain: a domain object diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms index 9f58b52924..c68bbf3680 100644 --- a/src/libvirt_public.syms +++ b/src/libvirt_public.syms @@ -918,6 +918,7 @@ LIBVIRT_8.0.0 { =20 LIBVIRT_8.4.0 { global: + virDomainAbortJobFlags; virDomainSaveParams; virDomainRestoreParams; } LIBVIRT_8.0.0; diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 423f5f9fb9..5ad517a387 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -8534,6 +8534,7 @@ static virHypervisorDriver hypervisor_driver =3D { .domainGetJobInfo =3D remoteDomainGetJobInfo, /* 0.7.7 */ .domainGetJobStats =3D remoteDomainGetJobStats, /* 1.0.3 */ .domainAbortJob =3D remoteDomainAbortJob, /* 0.7.7 */ + .domainAbortJobFlags =3D remoteDomainAbortJobFlags, /* 8.2.0 */ .domainMigrateGetMaxDowntime =3D remoteDomainMigrateGetMaxDowntime, /*= 3.7.0 */ .domainMigrateSetMaxDowntime =3D remoteDomainMigrateSetMaxDowntime, /*= 0.8.0 */ .domainMigrateGetCompressionCache =3D remoteDomainMigrateGetCompressio= nCache, /* 1.0.3 */ diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x index 085631c11b..79ffc63f03 100644 --- a/src/remote/remote_protocol.x +++ b/src/remote/remote_protocol.x @@ -2492,6 +2492,12 @@ struct remote_domain_abort_job_args { }; =20 =20 +struct remote_domain_abort_job_flags_args { + remote_nonnull_domain dom; + unsigned int flags; +}; + + struct remote_domain_migrate_get_max_downtime_args { remote_nonnull_domain dom; unsigned int flags; @@ -6947,5 +6953,11 @@ enum remote_procedure { * @acl: domain:start * @acl: domain:write */ - REMOTE_PROC_DOMAIN_RESTORE_PARAMS =3D 441 + REMOTE_PROC_DOMAIN_RESTORE_PARAMS =3D 441, + + /** + * @generate: both + * @acl: domain:write + */ + REMOTE_PROC_DOMAIN_ABORT_JOB_FLAGS =3D 442 }; diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs index 4ffdce5679..ca5222439d 100644 --- a/src/remote_protocol-structs +++ b/src/remote_protocol-structs @@ -1869,6 +1869,10 @@ struct remote_domain_get_job_stats_ret { struct remote_domain_abort_job_args { remote_nonnull_domain dom; }; +struct remote_domain_abort_job_flags_args { + remote_nonnull_domain dom; + u_int flags; +}; struct remote_domain_migrate_get_max_downtime_args { remote_nonnull_domain dom; u_int flags; @@ -3706,4 +3710,5 @@ enum remote_procedure { REMOTE_PROC_DOMAIN_SET_LAUNCH_SECURITY_STATE =3D 439, REMOTE_PROC_DOMAIN_SAVE_PARAMS =3D 440, REMOTE_PROC_DOMAIN_RESTORE_PARAMS =3D 441, + REMOTE_PROC_DOMAIN_ABORT_JOB_FLAGS =3D 442, }; --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196254; cv=none; d=zohomail.com; s=zohoarc; b=WWzqHYAHybmWKwPy5rXU2mj0flxFuicGjzZ/addEGQQthuZADpDTpH2qht5bji2a/6sXX+oEf6SAr/sguyZxTJlI06tZJNEBBi7p1G8Vjb2RBzCM5ccrq2wQcrXUWa679qWbVPswyowQQeYfhGpNSidpk/7h/J1LFu6+8MulJ5Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196254; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6GUz1rqLpnF863uQR6x9zSE4dJP+Btx3+sIlqAdi194=; b=fkY91wlAcB/tKgJKdJ64kS3ywcLKPqSqKo8pxgOlQSE/3IApWIUz0v6OolkgsyrfOpXeO7bys+WpzBq+q5tfKmSArhDQlq0wkjLXA3aL2We3dfpY5tSI26HUIzeMnXscP+G8LfiyqxApg/eHY9IZQ4PrWjh9GV6erd7y583pqC0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196254343814.6787799050372; Tue, 10 May 2022 08:24:14 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-501-mZO2sDwTPE6iAuteYm1A0g-1; Tue, 10 May 2022 11:23:12 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6C52338149D2; Tue, 10 May 2022 15:22:10 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 570FB111D78A; Tue, 10 May 2022 15:22:10 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id CCA7A195354C; Tue, 10 May 2022 15:22:00 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id AA0E61947B98 for ; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 8C16554B08D; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6CACE54B086 for ; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id D484924463C; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196253; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=6GUz1rqLpnF863uQR6x9zSE4dJP+Btx3+sIlqAdi194=; b=WnxDgKTlFzEcsxIN3nTJexEiGwUyjZooF9cFGJ7LGxPYklxMmArskGagoDJ8+i7HZUz4jw NVEmOl0QYrkJ18x5FoWoEg8VGC/Hrv1bsD3neUqJAgTPTnPdvWHGdbfsx2OywVTd7okTKx nWkoG7rceGR/DwH0v7mfvB2jlUJnKUo= X-MC-Unique: mZO2sDwTPE6iAuteYm1A0g-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 76/80] qemu: Implement virDomainAbortJobFlags Date: Tue, 10 May 2022 17:21:37 +0200 Message-Id: <18e2fbbd755dc6aa0031e46566d13bd8a5a85234.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196255116100002 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_driver.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index e268d3a478..efa6cbe14d 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -12770,7 +12770,9 @@ qemuDomainAbortJobMigration(virDomainObj *vm) } =20 =20 -static int qemuDomainAbortJob(virDomainPtr dom) +static int +qemuDomainAbortJobFlags(virDomainPtr dom, + unsigned int flags) { virQEMUDriver *driver =3D dom->conn->privateData; virDomainObj *vm; @@ -12778,10 +12780,12 @@ static int qemuDomainAbortJob(virDomainPtr dom) qemuDomainObjPrivate *priv; int reason; =20 + virCheckFlags(0, -1); + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; =20 - if (virDomainAbortJobEnsureACL(dom->conn, vm->def) < 0) + if (virDomainAbortJobFlagsEnsureACL(dom->conn, vm->def) < 0) goto cleanup; =20 if (qemuDomainObjBeginJob(driver, vm, VIR_JOB_ABORT) < 0) @@ -12860,6 +12864,13 @@ static int qemuDomainAbortJob(virDomainPtr dom) } =20 =20 +static int +qemuDomainAbortJob(virDomainPtr dom) +{ + return qemuDomainAbortJobFlags(dom, 0); +} + + static int qemuDomainMigrateSetMaxDowntime(virDomainPtr dom, unsigned long long downtime, @@ -21018,6 +21029,7 @@ static virHypervisorDriver qemuHypervisorDriver =3D= { .domainGetJobInfo =3D qemuDomainGetJobInfo, /* 0.7.7 */ .domainGetJobStats =3D qemuDomainGetJobStats, /* 1.0.3 */ .domainAbortJob =3D qemuDomainAbortJob, /* 0.7.7 */ + .domainAbortJobFlags =3D qemuDomainAbortJobFlags, /* 8.4.0 */ .domainMigrateGetMaxDowntime =3D qemuDomainMigrateGetMaxDowntime, /* 3= .7.0 */ .domainMigrateSetMaxDowntime =3D qemuDomainMigrateSetMaxDowntime, /* 0= .8.0 */ .domainMigrateGetCompressionCache =3D qemuDomainMigrateGetCompressionC= ache, /* 1.0.3 */ --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196605; cv=none; d=zohomail.com; s=zohoarc; b=kPakpj1QrE7E8ztt4385iOmRq0AjEaTaQW1/Cs5vWPDayRuwWAS9oRj3gLDTvUTs2SgktZSdN5c9RCgiIM9aU4oU68gzFAoWuIxdMWuC+pifroSklwgOvvrTuXlkJ/Fl/PRCQuBIYoHKBNfzqd8BDxNrAyzKKEf3Up25e2uLDq4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196605; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=WbqxdlzbWIh2FUV0V1M4ni2BT/3Hvd/qw2IofLalAN0=; b=EadysWT3Bqr47BltQTrysHdSuxChGnYA5OFrLvOyNuGRamdCPlrgv2ZuJ2+VO3zwr6oPhnI9xnyZjkb7DGTq8qSwupU8wepBXF646EUyx/23SpsHuuOudI0Ikxvq3EJB9rMgt27u1vg5vTaXTD7m623/oZYWXn94QOvB9e3j/VM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196605585602.5757365229304; Tue, 10 May 2022 08:30:05 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-213-hoGH0DpwNiCotmTgaTF3zA-1; Tue, 10 May 2022 11:29:06 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A6F733C92FD6; Tue, 10 May 2022 15:29:01 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 915BBC27E80; Tue, 10 May 2022 15:29:01 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 3CED61947064; Tue, 10 May 2022 15:29:01 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5816C1947059 for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 4C58640C1421; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2C006403D165 for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id D5C4624463D; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196604; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=WbqxdlzbWIh2FUV0V1M4ni2BT/3Hvd/qw2IofLalAN0=; b=fyDeYzBFRNbhIOqs7f+qSfEK+mTn+FPP+GpiilMIuXlrVJRsiyjsP6RKlYVbNC3D6cpC40 1rjW2S7m6t6j7+G+VhiRGbkCalkfEsCvvHeWwqCZ1MgJ0OaN8lHP/KN7aNYa+6WUM2PX2X X+7XntoXXKPSSV89n9A6u4tFtszs9hI= X-MC-Unique: hoGH0DpwNiCotmTgaTF3zA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 77/80] Add VIR_DOMAIN_ABORT_JOB_POSTCOPY flag for virDomainAbortJobFlags Date: Tue, 10 May 2022 17:21:38 +0200 Message-Id: <134af0d3cd5b85a93c1bf33603596cbbf6e6cf3d.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196607031100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- include/libvirt/libvirt-domain.h | 16 ++++++++++++++++ src/libvirt-domain.c | 10 ++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index af4406cb61..bcd377b74f 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -4099,6 +4099,22 @@ int virDomainGetJobStats(virDomainPtr domain, unsigned int flags); int virDomainAbortJob(virDomainPtr dom); =20 +/** + * virDomainAbortJobFlagsValues: + * + * Flags OR'ed together to provide specific behavior when aborting a domai= n job. + * + * Since: 8.4.0 + */ +typedef enum { + /* Interrupt post-copy migration. Since migration in a post-copy phase + * cannot be aborted without losing the domain (none of the hosts invo= lved + * in migration has a complete state of the domain), the migration wil= l be + * suspended and it can later be resumed using virDomainMigrate* APIs = with + * VIR_MIGRATE_POSTCOPY_RESUME flag. (Since: 8.4.0) */ + VIR_DOMAIN_ABORT_JOB_POSTCOPY =3D 1 << 0, +} virDomainAbortJobFlagsValues; + int virDomainAbortJobFlags(virDomainPtr dom, unsigned int flags); =20 diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 1e1b378361..5f0f60781a 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -9462,12 +9462,12 @@ virDomainAbortJob(virDomainPtr domain) /** * virDomainAbortJobFlags: * @domain: a domain object - * @flags: extra flags; not used yet, callers should always pass 0 + * @flags: bitwise-OR of virDomainAbortJobFlagsValues * * Requests that the current background job be aborted at the * soonest opportunity. In case the job is a migration in a post-copy mode, - * this function will report an error (see virDomainMigrateStartPostCopy f= or - * more details). + * this function will report an error unless VIR_DOMAIN_ABORT_JOB_POSTCOPY + * flag is used (see virDomainMigrateStartPostCopy for more details). * * Returns 0 in case of success and -1 in case of failure. * @@ -9807,7 +9807,9 @@ virDomainMigrateGetMaxSpeed(virDomainPtr domain, * running, individual tasks in the guest may be blocked waiting for a pag= e that * has not been migrated yet. It's up to the upper layer to decide what to= do * in such case. Because of this, libvirt will refuse to cancel post-copy - * migration via virDomainAbortJob. + * migration via virDomainAbortJobFlags unless it is called with + * VIR_DOMAIN_ABORT_JOB_POSTCOPY, in which case the post-copy migration wi= ll be + * paused. * * Failed post-copy migration can be recovered once the cause for the fail= ure * (e.g., a network issue) is resolved by repeating the migration with an --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196287; cv=none; d=zohomail.com; s=zohoarc; b=gPomatia2x3HjtDSdJeHOnbuJU2c/00NKsbadAOyXSCLmIi6KCSCnPCFTsvJ+EkHmJx3cD7aoikxt8FYlF05rab7jA30+IrnyAqAxHin0Fls/lPV5RCDjrtVcvoqFR9TG73Ypkq4hcDkjsvBX3kg5Ea06HbcvRdJxNQCNjCzSn8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196287; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=JwPqr3GDZuWWtb4MpKuV1HH5ZLKCyF+A9Yk5fr19eWs=; b=DW6fGapk8Osp1M3y0C8QUFjLfN9lOsGiMf5drjtOnGkHZt/upzXL6oz2jp/Q3azzAtiy0txJYHrsWM71tM3DkeHvPfqwt+UDEgy711FBxH4dBub4ttnat+N/ck+Th3+BilQEcFgS1PTGRtGkLHswxKTYnXvCeYGswW7mVQlz3Uw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196287438511.82912940855215; Tue, 10 May 2022 08:24:47 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-639-r1fXQEy5NkeP3qg2yBTiDg-1; Tue, 10 May 2022 11:23:19 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 528C910665B7; Tue, 10 May 2022 15:22:16 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3D9EA54B070; Tue, 10 May 2022 15:22:16 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id E62011940356; Tue, 10 May 2022 15:22:06 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id B57DA194705F for ; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id A5FA340D283A; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6934E4010E46 for ; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id D707F24463E; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196286; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=JwPqr3GDZuWWtb4MpKuV1HH5ZLKCyF+A9Yk5fr19eWs=; b=ZkcVcPKooo8lABrzoTvAq4SDLgwwj5BRigDXBo6l5tY5blUcnA2b/zaL19BQ/ZQ3dSswIV TCsepHe7/14vrig/zprQKf7mnuTrCWCCR0K/dx3PucODSsmW9PdvQzI7r70np7J/IXjkLn 7ftVeD9anx6rT79Gy/IlUJ1u5TaS6uo= X-MC-Unique: r1fXQEy5NkeP3qg2yBTiDg-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 78/80] qemu: Implement VIR_DOMAIN_ABORT_JOB_POSTCOPY flag Date: Tue, 10 May 2022 17:21:39 +0200 Message-Id: <166e747cfb2a769c8580be5ff8884498a735ab54.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196292506100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- src/qemu/qemu_driver.c | 43 +++++++++++++++++++++++++++++------- src/qemu/qemu_monitor.c | 9 ++++++++ src/qemu/qemu_monitor.h | 3 +++ src/qemu/qemu_monitor_json.c | 22 ++++++++++++++++++ src/qemu/qemu_monitor_json.h | 3 +++ 5 files changed, 72 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index efa6cbe14d..344bbe2196 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -12770,6 +12770,36 @@ qemuDomainAbortJobMigration(virDomainObj *vm) } =20 =20 +static int +qemuDomainAbortJobPostcopy(virDomainObj *vm, + unsigned int flags) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + int rc; + + if (!(flags & VIR_DOMAIN_ABORT_JOB_POSTCOPY)) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("cannot abort migration in post-copy mode")); + return -1; + } + + VIR_DEBUG("Suspending post-copy migration at client request"); + + qemuDomainObjAbortAsyncJob(vm); + qemuDomainObjEnterMonitor(priv->driver, vm); + rc =3D qemuMonitorMigratePause(priv->mon); + qemuDomainObjExitMonitor(vm); + + if (rc =3D=3D -2) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("cannot suspend post-copy migration")); + return -1; + } + + return rc; +} + + static int qemuDomainAbortJobFlags(virDomainPtr dom, unsigned int flags) @@ -12780,7 +12810,7 @@ qemuDomainAbortJobFlags(virDomainPtr dom, qemuDomainObjPrivate *priv; int reason; =20 - virCheckFlags(0, -1); + virCheckFlags(VIR_DOMAIN_ABORT_JOB_POSTCOPY, -1); =20 if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; @@ -12817,13 +12847,10 @@ qemuDomainAbortJobFlags(virDomainPtr dom, case VIR_ASYNC_JOB_MIGRATION_OUT: if ((priv->job.current->status =3D=3D VIR_DOMAIN_JOB_STATUS_POSTCO= PY || (virDomainObjGetState(vm, &reason) =3D=3D VIR_DOMAIN_PAUSED && - reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY))) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("cannot abort migration in post-copy mode")); - goto endjob; - } - - ret =3D qemuDomainAbortJobMigration(vm); + reason =3D=3D VIR_DOMAIN_PAUSED_POSTCOPY))) + ret =3D qemuDomainAbortJobPostcopy(vm, flags); + else + ret =3D qemuDomainAbortJobMigration(vm); break; =20 case VIR_ASYNC_JOB_SAVE: diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 5424fdc4fd..af37ce7d19 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -2429,6 +2429,15 @@ qemuMonitorMigrateCancel(qemuMonitor *mon) } =20 =20 +int +qemuMonitorMigratePause(qemuMonitor *mon) +{ + QEMU_CHECK_MONITOR(mon); + + return qemuMonitorJSONMigratePause(mon); +} + + int qemuMonitorQueryDump(qemuMonitor *mon, qemuMonitorDumpStats *stats) diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 812f8f4dc2..e36ce8b4eb 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -927,6 +927,9 @@ int qemuMonitorMigrateToSocket(qemuMonitor *mon, =20 int qemuMonitorMigrateCancel(qemuMonitor *mon); =20 +int +qemuMonitorMigratePause(qemuMonitor *mon); + int qemuMonitorGetDumpGuestMemoryCapability(qemuMonitor *mon, const char *capability); =20 diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 44361ae003..66e0b870b4 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -3458,6 +3458,28 @@ int qemuMonitorJSONMigrateCancel(qemuMonitor *mon) } =20 =20 +int +qemuMonitorJSONMigratePause(qemuMonitor *mon) +{ + g_autoptr(virJSONValue) cmd =3D NULL; + g_autoptr(virJSONValue) reply =3D NULL; + + if (!(cmd =3D qemuMonitorJSONMakeCommand("migrate-pause", NULL))) + return -1; + + if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) + return -1; + + if (qemuMonitorJSONHasError(reply, "DeviceNotFound")) + return -2; + + if (qemuMonitorJSONCheckError(cmd, reply) < 0) + return -1; + + return 0; +} + + /* qemuMonitorJSONQueryDump: * @mon: Monitor pointer * @stats: Monitor dump stats diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index a60c0bfac4..20c3f63f93 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -208,6 +208,9 @@ qemuMonitorJSONGetSpiceMigrationStatus(qemuMonitor *mon, int qemuMonitorJSONMigrateCancel(qemuMonitor *mon); =20 +int +qemuMonitorJSONMigratePause(qemuMonitor *mon); + int qemuMonitorJSONQueryDump(qemuMonitor *mon, qemuMonitorDumpStats *stats); --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196252; cv=none; d=zohomail.com; s=zohoarc; b=ii1ISDszVaO+4PEDsW4puw4llPVHvuRG+NOa11n9Vk105WDFiRvDv04LXW3B7+sPmbLz3STnA0VUaa29a1mSjhWzqF7+8bKGS7nKSsaoZXctvg+qf+64MV/p5VJl62jUhdT76/GLmTn6oL/4eXEISxdfMX3zzl544xzEZ1F7n94= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196252; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=JCB2+Kw9AS+ASZmkuZ7hakZ/Qv1aId4VlAKjJU8ef/I=; b=a0wRsLuBAa+ot2aQAs5kvD4NX9edtHf0Fryg8sQ8FCCa4Dm49lrJw2/S/UZo9euq8wvPIWqDUMc6icLe2fk3cNsaW9DcSTNb4roaomjnTVkrVip/vlVe9PzRGx8Br0sHE6GRh7wKFmifvDtlQUGpTNSNBaLrXmtEF7YSzafG7OE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1652196252919551.833290311031; Tue, 10 May 2022 08:24:12 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-166-xYRRLH_EM7ShEFazax8DCw-1; Tue, 10 May 2022 11:23:22 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D236D80660F; Tue, 10 May 2022 15:22:17 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id BE210401E77; Tue, 10 May 2022 15:22:17 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id AC12C194E009; Tue, 10 May 2022 15:22:07 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4045C194704D for ; Tue, 10 May 2022 15:22:05 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 33244FFDC; Tue, 10 May 2022 15:22:05 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 12F399E60 for ; Tue, 10 May 2022 15:21:51 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id D83EE24463F; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196251; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=JCB2+Kw9AS+ASZmkuZ7hakZ/Qv1aId4VlAKjJU8ef/I=; b=RrFmxeou3brPDQ6J/l251akAcKsfDwCWGj9jv+yrSpxbhA+b1J4CeemvnsJFcO6Tlyg6tr kVB0hDa/7N+F3wlgX7EB/t/n7YOhGyJ2+Eh6NMXbccsTuL1QctHIbyb6HEvD5YoV/ttlRf T/C6pACHBHTP3uuE6OEqTwsO3Inkb6g= X-MC-Unique: xYRRLH_EM7ShEFazax8DCw-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 79/80] virsh: Add --postcopy option for domjobabort command Date: Tue, 10 May 2022 17:21:40 +0200 Message-Id: <0dee3bfe3b15428ab9c2a5da277a3acfefaadb42.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196255115100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- docs/manpages/virsh.rst | 8 +++++++- tools/virsh-domain.c | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst index e36d64c164..1bb9044e0a 100644 --- a/docs/manpages/virsh.rst +++ b/docs/manpages/virsh.rst @@ -2053,10 +2053,16 @@ domjobabort =20 :: =20 - domjobabort domain + domjobabort domain [--postcopy] =20 Abort the currently running domain job. =20 +When the job to be aborted is a migration which entered post-copy mode, it +cannot be aborted as none of the hosts involved in migration has a complete +state of the domain. Optional *--postcopy* can be used to interrupt such +migration although doing so may effectively suspend the domain until the +migration is resumed (see also *--postcopy-resume* option of ``migrate``). + =20 domjobinfo ---------- diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index b0d5b15dff..63a5ee7a34 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -6477,6 +6477,10 @@ static const vshCmdInfo info_domjobabort[] =3D { =20 static const vshCmdOptDef opts_domjobabort[] =3D { VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE), + {.name =3D "postcopy", + .type =3D VSH_OT_BOOL, + .help =3D N_("interrupt post-copy migration") + }, {.name =3D NULL} }; =20 @@ -6484,11 +6488,21 @@ static bool cmdDomjobabort(vshControl *ctl, const vshCmd *cmd) { g_autoptr(virshDomain) dom =3D NULL; + unsigned int flags =3D 0; + int rc; =20 if (!(dom =3D virshCommandOptDomain(ctl, cmd, NULL))) return false; =20 - if (virDomainAbortJob(dom) < 0) + if (vshCommandOptBool(cmd, "postcopy")) + flags |=3D VIR_DOMAIN_ABORT_JOB_POSTCOPY; + + if (flags =3D=3D 0) + rc =3D virDomainAbortJob(dom); + else + rc =3D virDomainAbortJobFlags(dom, flags); + + if (rc < 0) return false; =20 return true; --=20 2.35.1 From nobody Fri Apr 19 17:04:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1652196498; cv=none; d=zohomail.com; s=zohoarc; b=bMyGnoOg/yURcrsuvOTWKbMeB6t9Po/KFtXUpliVjPpL0RKEViFN8uBXgWUDnGUzBapomHRPorp6hAmwylE3Wzl9P1MEg6S69H0902nO2UDJaE9+bIcr/CC6slNjxPkVNOFbMJ/2EOzGKK6yTczLHVKxw2A+JdMNwT1XIs2DPV4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1652196498; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=u3F1i2xqusNJcU0/yeqpFlVL5wpPodXgEei93Dq27zM=; b=IPWFbiGo9XtV7f6SuHnQHw/p0vUiGdrw8uYvoS0lSdT/zTxdERMIyqwqAFe6J54RJ70Zk/LtM8XDS/fuzk3Bs9RO0/obC7a4zHvybIiIWUjsN2o8Had2rF6mk6mZhuoNPT6X/ZTGoKsf07fnEpF8oB/aidLiIDm7D7henmM8zwY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1652196498561292.9926156945737; Tue, 10 May 2022 08:28:18 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-652-p_CrsPE9MOCaqg25QrlR9g-1; Tue, 10 May 2022 11:28:14 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 10E5219705AA; Tue, 10 May 2022 15:28:11 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id F050C403171; Tue, 10 May 2022 15:28:10 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D26B71947061; Tue, 10 May 2022 15:28:09 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 759C61947055 for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 6825C40CFD1A; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.187]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4889D40CFD06 for ; Tue, 10 May 2022 15:28:01 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id D97C9244640; Tue, 10 May 2022 17:21:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1652196497; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=u3F1i2xqusNJcU0/yeqpFlVL5wpPodXgEei93Dq27zM=; b=FExWsy9cca5/HXiZXAPPtyCEECVJAMRqzyr7jDY+6pgACsXxwoAkQFEXtZ6U61M5murSpO GWoz7mCfqP8T/2b8zvATrIXc4GdGj1+xtskx5KndlDLfuQn429mpHNtqqhSmUot3Fkz1SV X2hUgpisGQQGswfQ5DnHVq7F+JHpweE= X-MC-Unique: p_CrsPE9MOCaqg25QrlR9g-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Jiri Denemark To: libvir-list@redhat.com Subject: [libvirt PATCH 80/80] NEWS: Add support for post-copy recovery Date: Tue, 10 May 2022 17:21:41 +0200 Message-Id: <026634ec4fea1c500c2b19da8af889c3b323d5e2.1652196064.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1652196500348100003 Content-Type: text/plain; charset="utf-8" Signed-off-by: Jiri Denemark Reviewed-by: Pavel Hrdina Reviewed-by: Peter Krempa --- NEWS.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/NEWS.rst b/NEWS.rst index 7903449f9b..bafc70ba90 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -17,6 +17,11 @@ v8.4.0 (unreleased) =20 * **New features** =20 + * qemu: Add support for post-copy recovery + + A new VIR_MIGRATE_POSTCOPY_RESUME flag (virsh migrate --postcopy-resum= e) + was introduced for fecovering from a failed post-copy migration. + * **Improvements** =20 * **Bug fixes** --=20 2.35.1