From nobody Sun May 5 03:36:19 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; 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=1599210003; cv=none; d=zohomail.com; s=zohoarc; b=MW+b4C0nFFRgfEUQhMmC97OPcsHCDOH7q777TjH5JnUCiZ4YOqlaiO7o4WK/A4Sbcd5Wpn9qm0xEu/BnpEUrH4WC1yfN7FB5U/pAZA03eqnofNMvksziZrrVzrxDA5bywkNPWTzbfp733oyJzH8FOqx48meegFdUN+IE3q7GBd8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599210003; 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=4rKMSVfxKQ7BcJm8OVYow93/Fj4woLKoOa1SmYFsFSw=; b=ehUHIUECzsBFFlgCOBKYxUwUdhTBnzv7HiuIIGPwiz4cwek3CvZXXLaCMiQ/qiaffmkbO4H0JusqcOlVV1SVGod6s0hc0e5F3820FCNoTzkcfjgchuAFcpRrLHaeIxjYLGsFgimLLfLA3rtmEWuRQwZp+KKbJK9vZ1Y8k1xKzEQ= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 1599210003741609.2013151201181; Fri, 4 Sep 2020 02:00:03 -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-335-vAs5J21zOo6fBCS54zRgSQ-1; Fri, 04 Sep 2020 04:59:30 -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 29F9784E243; Fri, 4 Sep 2020 08:59:25 +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 038415D9CC; Fri, 4 Sep 2020 08:59:25 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 47FDE1832FC1; Fri, 4 Sep 2020 08:59:23 +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 0848xKDG003517 for ; Fri, 4 Sep 2020 04:59:20 -0400 Received: by smtp.corp.redhat.com (Postfix) id 292875C269; Fri, 4 Sep 2020 08:59:20 +0000 (UTC) Received: from carol.localdomain (unknown [10.43.2.39]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A4F525C230 for ; Fri, 4 Sep 2020 08:59:16 +0000 (UTC) Received: from carol.redhat.com (carol.k8r.cz [127.0.0.1]) by carol.localdomain (Postfix) with ESMTP id 13F2FC200C2 for ; Fri, 4 Sep 2020 10:59:15 +0200 (CEST) X-MC-Unique: vAs5J21zOo6fBCS54zRgSQ-1 From: Martin Kletzander To: libvir-list@redhat.com Subject: [PATCH v3 1/2] qemu: Allow migration over UNIX socket Date: Fri, 4 Sep 2020 10:58:45 +0200 Message-Id: <4d55ac055e5a2780611a85d33edbebaa728bb5dc.1599208676.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.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0.002 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable 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 Reviewed-by: Jiri Denemark --- docs/manpages/virsh.rst | 13 ++- docs/migration.html.in | 33 ++++++++ src/qemu/qemu_driver.c | 22 ++++- 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 + 8 files changed, 198 insertions(+), 39 deletions(-) diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst index a0d6c3fadda6..ca5acf84cad2 100644 --- a/docs/manpages/virsh.rst +++ b/docs/manpages/virsh.rst @@ -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,8 +3304,9 @@ specific parameters separated by '&'. Currently recog= nized 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 -error if this parameter is used. +destination). Some hypervisors do not support specifying the listen addre= ss and +will return an error if this parameter is used. This parameter cannot be u= sed if +*desturi* uses UNIX transport method. =20 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. diff --git a/docs/migration.html.in b/docs/migration.html.in index e95ee9de6f1b..162c202227b9 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

    Configuration file handling

    @@ -628,5 +631,35 @@ virsh migrate --p2p --tunnelled web1 qemu+ssh://destho= st/system qemu+ssh://10.0. Supported by QEMU driver

    =20 + +

    Migration using only UNIX sockets=

    + +

    + 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' --disk=
    s-uri unix:///tmp/migdir/test-sock-nbd
    +    
    + +

    + Supported by QEMU driver +

    + diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 80c56fec603e..ce72e1021d16 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -11480,7 +11480,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn, const char *dom_xml =3D NULL; const char *dname =3D NULL; const char *uri_in =3D NULL; - const char *listenAddress =3D cfg->migrationAddress; + const char *listenAddress =3D NULL; int nbdPort =3D 0; int nmigrate_disks; g_autofree const char **migrate_disks =3D NULL; @@ -11530,6 +11530,17 @@ qemuDomainMigratePrepare3Params(virConnectPtr dcon= n, return -1; } =20 + if (listenAddress) { + if (uri_in && STRPREFIX(uri_in, "unix:")) { + virReportError(VIR_ERR_INVALID_ARG, "%s", + _("Usage of listen-address is forbidden when " + "migration URI uses UNIX transport method")); + return -1; + } + } else { + listenAddress =3D cfg->migrationAddress; + } + if (flags & VIR_MIGRATE_TUNNELLED) { /* this is a logical error; we never should have gotten here with * VIR_MIGRATE_TUNNELLED set @@ -11771,6 +11782,15 @@ qemuDomainMigratePerform3Params(virDomainPtr dom, goto cleanup; } =20 + if (listenAddress) { + if (uri && STRPREFIX(uri, "unix:")) { + virReportError(VIR_ERR_INVALID_ARG, "%s", + _("Usage of listen-address is forbidden when " + "migration URI uses UNIX transport method")); + return -1; + } + } + nmigrate_disks =3D virTypedParamsGetStringList(params, nparams, VIR_MIGRATE_PARAM_MIGRATE= _DISKS, &migrate_disks); diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index f3870b3c0b9d..f862942f87f9 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2411,6 +2411,8 @@ qemuMigrationDstPrepare(virDomainObjPtr vm, =20 if (tunnel) { migrateFrom =3D g_strdup("stdio"); + } else if (g_strcmp0(protocol, "unix") =3D=3D 0) { + migrateFrom =3D g_strdup_printf("%s:%s", protocol, listenAddress); } else { bool encloseAddress =3D false; bool hostIPv6Capable =3D false; @@ -2995,34 +2997,40 @@ qemuMigrationDstPrepareDirect(virQEMUDriverPtr driv= er, } =20 if (STRNEQ(uri->scheme, "tcp") && - STRNEQ(uri->scheme, "rdma")) { + STRNEQ(uri->scheme, "rdma") && + STRNEQ(uri->scheme, "unix")) { virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, _("unsupported scheme %s in migration URI %s"), uri->scheme, uri_in); goto cleanup; } =20 - if (uri->server =3D=3D NULL) { - virReportError(VIR_ERR_INVALID_ARG, _("missing host in migrati= on" - " URI: %s"), uri_in); - goto cleanup; - } - - if (uri->port =3D=3D 0) { - if (virPortAllocatorAcquire(driver->migrationPorts, &port) < 0) + if (STREQ(uri->scheme, "unix")) { + autoPort =3D false; + listenAddress =3D uri->path; + } else { + if (uri->server =3D=3D NULL) { + virReportError(VIR_ERR_INVALID_ARG, _("missing host in mig= ration" + " URI: %s"), uri_in); goto cleanup; + } =20 - /* Send well-formed URI only if uri_in was well-formed */ - if (well_formed_uri) { - uri->port =3D port; - if (!(*uri_out =3D virURIFormat(uri))) + if (uri->port =3D=3D 0) { + if (virPortAllocatorAcquire(driver->migrationPorts, &port)= < 0) goto cleanup; + + /* Send well-formed URI only if uri_in was well-formed */ + if (well_formed_uri) { + uri->port =3D port; + if (!(*uri_out =3D virURIFormat(uri))) + goto cleanup; + } else { + *uri_out =3D g_strdup_printf("%s:%d", uri_in, port); + } } else { - *uri_out =3D g_strdup_printf("%s:%d", uri_in, port); + port =3D uri->port; + autoPort =3D false; } - } else { - port =3D uri->port; - autoPort =3D false; } } =20 @@ -3237,6 +3245,8 @@ qemuMigrationSrcConfirm(virQEMUDriverPtr driver, enum qemuMigrationDestinationType { MIGRATION_DEST_HOST, MIGRATION_DEST_CONNECT_HOST, + MIGRATION_DEST_SOCKET, + MIGRATION_DEST_CONNECT_SOCKET, MIGRATION_DEST_FD, }; =20 @@ -3256,6 +3266,10 @@ struct _qemuMigrationSpec { int port; } host; =20 + struct { + const char *path; + } socket; + struct { int qemu; int local; @@ -3470,13 +3484,30 @@ qemuMigrationSrcConnect(virQEMUDriverPtr driver, =20 if (qemuSecuritySetSocketLabel(driver->securityManager, vm->def) < 0) goto cleanup; - port =3D g_strdup_printf("%d", spec->dest.host.port); - if (virNetSocketNewConnectTCP(spec->dest.host.name, - port, - AF_UNSPEC, - &sock) =3D=3D 0) { - fd_qemu =3D virNetSocketDupFD(sock, true); - virObjectUnref(sock); + + switch (spec->destType) { + case MIGRATION_DEST_CONNECT_HOST: + port =3D g_strdup_printf("%d", spec->dest.host.port); + if (virNetSocketNewConnectTCP(spec->dest.host.name, + port, + AF_UNSPEC, + &sock) =3D=3D 0) { + fd_qemu =3D virNetSocketDupFD(sock, true); + virObjectUnref(sock); + } + break; + case MIGRATION_DEST_CONNECT_SOCKET: + if (virNetSocketNewConnectUNIX(spec->dest.socket.path, + false, NULL, + &sock) =3D=3D 0) { + fd_qemu =3D virNetSocketDupFD(sock, true); + virObjectUnref(sock); + } + break; + case MIGRATION_DEST_HOST: + case MIGRATION_DEST_SOCKET: + case MIGRATION_DEST_FD: + break; } =20 spec->destType =3D MIGRATION_DEST_FD; @@ -3684,6 +3715,14 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, if (migrate_flags & (QEMU_MONITOR_MIGRATE_NON_SHARED_DISK | QEMU_MONITOR_MIGRATE_NON_SHARED_INC)) { if (mig->nbd) { + const char *host =3D ""; + + if (spec->destType =3D=3D MIGRATION_DEST_HOST || + spec->destType =3D=3D MIGRATION_DEST_CONNECT_HOST) { + host =3D spec->dest.host.name; + } + + /* Currently libvirt does not support setting up of the NBD * non-shared storage migration with TLS. As we need to honour= the * VIR_MIGRATE_TLS flag, we need to reject such migration until @@ -3697,7 +3736,7 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, =20 /* This will update migrate_flags on success */ if (qemuMigrationSrcNBDStorageCopy(driver, vm, mig, - spec->dest.host.name, + host, migrate_speed, &migrate_flags, nmigrate_disks, @@ -3745,7 +3784,8 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, goto exit_monitor; =20 /* connect to the destination qemu if needed */ - if (spec->destType =3D=3D MIGRATION_DEST_CONNECT_HOST && + if ((spec->destType =3D=3D MIGRATION_DEST_CONNECT_HOST || + spec->destType =3D=3D MIGRATION_DEST_CONNECT_SOCKET) && qemuMigrationSrcConnect(driver, vm, spec) < 0) { goto exit_monitor; } @@ -3767,7 +3807,14 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, spec->dest.host.port); break; =20 + case MIGRATION_DEST_SOCKET: + qemuSecurityDomainSetPathLabel(driver, vm, spec->dest.socket.path,= false); + rc =3D qemuMonitorMigrateToSocket(priv->mon, migrate_flags, + spec->dest.socket.path); + break; + case MIGRATION_DEST_CONNECT_HOST: + case MIGRATION_DEST_CONNECT_SOCKET: /* handled above and transformed into MIGRATION_DEST_FD */ break; =20 @@ -3983,16 +4030,35 @@ qemuMigrationSrcPerformNative(virQEMUDriverPtr driv= er, } } =20 - /* RDMA and multi-fd migration requires QEMU to connect to the destina= tion - * itself. - */ - if (STREQ(uribits->scheme, "rdma") || (flags & VIR_MIGRATE_PARALLEL)) - spec.destType =3D MIGRATION_DEST_HOST; - else - spec.destType =3D MIGRATION_DEST_CONNECT_HOST; - spec.dest.host.protocol =3D uribits->scheme; - spec.dest.host.name =3D uribits->server; - spec.dest.host.port =3D uribits->port; + if (STREQ(uribits->scheme, "unix")) { + if ((flags & VIR_MIGRATE_TLS) && + !qemuMigrationParamsTLSHostnameIsSet(migParams)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("Explicit destination hostname is required " + "for TLS migration over UNIX socket")); + return -1; + } + + if (flags & VIR_MIGRATE_PARALLEL) + spec.destType =3D MIGRATION_DEST_SOCKET; + else + spec.destType =3D MIGRATION_DEST_CONNECT_SOCKET; + + spec.dest.socket.path =3D uribits->path; + } else { + /* RDMA and multi-fd migration requires QEMU to connect to the des= tination + * itself. + */ + if (STREQ(uribits->scheme, "rdma") || (flags & VIR_MIGRATE_PARALLE= L)) + spec.destType =3D MIGRATION_DEST_HOST; + else + spec.destType =3D MIGRATION_DEST_CONNECT_HOST; + + spec.dest.host.protocol =3D uribits->scheme; + spec.dest.host.name =3D uribits->server; + spec.dest.host.port =3D uribits->port; + } + spec.fwdType =3D MIGRATION_FWD_DIRECT; =20 ret =3D qemuMigrationSrcRun(driver, vm, persist_xml, cookiein, cookiei= nlen, cookieout, diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_par= ams.c index 231a8a2ee83e..5fde915963ec 100644 --- a/src/qemu/qemu_migration_params.c +++ b/src/qemu/qemu_migration_params.c @@ -1008,6 +1008,15 @@ qemuMigrationParamsDisableTLS(virDomainObjPtr vm, } =20 =20 +bool +qemuMigrationParamsTLSHostnameIsSet(qemuMigrationParamsPtr migParams) +{ + int param =3D QEMU_MIGRATION_PARAM_TLS_HOSTNAME; + return (migParams->params[param].set && + STRNEQ(migParams->params[param].value.s, "")); +} + + /* qemuMigrationParamsResetTLS * @driver: pointer to qemu driver * @vm: domain object diff --git a/src/qemu/qemu_migration_params.h b/src/qemu/qemu_migration_par= ams.h index 9aea24725f0a..9876101bfc4a 100644 --- a/src/qemu/qemu_migration_params.h +++ b/src/qemu/qemu_migration_params.h @@ -113,6 +113,9 @@ int qemuMigrationParamsDisableTLS(virDomainObjPtr vm, qemuMigrationParamsPtr migParams); =20 +bool +qemuMigrationParamsTLSHostnameIsSet(qemuMigrationParamsPtr migParams); + int qemuMigrationParamsFetch(virQEMUDriverPtr driver, virDomainObjPtr vm, diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 718ac50c0898..ab3bcc761e9a 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -2555,6 +2555,21 @@ qemuMonitorMigrateToHost(qemuMonitorPtr mon, } =20 =20 +int +qemuMonitorMigrateToSocket(qemuMonitorPtr mon, + unsigned int flags, + const char *socketPath) +{ + g_autofree char *uri =3D g_strdup_printf("unix:%s", socketPath); + + VIR_DEBUG("socketPath=3D%s flags=3D0x%x", socketPath, flags); + + QEMU_CHECK_MONITOR(mon); + + return qemuMonitorJSONMigrate(mon, flags, uri); +} + + int qemuMonitorMigrateCancel(qemuMonitorPtr mon) { diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index d20a15c202db..3e4ef7e821a6 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -853,6 +853,10 @@ int qemuMonitorMigrateToHost(qemuMonitorPtr mon, const char *hostname, int port); =20 +int qemuMonitorMigrateToSocket(qemuMonitorPtr mon, + unsigned int flags, + const char *socketPath); + int qemuMonitorMigrateCancel(qemuMonitorPtr mon); =20 int qemuMonitorGetDumpGuestMemoryCapability(qemuMonitorPtr mon, --=20 2.28.0 From nobody Sun May 5 03:36:19 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; 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=1599209973; cv=none; d=zohomail.com; s=zohoarc; b=fDpFEwCFSy9a+b4k1Vvjyo6bCe5yYI2QnQpK2szzn78Z+nt6eIA39DNSa06q/VD0wqJlzBsb2LXapki31IEo0ZcAw29YwpiGCYeIOKWWkmejx2Rkpxs+4dnsRyr66C7APWKhDmtnpnAncNjwZp/FQThJ/2XaTwBmlYQHIbQdqEI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599209973; 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=LArSnVhkJqkyuVpqcRuAVzBdm5NwB/BeqdMk3bGQU6A=; b=ajTC1x0JHh8YDwAxfFG5w+5MC+p47yx1E7OGnRGrKZIw4VGFQDZSf1DfCIHtXmqghxYKcRKTdv5kCJftb8AM/UzOtIXfT15CCVA6uyYTfu1X6AYMSCjfakoDmxpHF9GRdm3U8LMLxuvJMe0+rPKDa4VamGVt/biSk08UulUIRAE= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 15992099730331017.6119629423578; Fri, 4 Sep 2020 01:59:33 -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-335-D_GMF4tGNIWxI-2Mo04Yfw-1; Fri, 04 Sep 2020 04:59:30 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F040A1074650; Fri, 4 Sep 2020 08:59:24 +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 C6578811B1; Fri, 4 Sep 2020 08:59:23 +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 AAD89972E4; Fri, 4 Sep 2020 08:59:20 +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 0848xJ0o003507 for ; Fri, 4 Sep 2020 04:59:19 -0400 Received: by smtp.corp.redhat.com (Postfix) id 4936A1001B2B; Fri, 4 Sep 2020 08:59:19 +0000 (UTC) Received: from carol.localdomain (unknown [10.43.2.39]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1B3D81002D52 for ; Fri, 4 Sep 2020 08:59:16 +0000 (UTC) Received: from carol.redhat.com (carol.k8r.cz [127.0.0.1]) by carol.localdomain (Postfix) with ESMTP id 16475C200C3 for ; Fri, 4 Sep 2020 10:59:15 +0200 (CEST) X-MC-Unique: D_GMF4tGNIWxI-2Mo04Yfw-1 From: Martin Kletzander To: libvir-list@redhat.com Subject: [PATCH v3 2/2] news: qemu: Allow migration over UNIX sockets Date: Fri, 4 Sep 2020 10:58:46 +0200 Message-Id: <4c5d44b756a51ce5546681386dc80dfae6346501.1599208676.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.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.15 X-Mimecast-Spam-Score: 0.0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Martin Kletzander Reviewed-by: Jiri Denemark --- NEWS.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/NEWS.rst b/NEWS.rst index 05d04b29e1c8..008a6358c648 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -22,6 +22,12 @@ v6.8.0 (unreleased) =20 * **Improvements** =20 + * qemu: Allow migration over UNIX sockets + + QEMU migration can now be performed completely over UNIX sockets. This= is + useful for containerised scenarios and can be used in both peer2peer a= nd + direct migrations. + * **Bug fixes** =20 =20 --=20 2.28.0