From nobody Wed May 15 15:11:36 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1705418874634587.9752169575988; Tue, 16 Jan 2024 07:27:54 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 862681D42; Tue, 16 Jan 2024 10:27:53 -0500 (EST) Received: from lists.libvirt.org.85.43.8.in-addr.arpa (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id A539A1DBE; Tue, 16 Jan 2024 10:25:18 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id DD6231D21; Tue, 16 Jan 2024 10:25:09 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 42D251D22 for ; Tue, 16 Jan 2024 10:25:09 -0500 (EST) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-571--jtyyxZbObW-1rn4O2t8PQ-1; Tue, 16 Jan 2024 10:25:07 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D1E4D833AE3 for ; Tue, 16 Jan 2024 15:25:06 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.25]) by smtp.corp.redhat.com (Postfix) with ESMTP id 42C101121306 for ; Tue, 16 Jan 2024 15:25:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: -jtyyxZbObW-1rn4O2t8PQ-1 From: Peter Krempa To: devel@lists.libvirt.org Subject: [PATCH 1/3] util: virtportallocator: Add VIR_DEBUG statements for port allocations and release Date: Tue, 16 Jan 2024 16:25:02 +0100 Message-ID: <7b65888832746533b36dcbe1e894ea46e5361305.1705418651.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.3 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: LIS5TOXMP2XDEKXLKNGMPCDAYFLIDGCX X-Message-ID-Hash: LIS5TOXMP2XDEKXLKNGMPCDAYFLIDGCX X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1705418874937100001 Add a few debug statements to be able to trace lifetime of a reserved/allocated port. Signed-off-by: Peter Krempa Reviewed-by: Andrea Bolognani --- src/util/virportallocator.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/util/virportallocator.c b/src/util/virportallocator.c index 6d6f99778e..70393d87ee 100644 --- a/src/util/virportallocator.c +++ b/src/util/virportallocator.c @@ -29,9 +29,12 @@ #include "virthread.h" #include "virerror.h" #include "virutil.h" +#include "virlog.h" #define VIR_FROM_THIS VIR_FROM_NONE +VIR_LOG_INIT("util.virportallocator"); + #define VIR_PORT_ALLOCATOR_NUM_PORTS 65536 typedef struct _virPortAllocator virPortAllocator; @@ -228,6 +231,8 @@ virPortAllocatorAcquire(const virPortAllocatorRange *ra= nge, return -1; } *port =3D i; + VIR_DEBUG("port=3D'%u'", *port); + return 0; } } @@ -247,6 +252,8 @@ virPortAllocatorRelease(unsigned short port) if (!pa) return -1; + VIR_DEBUG("port=3D'%u'", port); + if (!port) return 0; @@ -265,6 +272,8 @@ virPortAllocatorSetUsed(unsigned short port) if (!pa) return -1; + VIR_DEBUG("port=3D'%u'", port); + if (!port) return 0; --=20 2.43.0 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org From nobody Wed May 15 15:11:36 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1705418966709350.1521678615136; Tue, 16 Jan 2024 07:29:26 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 9E4D41E58; Tue, 16 Jan 2024 10:29:25 -0500 (EST) Received: from lists.libvirt.org.85.43.8.in-addr.arpa (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 8BDFA1D3B; Tue, 16 Jan 2024 10:25:26 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 76D671D0E; Tue, 16 Jan 2024 10:25:10 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id BEB551D23 for ; Tue, 16 Jan 2024 10:25:09 -0500 (EST) Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-8-l4ETvdCWNF6g8NUpmbpm9g-1; Tue, 16 Jan 2024 10:25:08 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C56DA2812FE3 for ; Tue, 16 Jan 2024 15:25:07 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.25]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3F2301121306 for ; Tue, 16 Jan 2024 15:25:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: l4ETvdCWNF6g8NUpmbpm9g-1 From: Peter Krempa To: devel@lists.libvirt.org Subject: [PATCH 2/3] qemu: migration: Properly handle reservation of manually specified NBD port Date: Tue, 16 Jan 2024 16:25:03 +0100 Message-ID: <0a9ec89b855c5b345da3852f144e0ba143f83b9b.1705418651.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.3 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: CSYNK6JILFJT6WGGQKWGZCH6E4HHWOZ5 X-Message-ID-Hash: CSYNK6JILFJT6WGGQKWGZCH6E4HHWOZ5 X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1705418967303100001 Originally the migration code didn't register the NBD disk port with the port allocator when it was manually specified. Later when commit e74d627bb3bc2684cbe3 refactored the code and started registering the old logic which was clearing 'priv->nbdPort' in case when it was manually specified was not removed. This caused following problems: - the port was not released after successful migration - the port was released even when it was not allocated on failures regarding the NBD server start - the port was not released on other failures of the migration after NBD server startup To address this we remove the assumption that 'priv->nbdPort' is used only for auto-allocated port and fill it only once the port is allocated and make the caller of qemuMigrationDstStartNBDServer responsilbe for releasing it. Fixes: e74d627bb3bc2684cbe3edc1e2f7cc745b4e1ff3 Resolves: https://issues.redhat.com/browse/RHEL-21543 Signed-off-by: Peter Krempa --- src/qemu/qemu_migration.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 25dc16a9e9..182e51f0f0 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -527,6 +527,8 @@ qemuMigrationDstPrepareStorage(virDomainObj *vm, * arguments in 'migrate' monitor command. * Error is reported here. * + * Caller is responsible for releasing 'priv->nbdPort' from the port alloc= ator. + * * Returns 0 on success, -1 otherwise. */ static int @@ -627,6 +629,9 @@ qemuMigrationDstStartNBDServer(virQEMUDriver *driver, server.port =3D port; } + + /* caller will release the port on failure */ + priv->nbdPort =3D server.port; } if (qemuDomainObjEnterMonitorAsync(vm, VIR_ASYNC_JOB_MIGRATION_IN)= < 0) @@ -643,14 +648,9 @@ qemuMigrationDstStartNBDServer(virQEMUDriver *driver, qemuDomainObjExitMonitor(vm); } - if (server.transport =3D=3D VIR_STORAGE_NET_HOST_TRANS_TCP) - priv->nbdPort =3D server.port; - ret =3D 0; cleanup: - if (ret < 0) - virPortAllocatorRelease(server.port); return ret; exit_monitor: @@ -3261,11 +3261,7 @@ qemuMigrationDstPrepareActive(virQEMUDriver *driver, 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); + virPortAllocatorRelease(priv->nbdPort); priv->nbdPort =3D 0; } goto cleanup; @@ -3425,11 +3421,7 @@ qemuMigrationDstPrepareFresh(virQEMUDriver *driver, if (autoPort) priv->migrationPort =3D port; - /* in this case port is not auto selected and we don't need to manage = it - * anymore after cookie is baked - */ - if (nbdPort !=3D 0) - priv->nbdPort =3D 0; + ret =3D 0; cleanup: --=20 2.43.0 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org From nobody Wed May 15 15:11:36 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1705419039633805.2996893380201; Tue, 16 Jan 2024 07:30:39 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 88A971D8B; Tue, 16 Jan 2024 10:30:38 -0500 (EST) Received: from lists.libvirt.org.85.43.8.in-addr.arpa (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 671F91D8A; Tue, 16 Jan 2024 10:25:36 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 15E5F1D23; Tue, 16 Jan 2024 10:25:12 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 74F921D0E for ; Tue, 16 Jan 2024 10:25:11 -0500 (EST) Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-237-Y9Td0_aFOE-R6cNSfX8yZA-1; Tue, 16 Jan 2024 10:25:09 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id EE0E83C0ED71 for ; Tue, 16 Jan 2024 15:25:08 +0000 (UTC) Received: from speedmetal.lan (unknown [10.45.242.25]) by smtp.corp.redhat.com (Postfix) with ESMTP id 278CB1121306 for ; Tue, 16 Jan 2024 15:25:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: Y9Td0_aFOE-R6cNSfX8yZA-1 From: Peter Krempa To: devel@lists.libvirt.org Subject: [PATCH 3/3] qemuMigrationDstStartNBDServer: Refactor cleanup Date: Tue, 16 Jan 2024 16:25:04 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.3 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: O2YNHAU3O2K67CYWUSTHABT2V3PLIT2K X-Message-ID-Hash: O2YNHAU3O2K67CYWUSTHABT2V3PLIT2K X-MailFrom: pkrempa@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1705419039986100001 There's nothing under the 'cleanup:' label thus the whole code can be simplified. Signed-off-by: Peter Krempa Reviewed-by: Andrea Bolognani --- src/qemu/qemu_migration.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 182e51f0f0..832cbd1c17 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -541,7 +541,6 @@ qemuMigrationDstStartNBDServer(virQEMUDriver *driver, const char *nbdURI, const char *tls_alias) { - int ret =3D -1; qemuDomainObjPrivate *priv =3D vm->privateData; size_t i; virStorageNetHostDef server =3D { @@ -610,22 +609,22 @@ qemuMigrationDstStartNBDServer(virQEMUDriver *driver, virReportError(VIR_ERR_OPERATION_UNSUPPORTED, _("Cannot migrate empty or read-only disk %1$s"= ), disk->dst); - goto cleanup; + return -1; } if (!(diskAlias =3D qemuAliasDiskDriveFromDisk(disk))) - goto cleanup; + return -1; if (!server_started && server.transport =3D=3D VIR_STORAGE_NET_HOST_TRANS_TCP) { if (server.port) { if (virPortAllocatorSetUsed(server.port) < 0) - goto cleanup; + return -1; } else { unsigned short port =3D 0; if (virPortAllocatorAcquire(driver->migrationPorts, &port)= < 0) - goto cleanup; + return -1; server.port =3D port; } @@ -635,7 +634,7 @@ qemuMigrationDstStartNBDServer(virQEMUDriver *driver, } if (qemuDomainObjEnterMonitorAsync(vm, VIR_ASYNC_JOB_MIGRATION_IN)= < 0) - goto cleanup; + return -1; if (!server_started) { if (qemuMonitorNBDServerStart(priv->mon, &server, tls_alias) <= 0) @@ -648,14 +647,11 @@ qemuMigrationDstStartNBDServer(virQEMUDriver *driver, qemuDomainObjExitMonitor(vm); } - ret =3D 0; - - cleanup: - return ret; + return 0; exit_monitor: qemuDomainObjExitMonitor(vm); - goto cleanup; + return -1; } --=20 2.43.0 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org