SHA256
1
0
forked from pool/libvirt

- Xen: Fix connection when host uses modular daemons

d677de9d-libxl-fix-driver-name-check.patch,
  d218a9c2-libxl-xen-driver-tables.patch,
  836ea91d-libxl-xenlight-internal.patch,
  57687260-xen-doc-improvements.patch
  boo#1171113

OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=826
This commit is contained in:
James Fehlig 2020-05-06 20:52:55 +00:00 committed by Git OBS Bridge
parent 63e8f8f9af
commit 328c392914
7 changed files with 291 additions and 3 deletions

View File

@ -0,0 +1,55 @@
commit 5768726093a86028b517975afc6762bf57edbf4a
Author: Jim Fehlig <jfehlig@suse.com>
Date: Mon May 4 15:52:34 2020 -0600
docs: Xen improvements
In formatdomain, using 'libxl' and 'xen' is redundant since they now
both refer to the same driver. 'xen' predates 'libxl' and unambiguously
identifies the Xen hypervisor, so drop the use of 'libxl'.
In aclpolkit, the connection URI was erroneously identified as 'libxl'
and the name 'xenlight'. Change the URI to 'xen' and driver name to 'Xen'.
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Index: libvirt-6.3.0/docs/aclpolkit.html.in
===================================================================
--- libvirt-6.3.0.orig/docs/aclpolkit.html.in
+++ libvirt-6.3.0/docs/aclpolkit.html.in
@@ -342,8 +342,8 @@
<td>interface</td>
</tr>
<tr>
- <td>libxl</td>
- <td>xenlight</td>
+ <td>xen</td>
+ <td>Xen</td>
</tr>
<tr>
<td>lxc</td>
Index: libvirt-6.3.0/docs/formatdomain.html.in
===================================================================
--- libvirt-6.3.0.orig/docs/formatdomain.html.in
+++ libvirt-6.3.0/docs/formatdomain.html.in
@@ -2533,8 +2533,8 @@
The <code>name</code> attribute selects which timer is
being modified, and can be one of
"platform" (currently unsupported),
- "hpet" (libxl, xen, qemu, lxc), "kvmclock" (qemu),
- "pit" (qemu), "rtc" (qemu, lxc), "tsc" (libxl, qemu -
+ "hpet" (xen, qemu, lxc), "kvmclock" (qemu),
+ "pit" (qemu), "rtc" (qemu, lxc), "tsc" (xen, qemu -
<span class="since">since 3.2.0</span>), "hypervclock"
(qemu - <span class="since">since 1.2.2</span>) or
"armvtimer" (qemu - <span class="since">since 6.1.0</span>).
@@ -7518,7 +7518,7 @@ qemu-kvm -net nic,model=? /dev/null
<p>
You can provide the amount of video memory in kibibytes (blocks of
1024 bytes) using <code>vram</code>. This is supported only for guest
- type of "libxl", "vz", "qemu", "vbox", "vmx" and "xen". If no
+ type of "vz", "qemu", "vbox", "vmx" and "xen". If no
value is provided the default is used. If the size is not a power of
two it will be rounded to closest one.
</p>

View File

@ -0,0 +1,130 @@
commit 836ea91d4ed174f2bb65ef894a8d6daf0675e743
Author: Jim Fehlig <jfehlig@suse.com>
Date: Mon May 4 15:20:37 2020 -0600
libxl: Clarify that 'xenlight' should only be used internally
The libxl driver has suffered an identity crisis since its introduction.
It took on the name 'libxl' since at the time libvirt already contained
a 'xen' driver for the old Xen toolstack implementation. 'libxl' is short
for libxenlight, which is often called xenlight. Unfortunately all forms
of the name are used in the libxl driver.
The only remaining use of the 'xenlight' form is when interacting with
the host device manager, which is difficult to change since it would
cause problems when upgrading the driver.
Rename the #define to make it clear the 'xenlight' form is internal and
add a comment describing why the name exists and that its use should be
discouraged.
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Index: libvirt-6.3.0/src/libxl/libxl_conf.h
===================================================================
--- libvirt-6.3.0.orig/src/libxl/libxl_conf.h
+++ libvirt-6.3.0/src/libxl/libxl_conf.h
@@ -39,7 +39,12 @@
#include "libxl_logger.h"
#define LIBXL_DRIVER_EXTERNAL_NAME "Xen"
-#define LIBXL_DRIVER_NAME "xenlight"
+/*
+ * We are stuck with the 'xenlight' name since it is used by the hostdev
+ * manager. Changing it would break management of any host devices previously
+ * managed under the name 'xenlight'.
+ */
+#define LIBXL_DRIVER_INTERNAL_NAME "xenlight"
#define LIBXL_VNC_PORT_MIN 5900
#define LIBXL_VNC_PORT_MAX 65535
Index: libvirt-6.3.0/src/libxl/libxl_domain.c
===================================================================
--- libvirt-6.3.0.orig/src/libxl/libxl_domain.c
+++ libvirt-6.3.0/src/libxl/libxl_domain.c
@@ -873,7 +873,7 @@ libxlDomainCleanup(libxlDriverPrivatePtr
VIR_FREE(xml);
}
- virHostdevReAttachDomainDevices(hostdev_mgr, LIBXL_DRIVER_NAME,
+ virHostdevReAttachDomainDevices(hostdev_mgr, LIBXL_DRIVER_INTERNAL_NAME,
vm->def, hostdev_flags, NULL);
VIR_FREE(priv->lockState);
@@ -1370,7 +1370,7 @@ libxlDomainStart(libxlDriverPrivatePtr d
if (cfg->autoballoon && libxlDomainFreeMem(cfg->ctx, &d_config) < 0)
goto cleanup_dom;
- if (virHostdevPrepareDomainDevices(hostdev_mgr, LIBXL_DRIVER_NAME,
+ if (virHostdevPrepareDomainDevices(hostdev_mgr, LIBXL_DRIVER_INTERNAL_NAME,
vm->def, hostdev_flags) < 0)
goto cleanup_dom;
Index: libvirt-6.3.0/src/libxl/libxl_driver.c
===================================================================
--- libvirt-6.3.0.orig/src/libxl/libxl_driver.c
+++ libvirt-6.3.0/src/libxl/libxl_driver.c
@@ -431,7 +431,7 @@ libxlReconnectDomain(virDomainObjPtr vm,
libxlLoggerOpenFile(cfg->logger, vm->def->id, vm->def->name, NULL);
/* Update hostdev state */
- if (virHostdevUpdateActiveDomainDevices(hostdev_mgr, LIBXL_DRIVER_NAME,
+ if (virHostdevUpdateActiveDomainDevices(hostdev_mgr, LIBXL_DRIVER_INTERNAL_NAME,
vm->def, hostdev_flags) < 0)
goto error;
@@ -3127,7 +3127,7 @@ libxlDomainAttachHostPCIDevice(libxlDriv
if (VIR_REALLOC_N(vm->def->hostdevs, vm->def->nhostdevs + 1) < 0)
goto cleanup;
- if (virHostdevPreparePCIDevices(hostdev_mgr, LIBXL_DRIVER_NAME,
+ if (virHostdevPreparePCIDevices(hostdev_mgr, LIBXL_DRIVER_INTERNAL_NAME,
vm->def->name, vm->def->uuid,
&hostdev, 1, 0) < 0)
goto cleanup;
@@ -3149,7 +3149,7 @@ libxlDomainAttachHostPCIDevice(libxlDriv
goto cleanup;
error:
- virHostdevReAttachPCIDevices(hostdev_mgr, LIBXL_DRIVER_NAME,
+ virHostdevReAttachPCIDevices(hostdev_mgr, LIBXL_DRIVER_INTERNAL_NAME,
vm->def->name, &hostdev, 1, NULL);
cleanup:
@@ -3264,7 +3264,7 @@ libxlDomainAttachHostUSBDevice(libxlDriv
if (VIR_REALLOC_N(vm->def->hostdevs, vm->def->nhostdevs + 1) < 0)
goto cleanup;
- if (virHostdevPrepareUSBDevices(hostdev_mgr, LIBXL_DRIVER_NAME,
+ if (virHostdevPrepareUSBDevices(hostdev_mgr, LIBXL_DRIVER_INTERNAL_NAME,
vm->def->name, &hostdev, 1, 0) < 0)
goto cleanup;
@@ -3284,7 +3284,7 @@ libxlDomainAttachHostUSBDevice(libxlDriv
goto cleanup;
reattach:
- virHostdevReAttachUSBDevices(hostdev_mgr, LIBXL_DRIVER_NAME,
+ virHostdevReAttachUSBDevices(hostdev_mgr, LIBXL_DRIVER_INTERNAL_NAME,
vm->def->name, &hostdev, 1);
cleanup:
@@ -3689,7 +3689,7 @@ libxlDomainDetachHostPCIDevice(libxlDriv
virDomainHostdevRemove(vm->def, idx);
- virHostdevReAttachPCIDevices(hostdev_mgr, LIBXL_DRIVER_NAME,
+ virHostdevReAttachPCIDevices(hostdev_mgr, LIBXL_DRIVER_INTERNAL_NAME,
vm->def->name, &hostdev, 1, NULL);
ret = 0;
@@ -3811,7 +3811,7 @@ libxlDomainDetachHostUSBDevice(libxlDriv
virDomainHostdevRemove(vm->def, idx);
- virHostdevReAttachUSBDevices(hostdev_mgr, LIBXL_DRIVER_NAME,
+ virHostdevReAttachUSBDevices(hostdev_mgr, LIBXL_DRIVER_INTERNAL_NAME,
vm->def->name, &hostdev, 1);
ret = 0;

View File

@ -0,0 +1,58 @@
commit d218a9c263190681aa8ee7f0ec5f3c298339d635
Author: Jim Fehlig <jfehlig@suse.com>
Date: Mon May 4 14:51:32 2020 -0600
libxl: Use the name 'Xen' in driver tables
The libxl driver declares its name as 'Xen' through the public
virConnectGetType() API. In the virHypervisorDriver table the name is
set to 'xenlight'. To add more confusion, the name is set to 'LIBXL'
in the virStateDriver. For consistency, use the same name in the driver
tables as reported in the public virConnectGetType() API.
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Index: libvirt-6.3.0/src/libxl/libxl_conf.h
===================================================================
--- libvirt-6.3.0.orig/src/libxl/libxl_conf.h
+++ libvirt-6.3.0/src/libxl/libxl_conf.h
@@ -38,6 +38,7 @@
#include "libxl_capabilities.h"
#include "libxl_logger.h"
+#define LIBXL_DRIVER_EXTERNAL_NAME "Xen"
#define LIBXL_DRIVER_NAME "xenlight"
#define LIBXL_VNC_PORT_MIN 5900
#define LIBXL_VNC_PORT_MAX 65535
Index: libvirt-6.3.0/src/libxl/libxl_driver.c
===================================================================
--- libvirt-6.3.0.orig/src/libxl/libxl_driver.c
+++ libvirt-6.3.0/src/libxl/libxl_driver.c
@@ -911,7 +911,7 @@ libxlConnectGetType(virConnectPtr conn)
if (virConnectGetTypeEnsureACL(conn) < 0)
return NULL;
- return "Xen";
+ return LIBXL_DRIVER_EXTERNAL_NAME;
}
static int
@@ -6608,7 +6608,7 @@ libxlDomainGetMetadata(virDomainPtr dom,
}
static virHypervisorDriver libxlHypervisorDriver = {
- .name = LIBXL_DRIVER_NAME,
+ .name = LIBXL_DRIVER_EXTERNAL_NAME,
.connectURIProbe = libxlConnectURIProbe,
.connectOpen = libxlConnectOpen, /* 0.9.0 */
.connectClose = libxlConnectClose, /* 0.9.0 */
@@ -6732,7 +6732,7 @@ static virConnectDriver libxlConnectDriv
};
static virStateDriver libxlStateDriver = {
- .name = "LIBXL",
+ .name = LIBXL_DRIVER_EXTERNAL_NAME,
.stateInitialize = libxlStateInitialize,
.stateCleanup = libxlStateCleanup,
.stateReload = libxlStateReload,

View File

@ -0,0 +1,27 @@
commit d677de9d567e3e87be295b91723457b461345caa
Author: Daniel P. Berrangé <berrange@redhat.com>
Date: Mon May 4 17:41:46 2020 +0100
remote: fix driver name check for libxl driver
The virConnectGetType() returns "Xen" for libxl, not "LIBXL".
This prevents users opening a connection to the libxl driver when using
the modular daemons.
Reviewed-by: Jim Fehlig <jfehlig@suse.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Index: libvirt-6.3.0/src/remote/remote_daemon_dispatch.c
===================================================================
--- libvirt-6.3.0.orig/src/remote/remote_daemon_dispatch.c
+++ libvirt-6.3.0/src/remote/remote_daemon_dispatch.c
@@ -2111,7 +2111,7 @@ remoteDispatchConnectOpen(virNetServerPt
VIR_DEBUG("Primary driver type is '%s'", type);
if (STREQ(type, "QEMU") ||
- STREQ(type, "LIBXL") ||
+ STREQ(type, "Xen") ||
STREQ(type, "LXC") ||
STREQ(type, "VBOX") ||
STREQ(type, "bhyve") ||

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Wed May 6 20:43:16 UTC 2020 - James Fehlig <jfehlig@suse.com>
- Xen: Fix connection when host uses modular daemons
d677de9d-libxl-fix-driver-name-check.patch,
d218a9c2-libxl-xen-driver-tables.patch,
836ea91d-libxl-xenlight-internal.patch,
57687260-xen-doc-improvements.patch
boo#1171113
-------------------------------------------------------------------
Wed May 6 01:40:32 UTC 2020 - James Fehlig <jfehlig@suse.com>

View File

@ -338,6 +338,10 @@ Source6: libvirtd-relocation-server.xml
Source99: baselibs.conf
Source100: %{name}-rpmlintrc
# Upstream patches
Patch0: d677de9d-libxl-fix-driver-name-check.patch
Patch1: d218a9c2-libxl-xen-driver-tables.patch
Patch2: 836ea91d-libxl-xenlight-internal.patch
Patch3: 57687260-xen-doc-improvements.patch
# Patches pending upstream review
Patch100: libxl-dom-reset.patch
Patch101: network-don-t-use-dhcp-authoritative-on-static-netwo.patch
@ -873,6 +877,10 @@ libvirt plugin for NSS for translating domain names into IP addresses.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch100 -p1
%patch101 -p1
%patch150 -p1

View File

@ -316,7 +316,7 @@ Index: libvirt-6.3.0/tools/virsh-domain.c
===================================================================
--- libvirt-6.3.0.orig/tools/virsh-domain.c
+++ libvirt-6.3.0/tools/virsh-domain.c
@@ -10722,6 +10722,22 @@ static const vshCmdOptDef opts_migrate[]
@@ -10721,6 +10721,22 @@ static const vshCmdOptDef opts_migrate[]
.type = VSH_OT_STRING,
.help = N_("override the destination host name used for TLS verification")
},
@ -339,7 +339,7 @@ Index: libvirt-6.3.0/tools/virsh-domain.c
{.name = NULL}
};
@@ -10743,6 +10759,7 @@ doMigrate(void *opaque)
@@ -10742,6 +10758,7 @@ doMigrate(void *opaque)
unsigned long long ullOpt = 0;
int rv;
virConnectPtr dconn = data->dconn;
@ -347,7 +347,7 @@ Index: libvirt-6.3.0/tools/virsh-domain.c
#ifndef WIN32
sigset_t sigmask, oldsigmask;
@@ -10865,6 +10882,27 @@ doMigrate(void *opaque)
@@ -10864,6 +10881,27 @@ doMigrate(void *opaque)
goto save_error;
}