From nobody Fri May 3 01:47:17 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zohomail.com: domain of redhat.com designates
216.205.24.124 as permitted sender) client-ip=216.205.24.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 216.205.24.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=1598971061; cv=none;
d=zohomail.com; s=zohoarc;
b=ZiG2D9eYjyVImj0H0O3iU3TxOrfr2RnDmJr4UXLDImjAgLwGxaxVyUKtPEO2Wvnwi9lz69pJKtkrv+6bePtV6B07u5ONJ3Z/p9WrXF8tGOtgRigZvpQqOo8uHihIgKXbtrM8VyeWQ0fzEiWMJNlayqYb5rDFOQvZ+T3W0mM3ZdA=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
s=zohoarc;
t=1598971061;
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=5PLs4bOSJqXq6Iw7ApfdsVSCC102/HwYvdbpjxHQIow=;
b=QlNhcYzn9J2o+DYlLophEroXE4SL3zK6n4xhXXjHCXeBBKuxsSSKKWme2xfK2chTUAnJTLLn+r4UXiqXP54cWrgF6W/TJ5bW0an08WXD5HAWfsunhIIBxW8CHrwvjYXOjRaWeIe3NOJ97c3wqtmVA2PTuxHarS1UePuYBTuU/Uk=
ARC-Authentication-Results: i=1; mx.zohomail.com;
dkim=pass;
spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
dmarc=pass header.from= (p=none dis=none)
header.from=
Return-Path:
Received: from us-smtp-delivery-124.mimecast.com
(us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com
with SMTPS id 1598971061243712.3593417638805;
Tue, 1 Sep 2020 07:37:41 -0700 (PDT)
Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com
[209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id
us-mta-287-W2UcUQB2N-6IMvU09Ztf9g-1; Tue, 01 Sep 2020 10:37:37 -0400
Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com
[10.5.11.12])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 108981005E66;
Tue, 1 Sep 2020 14:37:32 +0000 (UTC)
Received: from colo-mx.corp.redhat.com
(colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21])
by smtp.corp.redhat.com (Postfix) with ESMTPS id E49A959;
Tue, 1 Sep 2020 14:37:31 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id B36587A2F4;
Tue, 1 Sep 2020 14:37:31 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com
[10.5.11.22])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id 081Eb9mn016570 for ;
Tue, 1 Sep 2020 10:37:09 -0400
Received: by smtp.corp.redhat.com (Postfix)
id 72CE010023A7; Tue, 1 Sep 2020 14:37:09 +0000 (UTC)
Received: from wheatley.localdomain (unknown [10.40.195.43])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 31A0D1002D52
for ; Tue, 1 Sep 2020 14:37:06 +0000 (UTC)
Received: from wheatley.redhat.com (wheatley.k8r.cz [127.0.0.1])
by wheatley.localdomain (Postfix) with ESMTP id 597687E0075
for ; Tue, 1 Sep 2020 16:37:04 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1598971060;
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=5PLs4bOSJqXq6Iw7ApfdsVSCC102/HwYvdbpjxHQIow=;
b=ciOl8Lg4jdg34dvgsmw55bRjHKKKz8Hvuq22JsT8Og73eeKP/UHEbQYbekt0q1DROO16H2
iGQwCqmmEZ7hD5alVLHZ2B+qharLlmcOxFXBnehddfkiaHEKA22ytsbQDNgtPFfH8WQjFb
REOjWLxh0G0ph2BRw8zbKMiLdGc4bdY=
X-MC-Unique: W2UcUQB2N-6IMvU09Ztf9g-1
From: Martin Kletzander
To: libvir-list@redhat.com
Subject: [PATCH v2 1/9] qemu: Use g_autofree in qemuMigrationSrcConnect
Date: Tue, 1 Sep 2020 16:36:52 +0200
Message-Id:
In-Reply-To:
References:
MIME-Version: 1.0
X-Clacks-Overhead: GNU Terry Pratchett
X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22
X-loop: libvir-list@redhat.com
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12
Authentication-Results: relay.mimecast.com;
auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com
X-Mimecast-Spam-Score: 0.001
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: quoted-printable
X-ZohoMail-DKIM: pass (identity @redhat.com)
Content-Type: text/plain; charset="utf-8"
Signed-off-by: Martin Kletzander
Reviewed-by: Jiri Denemark
---
src/qemu/qemu_migration.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 142faa2cf997..60ddfde65d46 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -3369,7 +3369,7 @@ qemuMigrationSrcConnect(virQEMUDriverPtr driver,
{
virNetSocketPtr sock;
const char *host;
- char *port =3D NULL;
+ g_autofree char *port =3D NULL;
int ret =3D -1;
=20
host =3D spec->dest.host.name;
@@ -3400,7 +3400,6 @@ qemuMigrationSrcConnect(virQEMUDriverPtr driver,
ret =3D 0;
=20
cleanup:
- VIR_FREE(port);
if (ret < 0)
VIR_FORCE_CLOSE(spec->dest.fd.qemu);
return ret;
--=20
2.28.0
From nobody Fri May 3 01:47:17 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zohomail.com: domain of redhat.com designates
205.139.110.120 as permitted sender) client-ip=205.139.110.120;
envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com;
Authentication-Results: mx.zohomail.com;
dkim=pass;
spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 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=1598971065; cv=none;
d=zohomail.com; s=zohoarc;
b=niLZ73ew6InwuE6jO2wMpbxXYjwyo5LSqQgQUrXqs0Vu1ds51G5381r+IRBFrTFm/rme/NPKmX8IIBVYcPhzQ3HhvWgSf/PFDOxxkwIVFHzrNk7mcTpM0ShHBUlpWvkaFcbITaS8RUSwquaGGpfhWG0d+hZkwlZMjWLt8++P11M=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
s=zohoarc;
t=1598971065;
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=iklfdl5AH/xUGGgg71Ak1SvK5sx/D1GfbdDUYqPt5ZY=;
b=ejRTDzcC3wOihbxUk9x75xNEvl0EB6CMDZAjIt79zhdrvMxo7eRlqsojXD7Oer3q0K/tDszRpCRkKFRnojqucC/8K9I4YJFa5slIZWR4jUvrcy/VknXFelILZyXds2kQqmUYCfnTadoUcxMMppdfhJ9NdgV3Z2K8/5K49t8z3Pc=
ARC-Authentication-Results: i=1; mx.zohomail.com;
dkim=pass;
spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.120 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
dmarc=pass header.from= (p=none dis=none)
header.from=
Return-Path:
Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com
[205.139.110.120]) by mx.zohomail.com
with SMTPS id 159897106523043.91333559833629;
Tue, 1 Sep 2020 07:37:45 -0700 (PDT)
Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com
[209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id
us-mta-530-dNgipLLrO9KU60vBCKkocQ-1; Tue, 01 Sep 2020 10:37:39 -0400
Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com
[10.5.11.13])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 59881189E604;
Tue, 1 Sep 2020 14:37:34 +0000 (UTC)
Received: from colo-mx.corp.redhat.com
(colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 3B7807EB87;
Tue, 1 Sep 2020 14:37:34 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id 085A07A317;
Tue, 1 Sep 2020 14:37:34 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com
[10.5.11.13])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id 081Eb9Hc016575 for ;
Tue, 1 Sep 2020 10:37:09 -0400
Received: by smtp.corp.redhat.com (Postfix)
id B13EE7EB8F; Tue, 1 Sep 2020 14:37:09 +0000 (UTC)
Received: from wheatley.localdomain (unknown [10.40.195.43])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 8355A7EB87
for ; Tue, 1 Sep 2020 14:37:06 +0000 (UTC)
Received: from wheatley.redhat.com (wheatley.k8r.cz [127.0.0.1])
by wheatley.localdomain (Postfix) with ESMTP id 5B7B87E0078
for ; Tue, 1 Sep 2020 16:37:04 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1598971063;
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=iklfdl5AH/xUGGgg71Ak1SvK5sx/D1GfbdDUYqPt5ZY=;
b=IDUvNCNTj6djyehu+ifyuTX4hnUeCKi7iqY4tUC0/3XhLeDrzbVk+NQA5OyETWxhIzD9fo
NI2uHwK0a5+PR3Hg01lTtWp7+DghrhogP1fv01623NGXSdETn+Srx81A7b2tKxJ6ZdC8et
Jvvis1pclOrnRztRr8gs6Mn+bu5EUEw=
X-MC-Unique: dNgipLLrO9KU60vBCKkocQ-1
From: Martin Kletzander
To: libvir-list@redhat.com
Subject: [PATCH v2 2/9] qemu: Rework qemuMigrationSrcConnect
Date: Tue, 1 Sep 2020 16:36:53 +0200
Message-Id:
<4a6df3cec0b13e512bf05dbfcb6e1da2749173da.1598970960.git.mkletzan@redhat.com>
In-Reply-To:
References:
MIME-Version: 1.0
X-Clacks-Overhead: GNU Terry Pratchett
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13
X-loop: libvir-list@redhat.com
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13
Authentication-Results: relay.mimecast.com;
auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com
X-Mimecast-Spam-Score: 0.001
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: quoted-printable
X-ZohoMail-DKIM: pass (identity @redhat.com)
Content-Type: text/plain; charset="utf-8"
Instead of saving some data from a union up front and changing an overlayed
struct before using said data, let's just set the new values after they are
decided. This will increase the readability of future commit(s).
Signed-off-by: Martin Kletzander
Reviewed-by: Jiri Denemark
---
src/qemu/qemu_migration.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 60ddfde65d46..1a3cdb71f424 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -3368,24 +3368,24 @@ qemuMigrationSrcConnect(virQEMUDriverPtr driver,
qemuMigrationSpecPtr spec)
{
virNetSocketPtr sock;
- const char *host;
g_autofree char *port =3D NULL;
+ int fd_qemu =3D -1;
int ret =3D -1;
=20
- host =3D spec->dest.host.name;
- port =3D g_strdup_printf("%d", spec->dest.host.port);
-
- spec->destType =3D MIGRATION_DEST_FD;
- spec->dest.fd.qemu =3D -1;
-
if (qemuSecuritySetSocketLabel(driver->securityManager, vm->def) < 0)
goto cleanup;
- if (virNetSocketNewConnectTCP(host, port,
+ port =3D g_strdup_printf("%d", spec->dest.host.port);
+ if (virNetSocketNewConnectTCP(spec->dest.host.name,
+ port,
AF_UNSPEC,
&sock) =3D=3D 0) {
- spec->dest.fd.qemu =3D virNetSocketDupFD(sock, true);
+ fd_qemu =3D virNetSocketDupFD(sock, true);
virObjectUnref(sock);
}
+
+ spec->destType =3D MIGRATION_DEST_FD;
+ spec->dest.fd.qemu =3D fd_qemu;
+
if (qemuSecurityClearSocketLabel(driver->securityManager, vm->def) < 0=
||
spec->dest.fd.qemu =3D=3D -1)
goto cleanup;
--=20
2.28.0
From nobody Fri May 3 01:47:17 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zohomail.com: domain of redhat.com designates
216.205.24.124 as permitted sender) client-ip=216.205.24.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 216.205.24.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=1598971056; cv=none;
d=zohomail.com; s=zohoarc;
b=lp/E+TBEC7z6j0RbEdjdMX8wd6XX+NQ7TsJDUbIxV1OPi/ICWxh2tGJJbjAHiVHke6A9uKd/tG7ObSwjjq+svslirU7L4GwnvKEiW9c39hXsU2ixt5dlMpPpDik0kk3b1OO8QXKB5UnAXqKaOAOjrhrFiyDhvtZaidEbCWYGpg4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
s=zohoarc;
t=1598971056;
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=GvdPGyqidhQncoHJxq4LqQXhTvrA9B2q85YP7oWA+Vg=;
b=Fy2CkfeAMc/9IKMCRfeaxHHsRuGghlSEyhoQcqFc+EA8dXbiKhSWtMoE1JZU2ddNI2uzzNH5SN2RhN4V8yAwhUOaGyF9iJv2KYKwbhqOdb/OHrstspaD3/YW1rjl8wdjuEM8vTC/5ObL/BCL0Dj00bd7FPjEEktAGOIK3W1yyQw=
ARC-Authentication-Results: i=1; mx.zohomail.com;
dkim=pass;
spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
dmarc=pass header.from= (p=none dis=none)
header.from=
Return-Path:
Received: from us-smtp-delivery-124.mimecast.com
(us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com
with SMTPS id 1598971056310697.388898116356;
Tue, 1 Sep 2020 07:37:36 -0700 (PDT)
Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com
[209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id
us-mta-161-KolxFQBQNdiTOT70g33eGw-1; Tue, 01 Sep 2020 10:37:33 -0400
Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com
[10.5.11.12])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3BAFE10ABDAD;
Tue, 1 Sep 2020 14:37:27 +0000 (UTC)
Received: from colo-mx.corp.redhat.com
(colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 1C9306198E;
Tue, 1 Sep 2020 14:37:27 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id D6C83181A87F;
Tue, 1 Sep 2020 14:37:26 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com
[10.5.11.11])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id 081Eb9tN016556 for ;
Tue, 1 Sep 2020 10:37:09 -0400
Received: by smtp.corp.redhat.com (Postfix)
id 4F1E47C5A0; Tue, 1 Sep 2020 14:37:09 +0000 (UTC)
Received: from wheatley.localdomain (unknown [10.40.195.43])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 0D3F17DA43
for ; Tue, 1 Sep 2020 14:37:06 +0000 (UTC)
Received: from wheatley.redhat.com (wheatley.k8r.cz [127.0.0.1])
by wheatley.localdomain (Postfix) with ESMTP id 5D4AD7E007D
for ; Tue, 1 Sep 2020 16:37:04 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1598971055;
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=GvdPGyqidhQncoHJxq4LqQXhTvrA9B2q85YP7oWA+Vg=;
b=YXkqI74ycmOEmuLsyWO7JQ1KbhZHy2192AMjah3FThOmZqsjdLhZMXHcU9bTsCdxSXELdJ
XxGYScAeYIK6cBXnYvBs/NPCfvlntrntb7egjQ/AIn+1BwD/UcxrZcgVf70MWrACpzfm63
GLqpyXLtS+0FqHAXo5Ch7bomqi96pgc=
X-MC-Unique: KolxFQBQNdiTOT70g33eGw-1
From: Martin Kletzander
To: libvir-list@redhat.com
Subject: [PATCH v2 3/9] virsh: Reuse existing variable when parsing migrate
--disks-port
Date: Tue, 1 Sep 2020 16:36:54 +0200
Message-Id:
<1e244848c499f9c9fdb252db3083c60b259de387.1598970960.git.mkletzan@redhat.com>
In-Reply-To:
References:
MIME-Version: 1.0
X-Clacks-Overhead: GNU Terry Pratchett
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11
X-loop: libvir-list@redhat.com
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12
Authentication-Results: relay.mimecast.com;
auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com
X-Mimecast-Spam-Score: 0.001
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: quoted-printable
X-ZohoMail-DKIM: pass (identity @redhat.com)
Content-Type: text/plain; charset="utf-8"
Signed-off-by: Martin Kletzander
Reviewed-by: Jiri Denemark
---
tools/virsh-domain.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 36581d2c31d2..8a4a0d172dc9 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -10708,7 +10708,6 @@ doMigrate(void *opaque)
virDomainPtr dom =3D NULL;
const char *desturi =3D NULL;
const char *opt =3D NULL;
- int disksPort =3D 0;
unsigned int flags =3D 0;
virshCtrlData *data =3D opaque;
vshControl *ctl =3D data->ctl;
@@ -10756,11 +10755,11 @@ doMigrate(void *opaque)
VIR_MIGRATE_PARAM_LISTEN_ADDRESS, opt) < 0)
goto save_error;
=20
- if (vshCommandOptInt(ctl, cmd, "disks-port", &disksPort) < 0)
+ if (vshCommandOptInt(ctl, cmd, "disks-port", &intOpt) < 0)
goto out;
- if (disksPort &&
+ if (intOpt &&
virTypedParamsAddInt(¶ms, &nparams, &maxparams,
- VIR_MIGRATE_PARAM_DISKS_PORT, disksPort) < 0)
+ VIR_MIGRATE_PARAM_DISKS_PORT, intOpt) < 0)
goto save_error;
=20
if (vshCommandOptStringReq(ctl, cmd, "dname", &opt) < 0)
--=20
2.28.0
From nobody Fri May 3 01:47:17 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zohomail.com: domain of redhat.com designates
216.205.24.124 as permitted sender) client-ip=216.205.24.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 216.205.24.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=1598971058; cv=none;
d=zohomail.com; s=zohoarc;
b=BbRP55kFFRxS9CwyCWKuGPiJ7CVRlIWW9jUWCOSeGusJiwWQiqKDI4RIxUhYjR11gLepnHsKGC3sO822zfTyd2m7XTRRAAlBxqkoG+etBZVR/JIenU3ZvjsgToACP1TC4e64IBk4mX9VrLpluJPR+PidDhbEri8kxPF9qwFGFhs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
s=zohoarc;
t=1598971058;
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=ZT4yys1uXf1ZNpTHGrBV0DO7GCw/C5v0bjhUx6+XZ00=;
b=nKzEzsuJHe1HKE9FrD1kIyfkSy94hGJNpQJw4cMSJLCiHN7OeEF0v5G1kfS4CPjNTgsTT05Cqh6hseo/L/zpk1MaHwelilFltaDlrPn/nAdffN33dKXZyhrereetVO+CJakmZXhmakjTDnUgc3HZ1xP0fgpmOlxEp6TLQgT/Gx4=
ARC-Authentication-Results: i=1; mx.zohomail.com;
dkim=pass;
spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
dmarc=pass header.from= (p=none dis=none)
header.from=
Return-Path:
Received: from us-smtp-delivery-124.mimecast.com
(us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com
with SMTPS id 1598971058898363.4865849401707;
Tue, 1 Sep 2020 07:37:38 -0700 (PDT)
Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com
[209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id
us-mta-3-PvNZK_4vPmu86eSwCpBGoQ-1; Tue, 01 Sep 2020 10:37:35 -0400
Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com
[10.5.11.22])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A866C10ABDB1;
Tue, 1 Sep 2020 14:37:29 +0000 (UTC)
Received: from colo-mx.corp.redhat.com
(colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 8379610023A7;
Tue, 1 Sep 2020 14:37:29 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id 54F687A2E7;
Tue, 1 Sep 2020 14:37:29 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com
[10.5.11.16])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id 081Eb9w0016557 for ;
Tue, 1 Sep 2020 10:37:09 -0400
Received: by smtp.corp.redhat.com (Postfix)
id 4E57F5C1C4; Tue, 1 Sep 2020 14:37:09 +0000 (UTC)
Received: from wheatley.localdomain (unknown [10.40.195.43])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 1140A5C1BB
for ; Tue, 1 Sep 2020 14:37:06 +0000 (UTC)
Received: from wheatley.redhat.com (wheatley.k8r.cz [127.0.0.1])
by wheatley.localdomain (Postfix) with ESMTP id 699077E0080
for ; Tue, 1 Sep 2020 16:37:04 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1598971058;
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=ZT4yys1uXf1ZNpTHGrBV0DO7GCw/C5v0bjhUx6+XZ00=;
b=Uhqbv2Vl6rqwtvQvJ33hQD+PiIbip/bNApIPpyJeXGhhDBmUkgyDEx0tLLwKAUPsdqv6zW
CXdXxPV4Z8axBG6ocMbi0FCpg5ze3ffYrsnF8KfK2z4XwMaVroGfds06ywR9gnO7KUsop7
BYP0ve2LwJqTpjX0DPCe1PcxrK4DppE=
X-MC-Unique: PvNZK_4vPmu86eSwCpBGoQ-1
From: Martin Kletzander
To: libvir-list@redhat.com
Subject: [PATCH v2 4/9] qemu: Rework starting NBD server for migration
Date: Tue, 1 Sep 2020 16:36:55 +0200
Message-Id:
<34c27488366dee548030b14dfca1950da917786f.1598970960.git.mkletzan@redhat.com>
In-Reply-To:
References:
MIME-Version: 1.0
X-Clacks-Overhead: GNU Terry Pratchett
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16
X-loop: libvir-list@redhat.com
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22
Authentication-Results: relay.mimecast.com;
auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com
X-Mimecast-Spam-Score: 0.001
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: quoted-printable
X-ZohoMail-DKIM: pass (identity @redhat.com)
Content-Type: text/plain; charset="utf-8"
Clean up the semantics by using one extra self-describing variable.
This also fixes the port allocation when the port is specified.
Signed-off-by: Martin Kletzander
Reviewed-by: Jiri Denemark
---
src/qemu/qemu_migration.c | 37 +++++++++++++++++++++++--------------
1 file changed, 23 insertions(+), 14 deletions(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 1a3cdb71f424..b887185d012d 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -383,12 +383,13 @@ qemuMigrationDstStartNBDServer(virQEMUDriverPtr drive=
r,
{
int ret =3D -1;
qemuDomainObjPrivatePtr priv =3D vm->privateData;
- unsigned short port =3D 0;
size_t i;
virStorageNetHostDef server =3D {
.name =3D (char *)listenAddr, /* cast away const */
.transport =3D VIR_STORAGE_NET_HOST_TRANS_TCP,
+ .port =3D nbdPort,
};
+ bool server_started =3D false;
=20
if (nbdPort < 0 || nbdPort > USHRT_MAX) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
@@ -424,20 +425,27 @@ qemuMigrationDstStartNBDServer(virQEMUDriverPtr drive=
r,
devicename =3D diskAlias;
}
=20
+ if (!server_started) {
+ if (server.port) {
+ if (virPortAllocatorSetUsed(server.port) < 0)
+ goto cleanup;
+ } else {
+ unsigned short port =3D 0;
+
+ if (virPortAllocatorAcquire(driver->migrationPorts, &port)=
< 0)
+ goto cleanup;
+
+ server.port =3D port;
+ }
+ }
+
if (qemuDomainObjEnterMonitorAsync(driver, vm,
QEMU_ASYNC_JOB_MIGRATION_IN) < =
0)
goto cleanup;
=20
- if (port =3D=3D 0) {
- if (nbdPort)
- port =3D nbdPort;
- else if (virPortAllocatorAcquire(driver->migrationPorts, &port=
) < 0)
- goto exit_monitor;
-
- server.port =3D port;
- if (qemuMonitorNBDServerStart(priv->mon, &server, tls_alias) <=
0)
- goto exit_monitor;
- }
+ if (!server_started &&
+ qemuMonitorNBDServerStart(priv->mon, &server, tls_alias) < 0)
+ goto exit_monitor;
=20
if (qemuMonitorNBDServerAdd(priv->mon, devicename, exportname, tru=
e, NULL) < 0)
goto exit_monitor;
@@ -445,12 +453,13 @@ qemuMigrationDstStartNBDServer(virQEMUDriverPtr drive=
r,
goto cleanup;
}
=20
- priv->nbdPort =3D port;
+ priv->nbdPort =3D server.port;
+
ret =3D 0;
=20
cleanup:
- if (ret < 0 && nbdPort =3D=3D 0)
- virPortAllocatorRelease(port);
+ if (ret < 0)
+ virPortAllocatorRelease(server.port);
return ret;
=20
exit_monitor:
--=20
2.28.0
From nobody Fri May 3 01:47:17 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zohomail.com: domain of redhat.com designates
216.205.24.124 as permitted sender) client-ip=216.205.24.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 216.205.24.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=1598971076; cv=none;
d=zohomail.com; s=zohoarc;
b=PuNH4MTMk6t8bjTjjRKhigedl0ef256f0VO+1av2mhEk1QCp1nk3d7OF2y5PM/tSuQ9CZB1OTUzSfBjTYEebLQU/KzJ8BqFDRuH9OUb96vrhT4WlaZLgjRsmjOm67RJ7RsgHcg0TmcQsv0tBDWxjkwHNfGFn5Tjot9+jIH6bMGE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
s=zohoarc;
t=1598971076;
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=q5kVkpfVbfTdJPkOw4wQgcYmP4vFlV7zp0a+ce++HR8=;
b=AI/FqSrm0ApAe5Zvqq2rNJnFJcBgpZaYOdeIecIT+iz32/qlwf3qyGUO0kcQXx/nDbGcVqfoFAqF/Iakb6lFitaDZLOVbm3CpY/MQX9AcutH0MQ3SxOKPLf2+R6ZYumTBS938NhpR0WJjNCVpw0KOT6peK58BRAVuO8s78rOrZg=
ARC-Authentication-Results: i=1; mx.zohomail.com;
dkim=pass;
spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
dmarc=pass header.from= (p=none dis=none)
header.from=
Return-Path:
Received: from us-smtp-delivery-124.mimecast.com
(us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com
with SMTPS id 1598971076107919.5449054862707;
Tue, 1 Sep 2020 07:37:56 -0700 (PDT)
Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com
[209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id
us-mta-455-YOsY-dydOTq4ywYzLTk88g-1; Tue, 01 Sep 2020 10:37:52 -0400
Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com
[10.5.11.16])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B9ACF1DDF9;
Tue, 1 Sep 2020 14:37:44 +0000 (UTC)
Received: from colo-mx.corp.redhat.com
(colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 99DE25C1A3;
Tue, 1 Sep 2020 14:37:44 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id 66EFF1826D2A;
Tue, 1 Sep 2020 14:37:44 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com
[10.5.11.23])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id 081EbEUh016648 for ;
Tue, 1 Sep 2020 10:37:14 -0400
Received: by smtp.corp.redhat.com (Postfix)
id 3BCA219C59; Tue, 1 Sep 2020 14:37:14 +0000 (UTC)
Received: from wheatley.localdomain (unknown [10.40.195.43])
by smtp.corp.redhat.com (Postfix) with ESMTPS id D89EE19C4F
for ; Tue, 1 Sep 2020 14:37:11 +0000 (UTC)
Received: from wheatley.redhat.com (wheatley.k8r.cz [127.0.0.1])
by wheatley.localdomain (Postfix) with ESMTP id 6BBF97E0082
for ; Tue, 1 Sep 2020 16:37:04 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1598971074;
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=q5kVkpfVbfTdJPkOw4wQgcYmP4vFlV7zp0a+ce++HR8=;
b=dnpgw1kC3fBxxQ225DH7vqP/8Pb6wiyvXPWl8MJVL9UQNdkjtCkIMMjYfZyJjzg29UE9Rc
Gsu9z12nJzBJq0hfJ0tNgnLI6J6ys+yyO8Vf87SBelj6el+pxsEqlN6fAE7uIBgJxtSOV0
SMmL701zfZ57lKsIzJGZgiv9uKcCNH0=
X-MC-Unique: YOsY-dydOTq4ywYzLTk88g-1
From: Martin Kletzander
To: libvir-list@redhat.com
Subject: [PATCH v2 5/9] tests: Add simple test for
virDomainMigrateCheckNotLocal
Date: Tue, 1 Sep 2020 16:36:56 +0200
Message-Id:
<6d1374d5394f734487319050b0105be7f7b5ad0d.1598970960.git.mkletzan@redhat.com>
In-Reply-To:
References:
MIME-Version: 1.0
X-Clacks-Overhead: GNU Terry Pratchett
X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23
X-loop: libvir-list@redhat.com
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16
Authentication-Results: relay.mimecast.com;
auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com
X-Mimecast-Spam-Score: 0.001
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: quoted-printable
X-ZohoMail-DKIM: pass (identity @redhat.com)
Content-Type: text/plain; charset="utf-8"
For this we need to make the function accessible (at least privately). The
behaviour will change in following patches and the test helps explaining the
change.
Signed-off-by: Martin Kletzander
Reviewed-by: Jiri Denemark
---
scripts/apibuild.py | 1 +
src/libvirt-domain.c | 3 +-
src/libvirt_internal.h | 2 +
src/libvirt_private.syms | 1 +
tests/meson.build | 1 +
tests/virmigtest.c | 91 ++++++++++++++++++++++++++++++++++++++++
6 files changed, 97 insertions(+), 2 deletions(-)
create mode 100644 tests/virmigtest.c
diff --git a/scripts/apibuild.py b/scripts/apibuild.py
index 58ae76d29cfc..b94c0f6c09dd 100755
--- a/scripts/apibuild.py
+++ b/scripts/apibuild.py
@@ -81,6 +81,7 @@ ignored_words =3D {
=20
ignored_functions =3D {
"virConnectSupportsFeature": "private function for remote access",
+ "virDomainMigrateCheckNotLocal": "private function for migration",
"virDomainMigrateFinish": "private function for migration",
"virDomainMigrateFinish2": "private function for migration",
"virDomainMigratePerform": "private function for migration",
diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
index ad60a92da879..da5a21e4c4d4 100644
--- a/src/libvirt-domain.c
+++ b/src/libvirt-domain.c
@@ -3269,8 +3269,7 @@ virDomainMigrateVersion3Params(virDomainPtr domain,
params, nparams, true, flags);
}
=20
-
-static int
+int
virDomainMigrateCheckNotLocal(const char *dconnuri)
{
g_autoptr(virURI) tempuri =3D NULL;
diff --git a/src/libvirt_internal.h b/src/libvirt_internal.h
index 72c61274a74e..cb239b3c1c44 100644
--- a/src/libvirt_internal.h
+++ b/src/libvirt_internal.h
@@ -129,6 +129,8 @@ typedef enum {
=20
int virConnectSupportsFeature(virConnectPtr conn, int feature);
=20
+int virDomainMigrateCheckNotLocal(const char *dconnuri);
+
int virDomainMigratePrepare (virConnectPtr dconn,
char **cookie,
int *cookielen,
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index f950a681792c..2f6d67cebe07 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1481,6 +1481,7 @@ virHostdevUpdateActiveUSBDevices;
virConnectSupportsFeature;
virDomainMigrateBegin3;
virDomainMigrateBegin3Params;
+virDomainMigrateCheckNotLocal;
virDomainMigrateConfirm3;
virDomainMigrateConfirm3Params;
virDomainMigrateFinish;
diff --git a/tests/meson.build b/tests/meson.build
index b5f6e2267aaf..49bcf5eb8a8d 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -331,6 +331,7 @@ tests +=3D [
{ 'name': 'virtypedparamtest' },
{ 'name': 'viruritest' },
{ 'name': 'vshtabletest', 'link_with': [ libvirt_shell_lib ] },
+ { 'name': 'virmigtest' },
]
=20
if host_machine.system() =3D=3D 'linux'
diff --git a/tests/virmigtest.c b/tests/virmigtest.c
new file mode 100644
index 000000000000..df8d51bab94b
--- /dev/null
+++ b/tests/virmigtest.c
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2020 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * .
+ */
+
+#include
+
+#include "libvirt_internal.h"
+
+#include "testutils.h"
+#include "virlog.h"
+#include "viruri.h"
+
+#define VIR_FROM_THIS VIR_FROM_RPC
+
+VIR_LOG_INIT("tests.migtest");
+
+struct migLocalData {
+ const char *uri;
+ bool fail;
+};
+
+
+static int
+testMigNotLocal(const void *args)
+{
+ int ret =3D -1;
+ const struct migLocalData *data =3D args;
+
+ ret =3D virDomainMigrateCheckNotLocal(data->uri);
+
+ if (ret =3D=3D -1) {
+ if (data->fail) {
+ virResetLastError();
+ return 0;
+ }
+ return -1;
+ }
+
+ if (data->fail) {
+ VIR_TEST_DEBUG("passed instead of expected failure");
+ return -1;
+ }
+
+ return ret;
+}
+
+
+static int
+mymain(void)
+{
+ int ret =3D 0;
+
+#define TEST_FULL(uri, fail) \
+ do { \
+ const struct migLocalData data =3D { \
+ uri, fail \
+ }; \
+ if (virTestRun("Test URI " # uri, testMigNotLocal, &data) < 0) \
+ ret =3D -1; \
+ } while (0)
+
+#define TEST(uri) TEST_FULL(uri, false)
+#define TEST_FAIL(uri) TEST_FULL(uri, true)
+
+ TEST_FAIL("qemu:///system");
+
+ TEST_FAIL("//localhost");
+ TEST_FAIL("tcp://localhost.localdomain/");
+
+ TEST("scheme://some.cryptorandom.fqdn.tld");
+
+ TEST_FAIL("hehe+unix:///?socket=3D/path/to/some-sock");
+
+ return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE;
+}
+
+VIR_TEST_MAIN(mymain)
--=20
2.28.0
From nobody Fri May 3 01:47:17 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zohomail.com: domain of redhat.com designates
63.128.21.124 as permitted sender) client-ip=63.128.21.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 63.128.21.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=1598971093; cv=none;
d=zohomail.com; s=zohoarc;
b=etFKmd9mq8Fte0bkIAgLLuBb5P2C8AxRUyXBzW6VdLz8/aNcdB93jtXvN8aE5gpnCBPhiq3Yj/HzTFRf6AJpjJL8O0Cce+eyJnytUW/NbcaGPRBBLyqPYL5fvrl58JcanHoyWrRQxkqXDpH+oSv4bwEzFcIOO0OwDVL8KYSsGc0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
s=zohoarc;
t=1598971093;
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=zuC5lJhtkG/E6oN1mEN74rrkSOgCDHnPpfqnHuFMAEo=;
b=avFA8tuhjY9GkZRTbnjkCVvHHkqPpE1dVVf7IZAm5n6JWWYznKRw7XPX/tPOFn17GgkIauz511CzMQX6FA7kQwoXh7JmmWeLgraNVQUrPcBEil7AfLdws+3P2vpXky5KufRHVSxu1r9Uy2eiFgbhpBz4LWMFvzo0Yf1/+ybbc18=
ARC-Authentication-Results: i=1; mx.zohomail.com;
dkim=pass;
spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.124 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
dmarc=pass header.from= (p=none dis=none)
header.from=
Return-Path:
Received: from us-smtp-delivery-124.mimecast.com
(us-smtp-delivery-124.mimecast.com [63.128.21.124]) by mx.zohomail.com
with SMTPS id 1598971093168701.7925761991249;
Tue, 1 Sep 2020 07:38:13 -0700 (PDT)
Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com
[209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id
us-mta-521-0X8LvPWmOQCJFuWE_FZjYg-1; Tue, 01 Sep 2020 10:37:49 -0400
Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com
[10.5.11.14])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 12D131DDF5;
Tue, 1 Sep 2020 14:37:42 +0000 (UTC)
Received: from colo-mx.corp.redhat.com
(colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21])
by smtp.corp.redhat.com (Postfix) with ESMTPS id E51EC5D9CC;
Tue, 1 Sep 2020 14:37:41 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id B54277A31E;
Tue, 1 Sep 2020 14:37:41 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com
[10.5.11.13])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id 081EbCnh016619 for ;
Tue, 1 Sep 2020 10:37:12 -0400
Received: by smtp.corp.redhat.com (Postfix)
id 4F0EB7EB8F; Tue, 1 Sep 2020 14:37:12 +0000 (UTC)
Received: from wheatley.localdomain (unknown [10.40.195.43])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 3570B7EB87
for ; Tue, 1 Sep 2020 14:37:11 +0000 (UTC)
Received: from wheatley.redhat.com (wheatley.k8r.cz [127.0.0.1])
by wheatley.localdomain (Postfix) with ESMTP id 7AF347E0084
for ; Tue, 1 Sep 2020 16:37:04 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1598971092;
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=zuC5lJhtkG/E6oN1mEN74rrkSOgCDHnPpfqnHuFMAEo=;
b=DcCYhX3QUZlMGUU7PcqrhNSnHCGJUPY01QW0uQQjo3PjQolqtKk09vmM0SYua4xa/SolNo
Dc6CWskuiG3blXZIdPhfvJvrHHeqaB40iKzw3/RIs8k4BMCyK6XBhp2QfAGqOaekGphDau
V1WuCqkLlz3LecYYtKPfnP4SAJQb+Vk=
X-MC-Unique: 0X8LvPWmOQCJFuWE_FZjYg-1
From: Martin Kletzander
To: libvir-list@redhat.com
Subject: [PATCH v2 6/9] qemu: Allow NBD migration over UNIX socket
Date: Tue, 1 Sep 2020 16:36:57 +0200
Message-Id:
In-Reply-To:
References:
MIME-Version: 1.0
X-Clacks-Overhead: GNU Terry Pratchett
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13
X-loop: libvir-list@redhat.com
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14
Authentication-Results: relay.mimecast.com;
auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com
X-Mimecast-Spam-Score: 0.001
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: quoted-printable
X-ZohoMail-DKIM: pass (identity @redhat.com)
Content-Type: text/plain; charset="utf-8"
Adds new typed param for migration and uses this as a UNIX socket path that
should be used for the NBD part of migration. And also adds virsh support.
Partially resolves: https://bugzilla.redhat.com/1638889
Signed-off-by: Martin Kletzander
Reviewed-by: Jiri Denemark
---
docs/manpages/virsh.rst | 11 ++
include/libvirt/libvirt-domain.h | 13 +++
src/qemu/qemu_driver.c | 33 +++++-
src/qemu/qemu_migration.c | 170 ++++++++++++++++++++++++-------
src/qemu/qemu_migration.h | 3 +
src/qemu/qemu_migration_cookie.c | 3 +-
tools/virsh-domain.c | 12 +++
7 files changed, 205 insertions(+), 40 deletions(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index 8e2fb7039046..12357ea4ee86 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -3113,6 +3113,7 @@ migrate
[--postcopy-bandwidth bandwidth]
[--parallel [--parallel-connections connections]]
[--bandwidth bandwidth] [--tls-destination hostname]
+ [--disks-socket socket-path]
=20
Migrate domain to another host. Add *--live* for live migration; <--p2p>
for peer-2-peer migration; *--direct* for direct migration; or *--tunnelle=
d*
@@ -3292,6 +3293,16 @@ error if this parameter is used.
Optional *disks-port* sets the port that hypervisor on destination side sh=
ould
bind to for incoming disks traffic. Currently it is supported only by QEMU.
=20
+Optional *disks-uri* can also be specified (mutually exclusive with
+*disks-port*) to specify what the remote hypervisor should bind/connect to=
when
+migrating disks. This can be *tcp://address:port* to specify a listen add=
ress
+(which overrides *--listen-address* for the disk migration) and a port or
+*unix:///path/to/socket* in case you need the disk migration to happen ove=
r a
+UNIX socket with that specified path. In this case you need to make sure =
the
+same socket path is accessible to both source and destination hypervisors =
and
+connecting to the socket on the source (after hypervisor creates it on the
+destination) will actually connect to the destination.
+
=20
migrate-compcache
-----------------
diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom=
ain.h
index 8b9d9c110c19..77f9116675af 100644
--- a/include/libvirt/libvirt-domain.h
+++ b/include/libvirt/libvirt-domain.h
@@ -981,6 +981,19 @@ typedef enum {
*/
# define VIR_MIGRATE_PARAM_DISKS_PORT "disks_port"
=20
+/**
+ * VIR_MIGRATE_PARAM_DISKS_URI:
+ *
+ * virDomainMigrate* params field: URI used for incoming disks migration. =
Type
+ * is VIR_TYPED_PARAM_STRING. Only schemes "tcp" and "unix" are accepted. =
TCP
+ * URI can currently only provide a server and port to listen on (and conn=
ect
+ * to), UNIX URI may only provide a path component for a UNIX socket. This=
is
+ * currently only supported by the QEMU driver. UNIX URI is only usable i=
f the
+ * management application makes sure that socket created with this name on=
the
+ * destination will be reachable from the source under the same exact path.
+ */
+# define VIR_MIGRATE_PARAM_DISKS_URI "disks_uri"
+
/**
* VIR_MIGRATE_PARAM_COMPRESSION:
*
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 3636716ceea1..08b6b853de47 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -11233,7 +11233,7 @@ qemuDomainMigratePrepare2(virConnectPtr dconn,
ret =3D qemuMigrationDstPrepareDirect(driver, dconn,
NULL, 0, NULL, NULL, /* No cookies=
*/
uri_in, uri_out,
- &def, origname, NULL, 0, NULL, 0,
+ &def, origname, NULL, 0, NULL, 0, =
NULL,
migParams, flags);
=20
cleanup:
@@ -11289,6 +11289,7 @@ qemuDomainMigratePerform(virDomainPtr dom,
*/
ret =3D qemuMigrationSrcPerform(driver, dom->conn, vm, NULL,
NULL, dconnuri, uri, NULL, NULL, 0, NULL=
, 0,
+ NULL,
migParams, cookie, cookielen,
NULL, NULL, /* No output cookies in v2 */
flags, dname, resource, false);
@@ -11459,7 +11460,7 @@ qemuDomainMigratePrepare3(virConnectPtr dconn,
cookieout, cookieoutlen,
uri_in, uri_out,
&def, origname, NULL, 0, NULL, 0,
- migParams, flags);
+ NULL, migParams, flags);
}
=20
static int
@@ -11485,6 +11486,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn,
g_autofree const char **migrate_disks =3D NULL;
g_autofree char *origname =3D NULL;
g_autoptr(qemuMigrationParams) migParams =3D NULL;
+ const char *nbdSocketPath =3D NULL;
=20
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
if (virTypedParamsValidate(params, nparams, QEMU_MIGRATION_PARAMETERS)=
< 0)
@@ -11502,6 +11504,9 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn,
virTypedParamsGetString(params, nparams,
VIR_MIGRATE_PARAM_LISTEN_ADDRESS,
&listenAddress) < 0 ||
+ virTypedParamsGetString(params, nparams,
+ VIR_MIGRATE_PARAM_DISKS_URI,
+ &nbdSocketPath) < 0 ||
virTypedParamsGetInt(params, nparams,
VIR_MIGRATE_PARAM_DISKS_PORT,
&nbdPort) < 0)
@@ -11518,6 +11523,13 @@ qemuDomainMigratePrepare3Params(virConnectPtr dcon=
n,
QEMU_MIGRATION_DESTINAT=
ION)))
return -1;
=20
+ if (nbdSocketPath && nbdPort) {
+ virReportError(VIR_ERR_INVALID_ARG, "%s",
+ _("Both port and socket requested for disk migratio=
n "
+ "while being mutually exclusive"));
+ return -1;
+ }
+
if (flags & VIR_MIGRATE_TUNNELLED) {
/* this is a logical error; we never should have gotten here with
* VIR_MIGRATE_TUNNELLED set
@@ -11540,7 +11552,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn,
uri_in, uri_out,
&def, origname, listenAddress,
nmigrate_disks, migrate_disks, nb=
dPort,
- migParams, flags);
+ nbdSocketPath, migParams, flags);
}
=20
=20
@@ -11682,7 +11694,7 @@ qemuDomainMigratePerform3(virDomainPtr dom,
=20
ret =3D qemuMigrationSrcPerform(driver, dom->conn, vm, xmlin, NULL,
dconnuri, uri, NULL, NULL, 0, NULL, 0,
- migParams,
+ NULL, migParams,
cookiein, cookieinlen,
cookieout, cookieoutlen,
flags, dname, resource, true);
@@ -11716,6 +11728,7 @@ qemuDomainMigratePerform3Params(virDomainPtr dom,
unsigned long long bandwidth =3D 0;
int nbdPort =3D 0;
g_autoptr(qemuMigrationParams) migParams =3D NULL;
+ const char *nbdSocketPath =3D NULL;
int ret =3D -1;
=20
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
@@ -11743,11 +11756,21 @@ qemuDomainMigratePerform3Params(virDomainPtr dom,
virTypedParamsGetInt(params, nparams,
VIR_MIGRATE_PARAM_DISKS_PORT,
&nbdPort) < 0 ||
+ virTypedParamsGetString(params, nparams,
+ VIR_MIGRATE_PARAM_DISKS_URI,
+ &nbdSocketPath) < 0 ||
virTypedParamsGetString(params, nparams,
VIR_MIGRATE_PARAM_PERSIST_XML,
&persist_xml) < 0)
goto cleanup;
=20
+ if (nbdSocketPath && nbdPort) {
+ virReportError(VIR_ERR_INVALID_ARG, "%s",
+ _("Both port and socket requested for disk migratio=
n "
+ "while being mutually exclusive"));
+ goto cleanup;
+ }
+
nmigrate_disks =3D virTypedParamsGetStringList(params, nparams,
VIR_MIGRATE_PARAM_MIGRATE=
_DISKS,
&migrate_disks);
@@ -11768,7 +11791,7 @@ qemuDomainMigratePerform3Params(virDomainPtr dom,
ret =3D qemuMigrationSrcPerform(driver, dom->conn, vm, dom_xml, persis=
t_xml,
dconnuri, uri, graphicsuri, listenAddres=
s,
nmigrate_disks, migrate_disks, nbdPort,
- migParams,
+ nbdSocketPath, migParams,
cookiein, cookieinlen, cookieout, cookie=
outlen,
flags, dname, bandwidth, true);
cleanup:
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index b887185d012d..7277f2f458a2 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -379,6 +379,7 @@ qemuMigrationDstStartNBDServer(virQEMUDriverPtr driver,
size_t nmigrate_disks,
const char **migrate_disks,
int nbdPort,
+ const char *nbdURI,
const char *tls_alias)
{
int ret =3D -1;
@@ -390,8 +391,44 @@ qemuMigrationDstStartNBDServer(virQEMUDriverPtr driver,
.port =3D nbdPort,
};
bool server_started =3D false;
+ g_autoptr(virURI) uri =3D NULL;
+
+ /* Prefer nbdURI */
+ if (nbdURI) {
+ uri =3D virURIParse(nbdURI);
=20
- if (nbdPort < 0 || nbdPort > USHRT_MAX) {
+ if (!uri)
+ return -1;
+
+ if (STREQ(uri->scheme, "tcp")) {
+ server.transport =3D VIR_STORAGE_NET_HOST_TRANS_TCP;
+ if (!uri->server || STREQ(uri->server, "")) {
+ /* Since tcp://:/ is parsed as server =3D NULL and p=
ort =3D 0
+ * we should rather error out instead of auto-allocating a=
port
+ * as that would be the exact opposite of what was request=
ed. */
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("URI with tcp scheme did not provide a se=
rver part: %s"),
+ nbdURI);
+ return -1;
+ }
+ server.name =3D (char *)uri->server;
+ if (uri->port)
+ server.port =3D uri->port;
+ } else if (STREQ(uri->scheme, "unix")) {
+ if (!uri->path) {
+ virReportError(VIR_ERR_INVALID_ARG, "%s",
+ _("UNIX disks URI does not include path"));
+ return -1;
+ }
+ server.transport =3D VIR_STORAGE_NET_HOST_TRANS_UNIX;
+ server.socket =3D (char *)uri->path;
+ } else {
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("Unsupported scheme in disks URI: %s"),
+ uri->scheme);
+ return -1;
+ }
+ } else if (nbdPort < 0 || nbdPort > USHRT_MAX) {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("nbd port must be in range 0-65535"));
return -1;
@@ -425,7 +462,8 @@ qemuMigrationDstStartNBDServer(virQEMUDriverPtr driver,
devicename =3D diskAlias;
}
=20
- if (!server_started) {
+ if (!server_started &&
+ server.transport =3D=3D VIR_STORAGE_NET_HOST_TRANS_TCP) {
if (server.port) {
if (virPortAllocatorSetUsed(server.port) < 0)
goto cleanup;
@@ -453,7 +491,8 @@ qemuMigrationDstStartNBDServer(virQEMUDriverPtr driver,
goto cleanup;
}
=20
- priv->nbdPort =3D server.port;
+ if (server.transport =3D=3D VIR_STORAGE_NET_HOST_TRANS_TCP)
+ priv->nbdPort =3D server.port;
=20
ret =3D 0;
=20
@@ -793,6 +832,7 @@ static virStorageSourcePtr
qemuMigrationSrcNBDStorageCopyBlockdevPrepareSource(virDomainDiskDefPtr di=
sk,
const char *host,
int port,
+ const char *socket,
const char *tlsAlias)
{
g_autoptr(virStorageSource) copysrc =3D NULL;
@@ -813,9 +853,14 @@ qemuMigrationSrcNBDStorageCopyBlockdevPrepareSource(vi=
rDomainDiskDefPtr disk,
copysrc->hosts =3D g_new0(virStorageNetHostDef, 1);
=20
copysrc->nhosts =3D 1;
- copysrc->hosts->transport =3D VIR_STORAGE_NET_HOST_TRANS_TCP;
- copysrc->hosts->port =3D port;
- copysrc->hosts->name =3D g_strdup(host);
+ if (socket) {
+ copysrc->hosts->transport =3D VIR_STORAGE_NET_HOST_TRANS_UNIX;
+ copysrc->hosts->socket =3D g_strdup(socket);
+ } else {
+ copysrc->hosts->transport =3D VIR_STORAGE_NET_HOST_TRANS_TCP;
+ copysrc->hosts->port =3D port;
+ copysrc->hosts->name =3D g_strdup(host);
+ }
=20
copysrc->tlsAlias =3D g_strdup(tlsAlias);
=20
@@ -835,6 +880,7 @@ qemuMigrationSrcNBDStorageCopyBlockdev(virQEMUDriverPtr=
driver,
bool persistjob,
const char *host,
int port,
+ const char *socket,
unsigned long long mirror_speed,
unsigned int mirror_shallow,
const char *tlsAlias)
@@ -846,7 +892,7 @@ qemuMigrationSrcNBDStorageCopyBlockdev(virQEMUDriverPtr=
driver,
=20
VIR_DEBUG("starting blockdev mirror for disk=3D%s to host=3D%s", disk-=
>dst, host);
=20
- if (!(copysrc =3D qemuMigrationSrcNBDStorageCopyBlockdevPrepareSource(=
disk, host, port, tlsAlias)))
+ if (!(copysrc =3D qemuMigrationSrcNBDStorageCopyBlockdevPrepareSource(=
disk, host, port, socket, tlsAlias)))
return -1;
=20
/* Migration via blockdev-mirror was supported sooner than the auto-re=
ad-only
@@ -885,13 +931,17 @@ qemuMigrationSrcNBDStorageCopyDriveMirror(virQEMUDriv=
erPtr driver,
const char *diskAlias,
const char *host,
int port,
+ const char *socket,
unsigned long long mirror_speed,
bool mirror_shallow)
{
g_autofree char *nbd_dest =3D NULL;
int mon_ret;
=20
- if (strchr(host, ':')) {
+ if (socket) {
+ nbd_dest =3D g_strdup_printf("nbd+unix:///%s?socket=3D%s",
+ diskAlias, socket);
+ } else if (strchr(host, ':')) {
nbd_dest =3D g_strdup_printf("nbd:[%s]:%d:exportname=3D%s", host, =
port,
diskAlias);
} else {
@@ -920,6 +970,7 @@ qemuMigrationSrcNBDStorageCopyOne(virQEMUDriverPtr driv=
er,
virDomainDiskDefPtr disk,
const char *host,
int port,
+ const char *socket,
unsigned long long mirror_speed,
bool mirror_shallow,
const char *tlsAlias,
@@ -958,13 +1009,13 @@ qemuMigrationSrcNBDStorageCopyOne(virQEMUDriverPtr d=
river,
rc =3D qemuMigrationSrcNBDStorageCopyBlockdev(driver, vm,
disk, jobname,
sourcename, persistjob,
- host, port,
+ host, port, socket,
mirror_speed,
mirror_shallow,
tlsAlias);
} else {
rc =3D qemuMigrationSrcNBDStorageCopyDriveMirror(driver, vm, diskA=
lias,
- host, port,
+ host, port, socket,
mirror_speed,
mirror_shallow);
}
@@ -1014,6 +1065,7 @@ qemuMigrationSrcNBDStorageCopy(virQEMUDriverPtr drive=
r,
const char **migrate_disks,
virConnectPtr dconn,
const char *tlsAlias,
+ const char *nbdURI,
unsigned int flags)
{
qemuDomainObjPrivatePtr priv =3D vm->privateData;
@@ -1023,6 +1075,8 @@ qemuMigrationSrcNBDStorageCopy(virQEMUDriverPtr drive=
r,
bool mirror_shallow =3D *migrate_flags & QEMU_MONITOR_MIGRATE_NON_SHAR=
ED_INC;
int rv;
g_autoptr(virQEMUDriverConfig) cfg =3D virQEMUDriverGetConfig(driver);
+ g_autoptr(virURI) uri =3D NULL;
+ const char *socket =3D NULL;
=20
VIR_DEBUG("Starting drive mirrors for domain %s", vm->def->name);
=20
@@ -1038,6 +1092,33 @@ qemuMigrationSrcNBDStorageCopy(virQEMUDriverPtr driv=
er,
port =3D mig->nbd->port;
mig->nbd->port =3D 0;
=20
+ if (nbdURI) {
+ uri =3D virURIParse(nbdURI);
+ if (!uri)
+ return -1;
+
+ if (STREQ(uri->scheme, "tcp")) {
+ if (uri->server && STRNEQ(uri->server, ""))
+ host =3D (char *)uri->server;
+ if (uri->port)
+ port =3D uri->port;
+ } else if (STREQ(uri->scheme, "unix")) {
+ if (!uri->path) {
+ virReportError(VIR_ERR_INVALID_ARG, "%s",
+ _("UNIX disks URI does not include path"));
+ return -1;
+ }
+ socket =3D uri->path;
+
+ if (qemuSecurityDomainSetPathLabel(driver, vm, socket, false) =
< 0)
+ return -1;
+ } else {
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("Unsupported scheme in disks URI: %s"),
+ uri->scheme);
+ }
+ }
+
for (i =3D 0; i < vm->def->ndisks; i++) {
virDomainDiskDefPtr disk =3D vm->def->disks[i];
=20
@@ -1046,6 +1127,7 @@ qemuMigrationSrcNBDStorageCopy(virQEMUDriverPtr drive=
r,
continue;
=20
if (qemuMigrationSrcNBDStorageCopyOne(driver, vm, disk, host, port,
+ socket,
mirror_speed, mirror_shallow,
tlsAlias, flags) < 0)
return -1;
@@ -2397,6 +2479,7 @@ qemuMigrationDstPrepareAny(virQEMUDriverPtr driver,
size_t nmigrate_disks,
const char **migrate_disks,
int nbdPort,
+ const char *nbdURI,
qemuMigrationParamsPtr migParams,
unsigned long flags)
{
@@ -2650,7 +2733,8 @@ qemuMigrationDstPrepareAny(virQEMUDriverPtr driver,
=20
if (qemuMigrationDstStartNBDServer(driver, vm, incoming->address,
nmigrate_disks, migrate_disks,
- nbdPort, nbdTLSAlias) < 0) {
+ nbdPort, nbdURI,
+ nbdTLSAlias) < 0) {
goto stopjob;
}
cookieFlags |=3D QEMU_MIGRATION_COOKIE_NBD;
@@ -2785,7 +2869,7 @@ qemuMigrationDstPrepareTunnel(virQEMUDriverPtr driver,
return qemuMigrationDstPrepareAny(driver, dconn, cookiein, cookieinlen,
cookieout, cookieoutlen, def, origna=
me,
st, NULL, 0, false, NULL, 0, NULL, 0,
- migParams, flags);
+ NULL, migParams, flags);
}
=20
=20
@@ -2826,6 +2910,7 @@ qemuMigrationDstPrepareDirect(virQEMUDriverPtr driver,
size_t nmigrate_disks,
const char **migrate_disks,
int nbdPort,
+ const char *nbdURI,
qemuMigrationParamsPtr migParams,
unsigned long flags)
{
@@ -2840,11 +2925,13 @@ qemuMigrationDstPrepareDirect(virQEMUDriverPtr driv=
er,
VIR_DEBUG("driver=3D%p, dconn=3D%p, cookiein=3D%s, cookieinlen=3D%d, "
"cookieout=3D%p, cookieoutlen=3D%p, uri_in=3D%s, uri_out=3D%=
p, "
"def=3D%p, origname=3D%s, listenAddress=3D%s, "
- "nmigrate_disks=3D%zu, migrate_disks=3D%p, nbdPort=3D%d, fla=
gs=3D0x%lx",
+ "nmigrate_disks=3D%zu, migrate_disks=3D%p, nbdPort=3D%d, "
+ "nbdURI=3D%s, flags=3D0x%lx",
driver, dconn, NULLSTR(cookiein), cookieinlen,
cookieout, cookieoutlen, NULLSTR(uri_in), uri_out,
*def, origname, NULLSTR(listenAddress),
- nmigrate_disks, migrate_disks, nbdPort, flags);
+ nmigrate_disks, migrate_disks, nbdPort, NULLSTR(nbdURI),
+ flags);
=20
*uri_out =3D NULL;
=20
@@ -2947,7 +3034,7 @@ qemuMigrationDstPrepareDirect(virQEMUDriverPtr driver,
NULL, uri ? uri->scheme : "tcp",
port, autoPort, listenAddress,
nmigrate_disks, migrate_disks, nbdPor=
t,
- migParams, flags);
+ nbdURI, migParams, flags);
cleanup:
if (ret !=3D 0) {
VIR_FREE(*uri_out);
@@ -3482,7 +3569,8 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver,
const char *graphicsuri,
size_t nmigrate_disks,
const char **migrate_disks,
- qemuMigrationParamsPtr migParams)
+ qemuMigrationParamsPtr migParams,
+ const char *nbdURI)
{
int ret =3D -1;
unsigned int migrate_flags =3D QEMU_MONITOR_MIGRATE_BACKGROUND;
@@ -3614,7 +3702,8 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver,
&migrate_flags,
nmigrate_disks,
migrate_disks,
- dconn, tlsAlias, flags) < 0=
) {
+ dconn, tlsAlias,
+ nbdURI, flags) < 0) {
goto error;
}
} else {
@@ -3854,7 +3943,8 @@ qemuMigrationSrcPerformNative(virQEMUDriverPtr driver,
const char *graphicsuri,
size_t nmigrate_disks,
const char **migrate_disks,
- qemuMigrationParamsPtr migParams)
+ qemuMigrationParamsPtr migParams,
+ const char *nbdURI)
{
qemuDomainObjPrivatePtr priv =3D vm->privateData;
g_autoptr(virURI) uribits =3D NULL;
@@ -3908,7 +3998,7 @@ qemuMigrationSrcPerformNative(virQEMUDriverPtr driver,
ret =3D qemuMigrationSrcRun(driver, vm, persist_xml, cookiein, cookiei=
nlen, cookieout,
cookieoutlen, flags, resource, &spec, dconn,
graphicsuri, nmigrate_disks, migrate_disks,
- migParams);
+ migParams, nbdURI);
=20
if (spec.destType =3D=3D MIGRATION_DEST_FD)
VIR_FORCE_CLOSE(spec.dest.fd.qemu);
@@ -3971,7 +4061,7 @@ qemuMigrationSrcPerformTunnel(virQEMUDriverPtr driver,
ret =3D qemuMigrationSrcRun(driver, vm, persist_xml, cookiein, cookiei=
nlen,
cookieout, cookieoutlen, flags, resource, &s=
pec,
dconn, graphicsuri, nmigrate_disks, migrate_=
disks,
- migParams);
+ migParams, NULL);
=20
cleanup:
VIR_FORCE_CLOSE(spec.dest.fd.qemu);
@@ -4078,7 +4168,7 @@ qemuMigrationSrcPerformPeer2Peer2(virQEMUDriverPtr dr=
iver,
cookie, cookielen,
NULL, NULL, /* No out cookie w=
ith v2 migration */
flags, resource, dconn, NULL, =
0, NULL,
- migParams);
+ migParams, NULL);
=20
/* Perform failed. Make sure Finish doesn't overwrite the error */
if (ret < 0)
@@ -4142,6 +4232,7 @@ qemuMigrationSrcPerformPeer2Peer3(virQEMUDriverPtr dr=
iver,
size_t nmigrate_disks,
const char **migrate_disks,
int nbdPort,
+ const char *nbdURI,
qemuMigrationParamsPtr migParams,
unsigned long long bandwidth,
bool useParams,
@@ -4226,6 +4317,11 @@ qemuMigrationSrcPerformPeer2Peer3(virQEMUDriverPtr d=
river,
VIR_MIGRATE_PARAM_DISKS_PORT,
nbdPort) < 0)
goto cleanup;
+ if (nbdURI &&
+ virTypedParamsAddString(¶ms, &nparams, &maxparams,
+ VIR_MIGRATE_PARAM_DISKS_URI,
+ nbdURI) < 0)
+ goto cleanup;
=20
if (qemuMigrationParamsDump(migParams, ¶ms, &nparams,
&maxparams, &flags) < 0)
@@ -4323,7 +4419,7 @@ qemuMigrationSrcPerformPeer2Peer3(virQEMUDriverPtr dr=
iver,
&cookieout, &cookieoutlen,
flags, bandwidth, dconn, graph=
icsuri,
nmigrate_disks, migrate_disks,
- migParams);
+ migParams, nbdURI);
}
=20
/* Perform failed. Make sure Finish doesn't overwrite the error */
@@ -4498,6 +4594,7 @@ qemuMigrationSrcPerformPeer2Peer(virQEMUDriverPtr dri=
ver,
size_t nmigrate_disks,
const char **migrate_disks,
int nbdPort,
+ const char *nbdURI,
qemuMigrationParamsPtr migParams,
unsigned long flags,
const char *dname,
@@ -4515,12 +4612,12 @@ qemuMigrationSrcPerformPeer2Peer(virQEMUDriverPtr d=
river,
=20
VIR_DEBUG("driver=3D%p, sconn=3D%p, vm=3D%p, xmlin=3D%s, dconnuri=3D%s=
, uri=3D%s, "
"graphicsuri=3D%s, listenAddress=3D%s, nmigrate_disks=3D%zu,=
"
- "migrate_disks=3D%p, nbdPort=3D%d, flags=3D0x%lx, dname=3D%s=
, "
- "resource=3D%lu",
+ "migrate_disks=3D%p, nbdPort=3D%d, nbdURI=3D%s, flags=3D0x%l=
x, "
+ "dname=3D%s, resource=3D%lu",
driver, sconn, vm, NULLSTR(xmlin), NULLSTR(dconnuri),
NULLSTR(uri), NULLSTR(graphicsuri), NULLSTR(listenAddress),
- nmigrate_disks, migrate_disks, nbdPort, flags, NULLSTR(dname=
),
- resource);
+ nmigrate_disks, migrate_disks, nbdPort, NULLSTR(nbdURI),
+ flags, NULLSTR(dname), resource);
=20
if (flags & VIR_MIGRATE_TUNNELLED && uri) {
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
@@ -4618,7 +4715,7 @@ qemuMigrationSrcPerformPeer2Peer(virQEMUDriverPtr dri=
ver,
ret =3D qemuMigrationSrcPerformPeer2Peer3(driver, sconn, dconn, dc=
onnuri, vm, xmlin,
persist_xml, dname, uri, g=
raphicsuri,
listenAddress, nmigrate_di=
sks, migrate_disks,
- nbdPort, migParams, resour=
ce,
+ nbdPort, nbdURI, migParams=
, resource,
useParams, flags);
} else {
ret =3D qemuMigrationSrcPerformPeer2Peer2(driver, sconn, dconn, vm,
@@ -4654,6 +4751,7 @@ qemuMigrationSrcPerformJob(virQEMUDriverPtr driver,
size_t nmigrate_disks,
const char **migrate_disks,
int nbdPort,
+ const char *nbdURI,
qemuMigrationParamsPtr migParams,
const char *cookiein,
int cookieinlen,
@@ -4692,6 +4790,7 @@ qemuMigrationSrcPerformJob(virQEMUDriverPtr driver,
ret =3D qemuMigrationSrcPerformPeer2Peer(driver, conn, vm, xmlin, =
persist_xml,
dconnuri, uri, graphicsuri,=
listenAddress,
nmigrate_disks, migrate_dis=
ks, nbdPort,
+ nbdURI,
migParams, flags, dname, re=
source,
&v3proto);
} else {
@@ -4699,7 +4798,7 @@ qemuMigrationSrcPerformJob(virQEMUDriverPtr driver,
ret =3D qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri=
, cookiein, cookieinlen,
cookieout, cookieoutlen,
flags, resource, NULL, NULL, 0=
, NULL,
- migParams);
+ migParams, nbdURI);
}
if (ret < 0)
goto endjob;
@@ -4765,7 +4864,8 @@ qemuMigrationSrcPerformPhase(virQEMUDriverPtr driver,
char **cookieout,
int *cookieoutlen,
unsigned long flags,
- unsigned long resource)
+ unsigned long resource,
+ const char *nbdURI)
{
qemuDomainObjPrivatePtr priv =3D vm->privateData;
qemuDomainJobPrivatePtr jobPriv =3D priv->job.privateData;
@@ -4787,7 +4887,7 @@ qemuMigrationSrcPerformPhase(virQEMUDriverPtr driver,
ret =3D qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri, co=
okiein, cookieinlen,
cookieout, cookieoutlen,
flags, resource, NULL, graphicsuri,
- nmigrate_disks, migrate_disks, mig=
Params);
+ nmigrate_disks, migrate_disks, mig=
Params, nbdURI);
=20
if (ret < 0) {
qemuMigrationSrcRestoreDomainState(driver, vm);
@@ -4828,6 +4928,7 @@ qemuMigrationSrcPerform(virQEMUDriverPtr driver,
size_t nmigrate_disks,
const char **migrate_disks,
int nbdPort,
+ const char *nbdURI,
qemuMigrationParamsPtr migParams,
const char *cookiein,
int cookieinlen,
@@ -4841,11 +4942,12 @@ qemuMigrationSrcPerform(virQEMUDriverPtr driver,
VIR_DEBUG("driver=3D%p, conn=3D%p, vm=3D%p, xmlin=3D%s, dconnuri=3D%s,=
"
"uri=3D%s, graphicsuri=3D%s, listenAddress=3D%s, "
"nmigrate_disks=3D%zu, migrate_disks=3D%p, nbdPort=3D%d, "
+ "nbdURI=3D%s, "
"cookiein=3D%s, cookieinlen=3D%d, cookieout=3D%p, cookieoutl=
en=3D%p, "
"flags=3D0x%lx, dname=3D%s, resource=3D%lu, v3proto=3D%d",
driver, conn, vm, NULLSTR(xmlin), NULLSTR(dconnuri),
NULLSTR(uri), NULLSTR(graphicsuri), NULLSTR(listenAddress),
- nmigrate_disks, migrate_disks, nbdPort,
+ nmigrate_disks, migrate_disks, nbdPort, NULLSTR(nbdURI),
NULLSTR(cookiein), cookieinlen, cookieout, cookieoutlen,
flags, NULLSTR(dname), resource, v3proto);
=20
@@ -4859,7 +4961,7 @@ qemuMigrationSrcPerform(virQEMUDriverPtr driver,
return qemuMigrationSrcPerformJob(driver, conn, vm, xmlin, persist=
_xml, dconnuri, uri,
graphicsuri, listenAddress,
nmigrate_disks, migrate_disks, n=
bdPort,
- migParams,
+ nbdURI, migParams,
cookiein, cookieinlen,
cookieout, cookieoutlen,
flags, dname, resource, v3proto);
@@ -4877,12 +4979,12 @@ qemuMigrationSrcPerform(virQEMUDriverPtr driver,
migParams,
cookiein, cookieinlen,
cookieout, cookieoutlen,
- flags, resource);
+ flags, resource, nbdURI);
} else {
return qemuMigrationSrcPerformJob(driver, conn, vm, xmlin, per=
sist_xml, NULL,
uri, graphicsuri, listenAddr=
ess,
nmigrate_disks, migrate_disk=
s, nbdPort,
- migParams,
+ nbdURI, migParams,
cookiein, cookieinlen,
cookieout, cookieoutlen, fla=
gs,
dname, resource, v3proto);
diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h
index b6f88d3fd9ea..fd9eb7cab0cd 100644
--- a/src/qemu/qemu_migration.h
+++ b/src/qemu/qemu_migration.h
@@ -84,6 +84,7 @@
VIR_MIGRATE_PARAM_BANDWIDTH_POSTCOPY, VIR_TYPED_PARAM_ULLONG, \
VIR_MIGRATE_PARAM_PARALLEL_CONNECTIONS, VIR_TYPED_PARAM_INT, \
VIR_MIGRATE_PARAM_TLS_DESTINATION, VIR_TYPED_PARAM_STRING, \
+ VIR_MIGRATE_PARAM_DISKS_URI, VIR_TYPED_PARAM_STRING, \
NULL
=20
=20
@@ -149,6 +150,7 @@ qemuMigrationDstPrepareDirect(virQEMUDriverPtr driver,
size_t nmigrate_disks,
const char **migrate_disks,
int nbdPort,
+ const char *nbdURI,
qemuMigrationParamsPtr migParams,
unsigned long flags);
=20
@@ -165,6 +167,7 @@ qemuMigrationSrcPerform(virQEMUDriverPtr driver,
size_t nmigrate_disks,
const char **migrate_disks,
int nbdPort,
+ const char *nbdURI,
qemuMigrationParamsPtr migParams,
const char *cookiein,
int cookieinlen,
diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_coo=
kie.c
index cef255598854..c1295b32fc27 100644
--- a/src/qemu/qemu_migration_cookie.c
+++ b/src/qemu/qemu_migration_cookie.c
@@ -91,6 +91,7 @@ qemuMigrationCookieNBDFree(qemuMigrationCookieNBDPtr nbd)
while (nbd->ndisks)
VIR_FREE(nbd->disks[--nbd->ndisks].target);
VIR_FREE(nbd->disks);
+
VIR_FREE(nbd);
}
=20
@@ -992,7 +993,7 @@ qemuMigrationCookieNBDXMLParse(xmlXPathContextPtr ctxt)
if (port && virStrToLong_i(port, NULL, 10, &ret->port) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Malformed nbd port '%s'"),
- port);
+ port);
goto error;
}
=20
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 8a4a0d172dc9..31597ee46972 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -10643,6 +10643,10 @@ static const vshCmdOptDef opts_migrate[] =3D {
.type =3D VSH_OT_INT,
.help =3D N_("port to use by target server for incoming disks migrati=
on")
},
+ {.name =3D "disks-uri",
+ .type =3D VSH_OT_STRING,
+ .help =3D N_("URI to use for disks migration (overrides --disks-port)=
")
+ },
{.name =3D "comp-methods",
.type =3D VSH_OT_STRING,
.help =3D N_("comma separated list of compression methods to be used")
@@ -10762,6 +10766,14 @@ doMigrate(void *opaque)
VIR_MIGRATE_PARAM_DISKS_PORT, intOpt) < 0)
goto save_error;
=20
+ if (vshCommandOptStringReq(ctl, cmd, "disks-uri", &opt) < 0)
+ goto out;
+ if (opt &&
+ virTypedParamsAddString(¶ms, &nparams, &maxparams,
+ VIR_MIGRATE_PARAM_DISKS_URI,
+ opt) < 0)
+ goto save_error;
+
if (vshCommandOptStringReq(ctl, cmd, "dname", &opt) < 0)
goto out;
if (opt &&
--=20
2.28.0
From nobody Fri May 3 01:47:17 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zohomail.com: domain of redhat.com designates
207.211.31.120 as permitted sender) client-ip=207.211.31.120;
envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-1.mimecast.com;
Authentication-Results: mx.zohomail.com;
dkim=pass;
spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 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=1598971044; cv=none;
d=zohomail.com; s=zohoarc;
b=IOed5u/Wpwb4QUoxyUMP1yQQbGwa3GbImUZL+EZodrWzbPKCV/86rU3kgHznjqU4Ini8sAkpoKkocx68T0ioIhGDSVmryUzOIUZiB+cBVK5P37vhSlnEAaD10mv0lMwpcjzXzATBaW2IWR6xgBear4ekoTt0ng2ud7fuZ0U4uDQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
s=zohoarc;
t=1598971044;
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=HdGsub6EEGskeQsWovL3/VuIsNwLbyeaEKbGMDxfQuE=;
b=jIjeuEThTe/O7RgGHAEBP2IAmSli0ce4VsIpj/2HIaiyQHEuu1zC6l7T08Yx7pr70T6/GjQRuhtZO1NfM/xBy9t0oNxTc9SSBhV/0vHNahaH3P+B2V4Y31g8vhUkc69haVw3e7ptr5fhPJup6vdESXES4sC7HjVFcAmGfTox+8o=
ARC-Authentication-Results: i=1; mx.zohomail.com;
dkim=pass;
spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.120 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
dmarc=pass header.from= (p=none dis=none)
header.from=
Return-Path:
Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com
[207.211.31.120]) by mx.zohomail.com
with SMTPS id 1598971044283457.76533270256425;
Tue, 1 Sep 2020 07:37:24 -0700 (PDT)
Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com
[209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id
us-mta-211--r_cXcW5ML6HWOGBVmrlqA-1; Tue, 01 Sep 2020 10:37:20 -0400
Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com
[10.5.11.12])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CD68E10ABDB9;
Tue, 1 Sep 2020 14:37:13 +0000 (UTC)
Received: from colo-mx.corp.redhat.com
(colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 970CD61983;
Tue, 1 Sep 2020 14:37:13 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id 966F818095FF;
Tue, 1 Sep 2020 14:37:12 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com
[10.5.11.22])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id 081EbBht016611 for ;
Tue, 1 Sep 2020 10:37:11 -0400
Received: by smtp.corp.redhat.com (Postfix)
id C54371002D40; Tue, 1 Sep 2020 14:37:11 +0000 (UTC)
Received: from wheatley.localdomain (unknown [10.40.195.43])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 3677C10023A7
for ; Tue, 1 Sep 2020 14:37:11 +0000 (UTC)
Received: from wheatley.redhat.com (wheatley.k8r.cz [127.0.0.1])
by wheatley.localdomain (Postfix) with ESMTP id 8D7387E0085
for ; Tue, 1 Sep 2020 16:37:04 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1598971042;
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=HdGsub6EEGskeQsWovL3/VuIsNwLbyeaEKbGMDxfQuE=;
b=VzM55dc1+DJ2sQY1vOCGzBd670E/cg2+PBI1X7xVFnLiZhQfMe4WH4gqxAqhlX10FFhtO5
hE/akiFc/MxGRHPSqUN/CwmT5sq43oTvs/zHIervPixQYPJYgthUMnNszIEKgS5UxFnZqm
l9B4Rl+DrqW47JRfaf5Ow+L8Qmn1nY4=
X-MC-Unique: -r_cXcW5ML6HWOGBVmrlqA-1
From: Martin Kletzander
To: libvir-list@redhat.com
Subject: [PATCH v2 7/9] peer2peer migration: allow connecting to local sockets
Date: Tue, 1 Sep 2020 16:36:58 +0200
Message-Id:
In-Reply-To:
References:
MIME-Version: 1.0
X-Clacks-Overhead: GNU Terry Pratchett
X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22
X-loop: libvir-list@redhat.com
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12
Authentication-Results: relay.mimecast.com;
auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com
X-Mimecast-Spam-Score: 0.001
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: quoted-printable
X-ZohoMail-DKIM: pass (identity @redhat.com)
Content-Type: text/plain; charset="utf-8"
Local socket connections were outright disabled because there was no "serve=
r"
part in the URI. However, given how requirements and usage scenarios are
evolving, some management apps might need the source libvirt daemon to conn=
ect
to the destination daemon over a UNIX socket for peer2peer migration. Sinc=
e we
cannot know where the socket leads (whether the same daemon or not) let's d=
ecide
that based on whether the socket path is non-standard, or rather explicitly
specified in the URI. Checking non-standard path would require to ask the
daemon for configuration and the only misuse that it would prevent would be=
a
pretty weird one. And that's not worth it. The assumption is that whenever
someone uses explicit UNIX socket paths in the URI for migration they better
know what they are doing.
Partially resolves: https://bugzilla.redhat.com/1638889
Signed-off-by: Martin Kletzander
Reviewed-by: Jiri Denemark
---
docs/manpages/virsh.rst | 9 +++++++++
src/libvirt-domain.c | 8 +++++++-
src/remote/remote_driver.c | 8 ++++++--
src/util/viruri.c | 30 ++++++++++++++++++++++++++++++
src/util/viruri.h | 2 ++
tests/virmigtest.c | 2 +-
6 files changed, 55 insertions(+), 4 deletions(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index 12357ea4ee86..4d66019e750b 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -3235,6 +3235,15 @@ has different semantics:
=20
* peer2peer migration: the *desturi* is an address of the target host as s=
een from the source machine.
=20
+In a special circumstance where you require a complete control of the conn=
ection
+and/or libvirt does not have network access to the remote side you can use=
a
+UNIX transport in the URI and specify a socket path in the query, for exam=
ple
+with the qemu driver you could use this:
+
+.. code-block::
+
+ qemu+unix://?socket=3D/path/to/socket
+
When *migrateuri* is not specified, libvirt will automatically determine t=
he
hypervisor specific URI. Some hypervisors, including QEMU, have an option=
al
"migration_host" configuration parameter (useful when the host has multiple
diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
index da5a21e4c4d4..cde86c77e892 100644
--- a/src/libvirt-domain.c
+++ b/src/libvirt-domain.c
@@ -3276,7 +3276,13 @@ virDomainMigrateCheckNotLocal(const char *dconnuri)
=20
if (!(tempuri =3D virURIParse(dconnuri)))
return -1;
- if (!tempuri->server || STRPREFIX(tempuri->server, "localhost")) {
+
+ /*
+ * If someone migrates explicitly to a unix socket, then they have to =
know
+ * what they are doing and it most probably was not a mistake.
+ */
+ if ((tempuri->server && STRPREFIX(tempuri->server, "localhost")) ||
+ (!tempuri->server && !virURICheckUnixSocket(tempuri))) {
virReportInvalidArg(dconnuri, "%s",
_("Attempt to migrate guest to the same host")=
);
return -1;
diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index 8654046b8ddb..7df995446a3c 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -1429,9 +1429,13 @@ remoteConnectOpen(virConnectPtr conn,
=20
/* If there's a driver registered we must defer to that.
* If there isn't a driver, we must connect in "direct"
- * mode - see doRemoteOpen */
+ * mode - see doRemoteOpen.
+ * One exception is if we are trying to connect to an
+ * unknown socket path as that might be proxied to remote
+ * host */
if (!conn->uri->server &&
- virHasDriverForURIScheme(driver)) {
+ virHasDriverForURIScheme(driver) &&
+ !virURICheckUnixSocket(conn->uri)) {
ret =3D VIR_DRV_OPEN_DECLINED;
goto cleanup;
}
diff --git a/src/util/viruri.c b/src/util/viruri.c
index 0112186fdbc4..dd7559662bd2 100644
--- a/src/util/viruri.c
+++ b/src/util/viruri.c
@@ -393,3 +393,33 @@ virURIGetParam(virURIPtr uri, const char *name)
_("Missing URI parameter '%s'"), name);
return NULL;
}
+
+
+/**
+ * virURICheckUnixSocket:
+ * @uri: URI to check
+ *
+ * Check if the URI looks like it refers to a non-standard socket path. I=
n such
+ * scenario the socket might be proxied to a remote server even though the=
URI
+ * looks like it is only local.
+ *
+ * Returns: true if the URI might be proxied to a remote server
+ */
+bool
+virURICheckUnixSocket(virURIPtr uri)
+{
+ size_t i =3D 0;
+
+ if (!uri->scheme)
+ return false;
+
+ if (STRNEQ_NULLABLE(strchr(uri->scheme, '+'), "+unix"))
+ return false;
+
+ for (i =3D 0; i < uri->paramsCount; i++) {
+ if (STREQ(uri->params[i].name, "socket"))
+ return true;
+ }
+
+ return false;
+}
diff --git a/src/util/viruri.h b/src/util/viruri.h
index e607ecc109e7..dc4907b55059 100644
--- a/src/util/viruri.h
+++ b/src/util/viruri.h
@@ -62,4 +62,6 @@ int virURIResolveAlias(virConfPtr conf, const char *alias=
, char **uri);
=20
const char *virURIGetParam(virURIPtr uri, const char *name);
=20
+bool virURICheckUnixSocket(virURIPtr uri);
+
#define VIR_URI_SERVER(uri) ((uri) && (uri)->server ? (uri)->server : "loc=
alhost")
diff --git a/tests/virmigtest.c b/tests/virmigtest.c
index df8d51bab94b..af6643397e90 100644
--- a/tests/virmigtest.c
+++ b/tests/virmigtest.c
@@ -83,7 +83,7 @@ mymain(void)
=20
TEST("scheme://some.cryptorandom.fqdn.tld");
=20
- TEST_FAIL("hehe+unix:///?socket=3D/path/to/some-sock");
+ TEST("hehe+unix:///?socket=3D/path/to/some-sock");
=20
return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
--=20
2.28.0
From nobody Fri May 3 01:47:17 2024
Delivered-To: importer@patchew.org
Received-SPF: pass (zohomail.com: domain of redhat.com designates
207.211.31.81 as permitted sender) client-ip=207.211.31.81;
envelope-from=libvir-list-bounces@redhat.com;
helo=us-smtp-delivery-1.mimecast.com;
Authentication-Results: mx.zohomail.com;
dkim=pass;
spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 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=1598971078; cv=none;
d=zohomail.com; s=zohoarc;
b=YLlPki31ec5NcYr6puRnVSxAoLBZJdvZAQNrUhj4Kv8BR0NMlurh84Cw4sQhWuunjifK0viCABPSb2iGcjUCXGLo+8wxLeRcmyWQ9itcDl6Z08zkVtWKNDXkAAUQQyEvgpP1wb0q+jv0leIdutJDF6gQ2EvVmXUCYkAh0QgCFmA=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
s=zohoarc;
t=1598971078;
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=75A1oIiYg1xUTJlYm48i3VuxxU0A+BaX+/WiWBTNhr8=;
b=fdY8/BRf/Yl03G8TwFsBD23JZTvqsEGSCHaqF1p7OlfWDFC+tEn4R9j2aueRZ0J8q0/SzOzYgDhUpS9jUvUmmFEWteKx1be5ALh8esDUkzGfrR3wMVVi+lM4Y9fQa0huubTORJCkcm86Il/t2zLgtR1HywkUmGYf+V/WV7FIzjw=
ARC-Authentication-Results: i=1; mx.zohomail.com;
dkim=pass;
spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as
permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com;
dmarc=pass header.from= (p=none dis=none)
header.from=
Return-Path:
Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com
[207.211.31.81]) by mx.zohomail.com
with SMTPS id 1598971078046650.3866766480779;
Tue, 1 Sep 2020 07:37:58 -0700 (PDT)
Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com
[209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id
us-mta-209-aTDGDXFrNeWTJ3Of1YtrUg-1; Tue, 01 Sep 2020 10:37:54 -0400
Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com
[10.5.11.22])
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
(No client certificate requested)
by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3F7491DDFE;
Tue, 1 Sep 2020 14:37:47 +0000 (UTC)
Received: from colo-mx.corp.redhat.com
(colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20])
by smtp.corp.redhat.com (Postfix) with ESMTPS id 1B79E10027A6;
Tue, 1 Sep 2020 14:37:47 +0000 (UTC)
Received: from lists01.pubmisc.prod.ext.phx2.redhat.com
(lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33])
by colo-mx.corp.redhat.com (Postfix) with ESMTP id D763D1826D2E;
Tue, 1 Sep 2020 14:37:46 +0000 (UTC)
Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com
[10.5.11.12])
by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP
id 081EbEol016653 for ;
Tue, 1 Sep 2020 10:37:14 -0400
Received: by smtp.corp.redhat.com (Postfix)
id 6EA1E6198E; Tue, 1 Sep 2020 14:37:14 +0000 (UTC)
Received: from wheatley.localdomain (unknown [10.40.195.43])
by smtp.corp.redhat.com (Postfix) with ESMTPS id DDDCB60BE2
for ; Tue, 1 Sep 2020 14:37:11 +0000 (UTC)
Received: from wheatley.redhat.com (wheatley.k8r.cz [127.0.0.1])
by wheatley.localdomain (Postfix) with ESMTP id 940B67E0086
for ; Tue, 1 Sep 2020 16:37:04 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1598971076;
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=75A1oIiYg1xUTJlYm48i3VuxxU0A+BaX+/WiWBTNhr8=;
b=GU+gwoUMHTX5f2qHo5nieXiDGbMZ//bp8mF61UDHrOBs9yRIKOpewMHSj4FALmI0SyJpmv
GH3tx3IF8n504bcnF7HH9EBkNCKh7i2SeUnLWdcWP73YQAR2cAramtcuVvYveAWqqP7vz/
ar3YPODE4i9bVJxdxGJCFjs33J+yAkE=
X-MC-Unique: aTDGDXFrNeWTJ3Of1YtrUg-1
From: Martin Kletzander
To: libvir-list@redhat.com
Subject: [PATCH v2 8/9] qemu: Allow migration over UNIX socket
Date: Tue, 1 Sep 2020 16:36:59 +0200
Message-Id:
<67fd2ced09d277bf9f1f30e984ad0cf21e24c333.1598970960.git.mkletzan@redhat.com>
In-Reply-To:
References:
MIME-Version: 1.0
X-Clacks-Overhead: GNU Terry Pratchett
X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12
X-loop: libvir-list@redhat.com
X-BeenThere: libvir-list@redhat.com
X-Mailman-Version: 2.1.12
Precedence: junk
List-Id: Development discussions about the libvirt library & tools
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Sender: libvir-list-bounces@redhat.com
Errors-To: libvir-list-bounces@redhat.com
X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22
Authentication-Results: relay.mimecast.com;
auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com
X-Mimecast-Spam-Score: 0.002
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: quoted-printable
X-ZohoMail-DKIM: pass (identity @redhat.com)
Content-Type: text/plain; charset="utf-8"
This allows:
a) migration without access to network
b) complete control of the migration stream
c) easy migration between containerised libvirt daemons on the same host
Resolves: https://bugzilla.redhat.com/1638889
Signed-off-by: Martin Kletzander
---
docs/manpages/virsh.rst | 15 +++-
docs/migration.html.in | 33 ++++++++
src/qemu/qemu_migration.c | 138 +++++++++++++++++++++++--------
src/qemu/qemu_migration_params.c | 9 ++
src/qemu/qemu_migration_params.h | 3 +
src/qemu/qemu_monitor.c | 15 ++++
src/qemu/qemu_monitor.h | 4 +
7 files changed, 179 insertions(+), 38 deletions(-)
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index 4d66019e750b..e3aeaa5c44ea 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -3242,7 +3242,7 @@ with the qemu driver you could use this:
=20
.. code-block::
=20
- qemu+unix://?socket=3D/path/to/socket
+ qemu+unix:///system?socket=3D/path/to/socket
=20
When *migrateuri* is not specified, libvirt will automatically determine t=
he
hypervisor specific URI. Some hypervisors, including QEMU, have an option=
al
@@ -3270,6 +3270,14 @@ There are a few scenarios where specifying *migrateu=
ri* may help:
might be specified to choose a specific port number outside the default =
range in
order to comply with local firewall policies.
=20
+* The *desturi* uses UNIX transport method. In this advanced case libvirt
+ should not guess a *migrateuri* and it should be specified using
+ UNIX socket path URI:
+
+.. code-block::
+
+ unix:///path/to/socket
+
See `https://libvirt.org/migration.html#uris `_ for more details on
migration URIs.
=20
@@ -3296,7 +3304,10 @@ specific parameters separated by '&'. Currently reco=
gnized parameters are
Optional *listen-address* sets the listen address that hypervisor on the
destination side should bind to for incoming migration. Both IPv4 and IPv6
addresses are accepted as well as hostnames (the resolving is done on
-destination). Some hypervisors do not support this feature and will return=
an
+destination). In niche scenarios you can also use UNIX socket to make the
+hypervisor connection over UNIX socket in which case you must make sure the
+source can connect to the destination using the socket path provided by yo=
u.
+Some hypervisors do not support specifying the listen address and will ret=
urn an
error if this parameter is used.
=20
Optional *disks-port* sets the port that hypervisor on destination side sh=
ould
diff --git a/docs/migration.html.in b/docs/migration.html.in
index e95ee9de6f1b..8585dcab6863 100644
--- a/docs/migration.html.in
+++ b/docs/migration.html.in
@@ -201,6 +201,9 @@
numbers. In the latter case the management application may wish
to choose a specific port number outside the default range in order
to comply with local firewall policies.
+ The second URI uses UNIX transport method. In this advanced case
+ libvirt should not guess a *migrateuri* and it should be specified=
using
+ UNIX socket path URI: unix:///path/to/socket
.
=20
@@ -628,5 +631,35 @@ virsh migrate --p2p --tunnelled web1 qemu+ssh://destho=
st/system qemu+ssh://10.0.
Supported by QEMU driver
=20
+
+
+
+
+ In niche scenarios where libvirt daemon does not have access to the
+ network (e.g. running in a restricted container on a host that has
+ accessible network), when a management application wants to have com=
plete
+ control over the transfer or when migrating between two containers o=
n the
+ same host all the communication can be done using UNIX sockets. This
+ includes connecting to non-standard socket path for the destination
+ daemon, using UNIX sockets for hypervisor's communication or for the=
NBD
+ data transfer. All of that can be used with both peer2peer and dire=
ct
+ migration options.
+
+
+
+ Example using /tmp/migdir
as a directory representing t=
he
+ same path visible from both libvirt daemons. That can be achieved by
+ bind-mounting the same directory to different containers running sep=
arate
+ daemons or forwarding connections to these sockets manually
+ (using socat
, netcat
or a custom piece of
+ software):
+
+virsh migrate web1 [--p2p] --copy-storage-all 'qemu+unix:///system?socket=
=3D/tmp/migdir/test-sock-driver' 'unix:///tmp/migdir/test-sock-qemu' [--lis=
ten-address /tmp/migdir/test-sock-qemu] --disks-uri unix:///tmp/migdir/test=
-sock-nbd
+
+
+
+ Supported by QEMU driver
+
+