update to libvirt 6.3.0 final
OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=825
This commit is contained in:
parent
06eb24a4dd
commit
63e8f8f9af
@ -18,10 +18,10 @@ them.
|
||||
create mode 100644 src/conf/domain_stats.c
|
||||
create mode 100644 src/conf/domain_stats.h
|
||||
|
||||
Index: libvirt-6.2.0/src/conf/domain_stats.c
|
||||
Index: libvirt-6.3.0/src/conf/domain_stats.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-6.2.0/src/conf/domain_stats.c
|
||||
+++ libvirt-6.3.0/src/conf/domain_stats.c
|
||||
@@ -0,0 +1,119 @@
|
||||
+/*
|
||||
+ * domain_stats.c: domain stats extraction helpers
|
||||
@ -142,10 +142,10 @@ Index: libvirt-6.2.0/src/conf/domain_stats.c
|
||||
+}
|
||||
+
|
||||
+#undef STATS_ADD_NET_PARAM
|
||||
Index: libvirt-6.2.0/src/conf/domain_stats.h
|
||||
Index: libvirt-6.3.0/src/conf/domain_stats.h
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-6.2.0/src/conf/domain_stats.h
|
||||
+++ libvirt-6.3.0/src/conf/domain_stats.h
|
||||
@@ -0,0 +1,62 @@
|
||||
+/*
|
||||
+ * domain_stats.h: domain stats extraction helpers
|
||||
@ -209,11 +209,11 @@ Index: libvirt-6.2.0/src/conf/domain_stats.h
|
||||
+ virTypedParamListPtr params);
|
||||
+
|
||||
+#endif /* __DOMAIN_STATS_H */
|
||||
Index: libvirt-6.2.0/src/libvirt_private.syms
|
||||
Index: libvirt-6.3.0/src/libvirt_private.syms
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libvirt_private.syms
|
||||
+++ libvirt-6.2.0/src/libvirt_private.syms
|
||||
@@ -727,6 +727,9 @@ virDomainConfNWFilterInstantiate;
|
||||
--- libvirt-6.3.0.orig/src/libvirt_private.syms
|
||||
+++ libvirt-6.3.0/src/libvirt_private.syms
|
||||
@@ -732,6 +732,9 @@ virDomainConfNWFilterInstantiate;
|
||||
virDomainConfNWFilterTeardown;
|
||||
virDomainConfVMNWFilterTeardown;
|
||||
|
||||
@ -223,7 +223,7 @@ Index: libvirt-6.2.0/src/libvirt_private.syms
|
||||
|
||||
# conf/interface_conf.h
|
||||
virInterfaceDefFormat;
|
||||
@@ -1753,6 +1756,7 @@ virCgroupGetMemoryUsage;
|
||||
@@ -1763,6 +1766,7 @@ virCgroupGetMemoryUsage;
|
||||
virCgroupGetMemSwapHardLimit;
|
||||
virCgroupGetMemSwapUsage;
|
||||
virCgroupGetPercpuStats;
|
||||
@ -231,10 +231,10 @@ Index: libvirt-6.2.0/src/libvirt_private.syms
|
||||
virCgroupHasController;
|
||||
virCgroupHasEmptyTasks;
|
||||
virCgroupKillPainfully;
|
||||
Index: libvirt-6.2.0/src/qemu/qemu_driver.c
|
||||
Index: libvirt-6.3.0/src/qemu/qemu_driver.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/qemu/qemu_driver.c
|
||||
+++ libvirt-6.2.0/src/qemu/qemu_driver.c
|
||||
--- libvirt-6.3.0.orig/src/qemu/qemu_driver.c
|
||||
+++ libvirt-6.3.0/src/qemu/qemu_driver.c
|
||||
@@ -64,6 +64,7 @@
|
||||
#include "virarptable.h"
|
||||
#include "viruuid.h"
|
||||
@ -243,7 +243,7 @@ Index: libvirt-6.2.0/src/qemu/qemu_driver.c
|
||||
#include "domain_audit.h"
|
||||
#include "domain_cgroup.h"
|
||||
#include "domain_driver.h"
|
||||
@@ -20642,13 +20643,7 @@ qemuDomainGetStatsState(virQEMUDriverPtr
|
||||
@@ -20636,13 +20637,7 @@ qemuDomainGetStatsState(virQEMUDriverPtr
|
||||
virTypedParamListPtr params,
|
||||
unsigned int privflags G_GNUC_UNUSED)
|
||||
{
|
||||
@ -258,7 +258,7 @@ Index: libvirt-6.2.0/src/qemu/qemu_driver.c
|
||||
}
|
||||
|
||||
|
||||
@@ -20951,17 +20946,7 @@ qemuDomainGetStatsCpuCgroup(virDomainObj
|
||||
@@ -20945,17 +20940,7 @@ qemuDomainGetStatsCpuCgroup(virDomainObj
|
||||
if (!priv->cgroup)
|
||||
return 0;
|
||||
|
||||
@ -277,7 +277,7 @@ Index: libvirt-6.2.0/src/qemu/qemu_driver.c
|
||||
}
|
||||
|
||||
|
||||
@@ -21129,76 +21114,15 @@ qemuDomainGetStatsVcpu(virQEMUDriverPtr
|
||||
@@ -21123,76 +21108,15 @@ qemuDomainGetStatsVcpu(virQEMUDriverPtr
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -355,10 +355,10 @@ Index: libvirt-6.2.0/src/qemu/qemu_driver.c
|
||||
|
||||
/* refresh information by opening images on the disk */
|
||||
static int
|
||||
Index: libvirt-6.2.0/src/util/vircgroup.c
|
||||
Index: libvirt-6.3.0/src/util/vircgroup.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/util/vircgroup.c
|
||||
+++ libvirt-6.2.0/src/util/vircgroup.c
|
||||
--- libvirt-6.3.0.orig/src/util/vircgroup.c
|
||||
+++ libvirt-6.3.0/src/util/vircgroup.c
|
||||
@@ -2779,6 +2779,31 @@ virCgroupControllerAvailable(int control
|
||||
return ret;
|
||||
}
|
||||
@ -406,10 +406,10 @@ Index: libvirt-6.2.0/src/util/vircgroup.c
|
||||
int
|
||||
virCgroupNewPartition(const char *path G_GNUC_UNUSED,
|
||||
bool create G_GNUC_UNUSED,
|
||||
Index: libvirt-6.2.0/src/util/vircgroup.h
|
||||
Index: libvirt-6.3.0/src/util/vircgroup.h
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/util/vircgroup.h
|
||||
+++ libvirt-6.2.0/src/util/vircgroup.h
|
||||
--- libvirt-6.3.0.orig/src/util/vircgroup.h
|
||||
+++ libvirt-6.3.0/src/util/vircgroup.h
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
#include "virbitmap.h"
|
||||
@ -425,10 +425,10 @@ Index: libvirt-6.2.0/src/util/vircgroup.h
|
||||
+
|
||||
+int virCgroupGetStatsCpu(virCgroupPtr cgroup,
|
||||
+ virTypedParamListPtr params);
|
||||
Index: libvirt-6.2.0/src/conf/Makefile.inc.am
|
||||
Index: libvirt-6.3.0/src/conf/Makefile.inc.am
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/conf/Makefile.inc.am
|
||||
+++ libvirt-6.2.0/src/conf/Makefile.inc.am
|
||||
--- libvirt-6.3.0.orig/src/conf/Makefile.inc.am
|
||||
+++ libvirt-6.3.0/src/conf/Makefile.inc.am
|
||||
@@ -28,6 +28,8 @@ DOMAIN_CONF_SOURCES = \
|
||||
conf/domain_audit.h \
|
||||
conf/domain_nwfilter.c \
|
||||
|
@ -19,10 +19,10 @@ reworking this patch and submitting it to upstream libvirt.
|
||||
src/libxl/libxl_driver.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 91 insertions(+)
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_driver.c
|
||||
Index: libvirt-6.3.0/src/libxl/libxl_driver.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_driver.c
|
||||
+++ libvirt-6.2.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
|
||||
@@ -5287,6 +5287,96 @@ libxlDomainMemoryStats(virDomainPtr dom,
|
||||
|
||||
#undef LIBXL_SET_MEMSTAT
|
||||
|
@ -9,10 +9,10 @@ them using the existing API.
|
||||
src/lxc/lxc_driver.c | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 138 insertions(+)
|
||||
|
||||
Index: libvirt-6.2.0/src/lxc/lxc_driver.c
|
||||
Index: libvirt-6.3.0/src/lxc/lxc_driver.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/lxc/lxc_driver.c
|
||||
+++ libvirt-6.2.0/src/lxc/lxc_driver.c
|
||||
--- libvirt-6.3.0.orig/src/lxc/lxc_driver.c
|
||||
+++ libvirt-6.3.0/src/lxc/lxc_driver.c
|
||||
@@ -74,6 +74,7 @@
|
||||
#include "netdev_bandwidth_conf.h"
|
||||
#include "virsocket.h"
|
||||
@ -21,7 +21,7 @@ Index: libvirt-6.2.0/src/lxc/lxc_driver.c
|
||||
|
||||
#define VIR_FROM_THIS VIR_FROM_LXC
|
||||
|
||||
@@ -5077,6 +5078,135 @@ lxcDomainHasManagedSaveImage(virDomainPt
|
||||
@@ -5078,6 +5079,135 @@ lxcDomainHasManagedSaveImage(virDomainPt
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -157,7 +157,7 @@ Index: libvirt-6.2.0/src/lxc/lxc_driver.c
|
||||
|
||||
/* Function Tables */
|
||||
static virHypervisorDriver lxcHypervisorDriver = {
|
||||
@@ -5174,6 +5304,7 @@ static virHypervisorDriver lxcHypervisor
|
||||
@@ -5175,6 +5305,7 @@ static virHypervisorDriver lxcHypervisor
|
||||
.nodeGetFreePages = lxcNodeGetFreePages, /* 1.2.6 */
|
||||
.nodeAllocPages = lxcNodeAllocPages, /* 1.2.9 */
|
||||
.domainHasManagedSaveImage = lxcDomainHasManagedSaveImage, /* 1.2.13 */
|
||||
|
@ -1,81 +0,0 @@
|
||||
commit 34077c1b8b62bb61e76b908d0959216da0b3185f
|
||||
Author: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
|
||||
Date: Tue Apr 14 04:37:07 2020 +0200
|
||||
|
||||
tests: check e820_host option handling
|
||||
|
||||
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
|
||||
Reviewed-by: Jim Fehlig <jfehlig@suse.com>
|
||||
|
||||
Index: libvirt-6.2.0/tests/xlconfigdata/test-paravirt-e820_host.cfg
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-6.2.0/tests/xlconfigdata/test-paravirt-e820_host.cfg
|
||||
@@ -0,0 +1,13 @@
|
||||
+name = "XenGuest1"
|
||||
+uuid = "45b60f51-88a9-47a8-a3b3-5e66d71b2283"
|
||||
+maxmem = 512
|
||||
+memory = 512
|
||||
+vcpus = 4
|
||||
+e820_host = 1
|
||||
+localtime = 0
|
||||
+on_poweroff = "preserve"
|
||||
+on_reboot = "restart"
|
||||
+on_crash = "preserve"
|
||||
+vif = [ "mac=5a:36:0e:be:00:09" ]
|
||||
+bootloader = "/usr/bin/pygrub"
|
||||
+disk = [ "format=qcow2,vdev=xvda,access=rw,backendtype=qdisk,target=/var/lib/xen/images/debian/disk.qcow2" ]
|
||||
Index: libvirt-6.2.0/tests/xlconfigdata/test-paravirt-e820_host.xml
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-6.2.0/tests/xlconfigdata/test-paravirt-e820_host.xml
|
||||
@@ -0,0 +1,37 @@
|
||||
+<domain type='xen'>
|
||||
+ <name>XenGuest1</name>
|
||||
+ <uuid>45b60f51-88a9-47a8-a3b3-5e66d71b2283</uuid>
|
||||
+ <memory unit='KiB'>524288</memory>
|
||||
+ <currentMemory unit='KiB'>524288</currentMemory>
|
||||
+ <vcpu placement='static'>4</vcpu>
|
||||
+ <bootloader>/usr/bin/pygrub</bootloader>
|
||||
+ <os>
|
||||
+ <type arch='x86_64' machine='xenpv'>linux</type>
|
||||
+ </os>
|
||||
+ <features>
|
||||
+ <xen>
|
||||
+ <e820_host state='on'/>
|
||||
+ </xen>
|
||||
+ </features>
|
||||
+ <clock offset='utc' adjustment='reset'/>
|
||||
+ <on_poweroff>preserve</on_poweroff>
|
||||
+ <on_reboot>restart</on_reboot>
|
||||
+ <on_crash>preserve</on_crash>
|
||||
+ <devices>
|
||||
+ <disk type='file' device='disk'>
|
||||
+ <driver name='qemu' type='qcow2'/>
|
||||
+ <source file='/var/lib/xen/images/debian/disk.qcow2'/>
|
||||
+ <target dev='xvda' bus='xen'/>
|
||||
+ </disk>
|
||||
+ <controller type='xenbus' index='0'/>
|
||||
+ <interface type='ethernet'>
|
||||
+ <mac address='5a:36:0e:be:00:09'/>
|
||||
+ </interface>
|
||||
+ <console type='pty'>
|
||||
+ <target type='xen' port='0'/>
|
||||
+ </console>
|
||||
+ <input type='mouse' bus='xen'/>
|
||||
+ <input type='keyboard' bus='xen'/>
|
||||
+ <memballoon model='xen'/>
|
||||
+ </devices>
|
||||
+</domain>
|
||||
Index: libvirt-6.2.0/tests/xlconfigtest.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tests/xlconfigtest.c
|
||||
+++ libvirt-6.2.0/tests/xlconfigtest.c
|
||||
@@ -300,6 +300,7 @@ mymain(void)
|
||||
DO_TEST("vif-multi-ip");
|
||||
DO_TEST("usb");
|
||||
DO_TEST("usbctrl");
|
||||
+ DO_TEST("paravirt-e820_host");
|
||||
|
||||
testXLFreeDriver(driver);
|
||||
|
@ -1,34 +0,0 @@
|
||||
commit 5749395bfd03fcdb55a8be6a69637a2acaaad2c9
|
||||
Author: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
|
||||
Date: Tue Apr 14 04:37:05 2020 +0200
|
||||
|
||||
libxl: make use of e820_host feature
|
||||
|
||||
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
|
||||
Reviewed-by: Jim Fehlig <jfehlig@suse.com>
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
@@ -692,6 +692,20 @@ libxlMakeDomBuildInfo(virDomainDefPtr de
|
||||
b_info->u.pv.kernel = g_strdup(def->os.kernel);
|
||||
}
|
||||
b_info->u.pv.ramdisk = g_strdup(def->os.initrd);
|
||||
+
|
||||
+ if (def->features[VIR_DOMAIN_FEATURE_XEN] == VIR_TRISTATE_SWITCH_ON) {
|
||||
+ switch ((virTristateSwitch) def->xen_features[VIR_DOMAIN_XEN_E820_HOST]) {
|
||||
+ case VIR_TRISTATE_SWITCH_ON:
|
||||
+ libxl_defbool_set(&b_info->u.pv.e820_host, true);
|
||||
+ break;
|
||||
+ case VIR_TRISTATE_SWITCH_OFF:
|
||||
+ libxl_defbool_set(&b_info->u.pv.e820_host, false);
|
||||
+ break;
|
||||
+ case VIR_TRISTATE_SWITCH_ABSENT:
|
||||
+ case VIR_TRISTATE_SWITCH_LAST:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
/* only the 'xen' balloon device model is supported */
|
@ -1,120 +0,0 @@
|
||||
commit 8e669b382c3533793356261c6d748df56162a2c6
|
||||
Author: Jim Fehlig <jfehlig@suse.com>
|
||||
Date: Tue Apr 7 16:37:09 2020 -0600
|
||||
|
||||
conf: Add a new xenbus controller option for event channels
|
||||
|
||||
Event channels are like PV interrupts and in conjuction with grant frames
|
||||
form a data transfer mechanism for PV drivers. They are also used for
|
||||
inter-processor interrupts. Guests with a large number of vcpus and/or
|
||||
many PV devices many need to increase the maximum default value of 1023.
|
||||
For this reason the native Xen config format supports the
|
||||
'max_event_channels' setting. See xl.cfg(5) man page for more details.
|
||||
|
||||
Similar to the existing maxGrantFrames option, add a new xenbus controller
|
||||
option 'maxEventChannels', allowing to adjust the maximum value via libvirt.
|
||||
|
||||
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
|
||||
Index: libvirt-6.2.0/docs/formatdomain.html.in
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/docs/formatdomain.html.in
|
||||
+++ libvirt-6.2.0/docs/formatdomain.html.in
|
||||
@@ -4416,7 +4416,7 @@
|
||||
<driver iothread='4'/>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
|
||||
</controller>
|
||||
- <controller type='xenbus' maxGrantFrames='64'/>
|
||||
+ <controller type='xenbus' maxGrantFrames='64' maxEventChannels='2047'/>
|
||||
...
|
||||
</devices>
|
||||
...</pre>
|
||||
@@ -4476,7 +4476,11 @@
|
||||
<dd><span class="since">Since 5.2.0</span>, the <code>xenbus</code>
|
||||
controller has an optional attribute <code>maxGrantFrames</code>,
|
||||
which specifies the maximum number of grant frames the controller
|
||||
- makes available for connected devices.</dd>
|
||||
+ makes available for connected devices.
|
||||
+ <span class="since">Since 6.3.0</span>, the xenbus controller
|
||||
+ supports the optional <code>maxEventChannels</code> attribute,
|
||||
+ which specifies maximum number of event channels (PV interrupts)
|
||||
+ that can be used by the guest.</dd>
|
||||
</dl>
|
||||
|
||||
<p>
|
||||
Index: libvirt-6.2.0/docs/schemas/domaincommon.rng
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/docs/schemas/domaincommon.rng
|
||||
+++ libvirt-6.2.0/docs/schemas/domaincommon.rng
|
||||
@@ -2548,6 +2548,11 @@
|
||||
<ref name="unsignedInt"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
+ <optional>
|
||||
+ <attribute name="maxEventChannels">
|
||||
+ <ref name="unsignedInt"/>
|
||||
+ </attribute>
|
||||
+ </optional>
|
||||
</group>
|
||||
</choice>
|
||||
<optional>
|
||||
Index: libvirt-6.2.0/src/conf/domain_conf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/conf/domain_conf.c
|
||||
+++ libvirt-6.2.0/src/conf/domain_conf.c
|
||||
@@ -2245,6 +2245,7 @@ virDomainControllerDefNew(virDomainContr
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS:
|
||||
def->opts.xenbusopts.maxGrantFrames = -1;
|
||||
+ def->opts.xenbusopts.maxEventChannels = -1;
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_TYPE_IDE:
|
||||
case VIR_DOMAIN_CONTROLLER_TYPE_FDC:
|
||||
@@ -11337,6 +11338,7 @@ virDomainControllerDefParseXML(virDomain
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: {
|
||||
g_autofree char *gntframes = virXMLPropString(node, "maxGrantFrames");
|
||||
+ g_autofree char *eventchannels = virXMLPropString(node, "maxEventChannels");
|
||||
|
||||
if (gntframes) {
|
||||
int r = virStrToLong_i(gntframes, NULL, 10,
|
||||
@@ -11347,6 +11349,15 @@ virDomainControllerDefParseXML(virDomain
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
+ if (eventchannels) {
|
||||
+ int r = virStrToLong_i(eventchannels, NULL, 10,
|
||||
+ &def->opts.xenbusopts.maxEventChannels);
|
||||
+ if (r != 0 || def->opts.xenbusopts.maxEventChannels < 0) {
|
||||
+ virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
+ _("Invalid maxEventChannels: %s"), eventchannels);
|
||||
+ goto error;
|
||||
+ }
|
||||
+ }
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -25267,6 +25278,10 @@ virDomainControllerDefFormat(virBufferPt
|
||||
virBufferAsprintf(&attrBuf, " maxGrantFrames='%d'",
|
||||
def->opts.xenbusopts.maxGrantFrames);
|
||||
}
|
||||
+ if (def->opts.xenbusopts.maxEventChannels != -1) {
|
||||
+ virBufferAsprintf(&attrBuf, " maxEventChannels='%d'",
|
||||
+ def->opts.xenbusopts.maxEventChannels);
|
||||
+ }
|
||||
break;
|
||||
|
||||
default:
|
||||
Index: libvirt-6.2.0/src/conf/domain_conf.h
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/conf/domain_conf.h
|
||||
+++ libvirt-6.2.0/src/conf/domain_conf.h
|
||||
@@ -730,6 +730,7 @@ struct _virDomainUSBControllerOpts {
|
||||
|
||||
struct _virDomainXenbusControllerOpts {
|
||||
int maxGrantFrames; /* -1 == undef */
|
||||
+ int maxEventChannels; /* -1 == undef */
|
||||
};
|
||||
|
||||
/* Stores the virtual disk controller configuration */
|
@ -1,40 +0,0 @@
|
||||
commit 93b15ba0f2eb7858f8d88a5fd7354bd48bb7fc8d
|
||||
Author: Lin Ma <lma@suse.com>
|
||||
Date: Thu Apr 16 12:44:51 2020 +0800
|
||||
|
||||
qemu: fix hang in p2p + xbzrle compression + parallel migration
|
||||
|
||||
When we do parallel migration, The multifd-channels migration parameter
|
||||
needs to be set on the destination side as well before incoming migration
|
||||
URI, unless we accept the default number of connections(2).
|
||||
|
||||
Usually, This can be correctly handled by libvirtd. But in this case if
|
||||
we use p2p + xbzrle compression without parameter '--comp-xbzrle-cache',
|
||||
qemuMigrationParamsDump returns too early, The corresponding migration
|
||||
parameter will not be set on the destination side, It results QEMU hangs.
|
||||
|
||||
Reproducer:
|
||||
virsh migrate --live --p2p --comp-methods xbzrle \
|
||||
--parallel --parallel-connections 3 GUEST qemu+ssh://dsthost/system
|
||||
|
||||
or
|
||||
|
||||
virsh migrate --live --p2p --compressed \
|
||||
--parallel --parallel-connections 3 GUEST qemu+ssh://dsthost/system
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.com>
|
||||
Message-Id: <20200416044451.21134-1-lma@suse.com>
|
||||
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
|
||||
|
||||
Index: libvirt-6.0.0/src/qemu/qemu_migration_params.c
|
||||
===================================================================
|
||||
--- libvirt-6.0.0.orig/src/qemu/qemu_migration_params.c
|
||||
+++ libvirt-6.0.0/src/qemu/qemu_migration_params.c
|
||||
@@ -630,7 +630,6 @@ qemuMigrationParamsDump(qemuMigrationPar
|
||||
if (migParams->compMethods == 1ULL << QEMU_MIGRATION_COMPRESS_XBZRLE &&
|
||||
!migParams->params[QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE].set) {
|
||||
*flags |= VIR_MIGRATE_COMPRESSED;
|
||||
- return 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < QEMU_MIGRATION_COMPRESS_LAST; ++i) {
|
@ -1,41 +0,0 @@
|
||||
commit 9529e0077a3f9002d6bc7f5504ca4583e5d985f1
|
||||
Author: Jim Fehlig <jfehlig@suse.com>
|
||||
Date: Wed Apr 15 17:18:25 2020 -0600
|
||||
|
||||
libxl: make use of passthrough hypervisor feature
|
||||
|
||||
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
@@ -158,6 +158,27 @@ libxlMakeDomCreateInfo(libxl_ctx *ctx,
|
||||
c_info->type = LIBXL_DOMAIN_TYPE_PV;
|
||||
}
|
||||
|
||||
+#ifdef LIBXL_HAVE_CREATEINFO_PASSTHROUGH
|
||||
+ if (def->features[VIR_DOMAIN_FEATURE_XEN] == VIR_TRISTATE_SWITCH_ON) {
|
||||
+ switch ((virTristateSwitch) def->xen_features[VIR_DOMAIN_XEN_PASSTHROUGH]) {
|
||||
+ case VIR_TRISTATE_SWITCH_ON:
|
||||
+ if (def->xen_passthrough_mode == VIR_DOMAIN_XEN_PASSTHROUGH_MODE_SYNC_PT)
|
||||
+ c_info->passthrough = LIBXL_PASSTHROUGH_SYNC_PT;
|
||||
+ else if (def->xen_passthrough_mode == VIR_DOMAIN_XEN_PASSTHROUGH_MODE_SHARE_PT)
|
||||
+ c_info->passthrough = LIBXL_PASSTHROUGH_SHARE_PT;
|
||||
+ else
|
||||
+ c_info->passthrough = LIBXL_PASSTHROUGH_ENABLED;
|
||||
+ break;
|
||||
+ case VIR_TRISTATE_SWITCH_OFF:
|
||||
+ c_info->passthrough = LIBXL_PASSTHROUGH_DISABLED;
|
||||
+ break;
|
||||
+ case VIR_TRISTATE_SWITCH_ABSENT:
|
||||
+ case VIR_TRISTATE_SWITCH_LAST:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
c_info->name = g_strdup(def->name);
|
||||
|
||||
if (def->nseclabels &&
|
@ -1,210 +0,0 @@
|
||||
commit 967f4eebdcfed014fb8ad4569e9a04cdc731e9a6
|
||||
Author: Jim Fehlig <jfehlig@suse.com>
|
||||
Date: Tue Apr 7 17:33:26 2020 -0600
|
||||
|
||||
xenconfig: Add support for max_event_channels
|
||||
|
||||
Add support in the domXML<->native config converter for max_event_channels.
|
||||
The parser and formater functions for max_grant_frames were reworked to
|
||||
also parse max_event_channels. In doing so the xenbus controller is added
|
||||
earlier in the config parsing, requiring a small adjustment to one of the
|
||||
existing tests. Include a new test for the event channel conversion.
|
||||
|
||||
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/xen_xl.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/xen_xl.c
|
||||
+++ libvirt-6.2.0/src/libxl/xen_xl.c
|
||||
@@ -597,19 +597,12 @@ xenParseXLVnuma(virConfPtr conf,
|
||||
}
|
||||
#endif
|
||||
|
||||
-#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS
|
||||
static int
|
||||
-xenParseXLGntLimits(virConfPtr conf, virDomainDefPtr def)
|
||||
+xenParseXLXenbusLimits(virConfPtr conf, virDomainDefPtr def)
|
||||
{
|
||||
- unsigned long max_gntframes;
|
||||
int ctlr_idx;
|
||||
virDomainControllerDefPtr xenbus_ctlr;
|
||||
-
|
||||
- if (xenConfigGetULong(conf, "max_grant_frames", &max_gntframes, 0) < 0)
|
||||
- return -1;
|
||||
-
|
||||
- if (max_gntframes <= 0)
|
||||
- return 0;
|
||||
+ unsigned long limit;
|
||||
|
||||
ctlr_idx = virDomainControllerFindByType(def, VIR_DOMAIN_CONTROLLER_TYPE_XENBUS);
|
||||
if (ctlr_idx == -1)
|
||||
@@ -620,10 +613,20 @@ xenParseXLGntLimits(virConfPtr conf, vir
|
||||
if (xenbus_ctlr == NULL)
|
||||
return -1;
|
||||
|
||||
- xenbus_ctlr->opts.xenbusopts.maxGrantFrames = max_gntframes;
|
||||
+ if (xenConfigGetULong(conf, "max_event_channels", &limit, 0) < 0)
|
||||
+ return -1;
|
||||
+ if (limit > 0)
|
||||
+ xenbus_ctlr->opts.xenbusopts.maxEventChannels = limit;
|
||||
+
|
||||
+#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS
|
||||
+ if (xenConfigGetULong(conf, "max_grant_frames", &limit, 0) < 0)
|
||||
+ return -1;
|
||||
+ if (limit > 0)
|
||||
+ xenbus_ctlr->opts.xenbusopts.maxGrantFrames = limit;
|
||||
+#endif
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
-#endif
|
||||
|
||||
static int
|
||||
xenParseXLDiskSrc(virDomainDiskDefPtr disk, char *srcstr)
|
||||
@@ -1180,10 +1183,8 @@ xenParseXL(virConfPtr conf,
|
||||
goto cleanup;
|
||||
#endif
|
||||
|
||||
-#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS
|
||||
- if (xenParseXLGntLimits(conf, def) < 0)
|
||||
+ if (xenParseXLXenbusLimits(conf, def) < 0)
|
||||
goto cleanup;
|
||||
-#endif
|
||||
|
||||
if (xenParseXLCPUID(conf, def) < 0)
|
||||
goto cleanup;
|
||||
@@ -1532,23 +1533,31 @@ xenFormatXLDomainVnuma(virConfPtr conf,
|
||||
}
|
||||
#endif
|
||||
|
||||
-#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS
|
||||
static int
|
||||
-xenFormatXLGntLimits(virConfPtr conf, virDomainDefPtr def)
|
||||
+xenFormatXLXenbusLimits(virConfPtr conf, virDomainDefPtr def)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < def->ncontrollers; i++) {
|
||||
- if (def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_XENBUS &&
|
||||
- def->controllers[i]->opts.xenbusopts.maxGrantFrames > 0) {
|
||||
- if (xenConfigSetInt(conf, "max_grant_frames",
|
||||
- def->controllers[i]->opts.xenbusopts.maxGrantFrames) < 0)
|
||||
- return -1;
|
||||
+ if (def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_XENBUS) {
|
||||
+ if (def->controllers[i]->opts.xenbusopts.maxEventChannels > 0) {
|
||||
+ if (xenConfigSetInt(conf, "max_event_channels",
|
||||
+ def->controllers[i]->opts.xenbusopts.maxEventChannels) < 0)
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS
|
||||
+ if (def->controllers[i]->opts.xenbusopts.maxGrantFrames > 0) {
|
||||
+ if (xenConfigSetInt(conf, "max_grant_frames",
|
||||
+ def->controllers[i]->opts.xenbusopts.maxGrantFrames) < 0)
|
||||
+ return -1;
|
||||
+ }
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
-#endif
|
||||
|
||||
static char *
|
||||
xenFormatXLDiskSrcNet(virStorageSourcePtr src)
|
||||
@@ -2191,10 +2200,8 @@ xenFormatXL(virDomainDefPtr def, virConn
|
||||
return NULL;
|
||||
#endif
|
||||
|
||||
-#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS
|
||||
- if (xenFormatXLGntLimits(conf, def) < 0)
|
||||
+ if (xenFormatXLXenbusLimits(conf, def) < 0)
|
||||
return NULL;
|
||||
-#endif
|
||||
|
||||
if (xenFormatXLDomainDisks(conf, def) < 0)
|
||||
return NULL;
|
||||
Index: libvirt-6.2.0/tests/xlconfigdata/test-max-eventchannels.cfg
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-6.2.0/tests/xlconfigdata/test-max-eventchannels.cfg
|
||||
@@ -0,0 +1,13 @@
|
||||
+name = "XenGuest1"
|
||||
+uuid = "45b60f51-88a9-47a8-a3b3-5e66d71b2283"
|
||||
+maxmem = 512
|
||||
+memory = 512
|
||||
+vcpus = 1
|
||||
+localtime = 0
|
||||
+on_poweroff = "preserve"
|
||||
+on_reboot = "restart"
|
||||
+on_crash = "preserve"
|
||||
+vif = [ "mac=5a:36:0e:be:00:09" ]
|
||||
+bootloader = "/usr/bin/pygrub"
|
||||
+max_event_channels = 2047
|
||||
+disk = [ "format=qcow2,vdev=xvda,access=rw,backendtype=qdisk,target=/var/lib/xen/images/debian/disk.qcow2" ]
|
||||
Index: libvirt-6.2.0/tests/xlconfigdata/test-max-eventchannels.xml
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-6.2.0/tests/xlconfigdata/test-max-eventchannels.xml
|
||||
@@ -0,0 +1,32 @@
|
||||
+<domain type='xen'>
|
||||
+ <name>XenGuest1</name>
|
||||
+ <uuid>45b60f51-88a9-47a8-a3b3-5e66d71b2283</uuid>
|
||||
+ <memory unit='KiB'>524288</memory>
|
||||
+ <currentMemory unit='KiB'>524288</currentMemory>
|
||||
+ <vcpu placement='static'>1</vcpu>
|
||||
+ <bootloader>/usr/bin/pygrub</bootloader>
|
||||
+ <os>
|
||||
+ <type arch='x86_64' machine='xenpv'>linux</type>
|
||||
+ </os>
|
||||
+ <clock offset='utc' adjustment='reset'/>
|
||||
+ <on_poweroff>preserve</on_poweroff>
|
||||
+ <on_reboot>restart</on_reboot>
|
||||
+ <on_crash>preserve</on_crash>
|
||||
+ <devices>
|
||||
+ <disk type='file' device='disk'>
|
||||
+ <driver name='qemu' type='qcow2'/>
|
||||
+ <source file='/var/lib/xen/images/debian/disk.qcow2'/>
|
||||
+ <target dev='xvda' bus='xen'/>
|
||||
+ </disk>
|
||||
+ <controller type='xenbus' index='0' maxEventChannels='2047'/>
|
||||
+ <interface type='ethernet'>
|
||||
+ <mac address='5a:36:0e:be:00:09'/>
|
||||
+ </interface>
|
||||
+ <console type='pty'>
|
||||
+ <target type='xen' port='0'/>
|
||||
+ </console>
|
||||
+ <input type='mouse' bus='xen'/>
|
||||
+ <input type='keyboard' bus='xen'/>
|
||||
+ <memballoon model='xen'/>
|
||||
+ </devices>
|
||||
+</domain>
|
||||
Index: libvirt-6.2.0/tests/xlconfigdata/test-usbctrl.xml
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tests/xlconfigdata/test-usbctrl.xml
|
||||
+++ libvirt-6.2.0/tests/xlconfigdata/test-usbctrl.xml
|
||||
@@ -18,8 +18,8 @@
|
||||
<source file='/var/lib/xen/images/debian/disk.qcow2'/>
|
||||
<target dev='xvda' bus='xen'/>
|
||||
</disk>
|
||||
- <controller type='usb' index='0' model='qusb2' ports='6'/>
|
||||
<controller type='xenbus' index='0'/>
|
||||
+ <controller type='usb' index='0' model='qusb2' ports='6'/>
|
||||
<interface type='ethernet'>
|
||||
<mac address='5a:36:0e:be:00:09'/>
|
||||
</interface>
|
||||
Index: libvirt-6.2.0/tests/xlconfigtest.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tests/xlconfigtest.c
|
||||
+++ libvirt-6.2.0/tests/xlconfigtest.c
|
||||
@@ -294,6 +294,8 @@ mymain(void)
|
||||
DO_TEST("max-gntframes");
|
||||
#endif
|
||||
|
||||
+ DO_TEST("max-eventchannels");
|
||||
+
|
||||
DO_TEST("vif-typename");
|
||||
DO_TEST("vif-multi-ip");
|
||||
DO_TEST("usb");
|
@ -1,112 +0,0 @@
|
||||
commit 9cb8bc6ff1ad80aba4d3c68756166a22e830d481
|
||||
Author: Jim Fehlig <jfehlig@suse.com>
|
||||
Date: Wed Apr 15 21:48:42 2020 -0600
|
||||
|
||||
libxl: refactor cpu and hypervisor feature parser/formatter
|
||||
|
||||
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/xen_common.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/xen_common.c
|
||||
+++ libvirt-6.2.0/src/libxl/xen_common.c
|
||||
@@ -493,15 +493,12 @@ xenParsePCIList(virConfPtr conf, virDoma
|
||||
|
||||
|
||||
static int
|
||||
-xenParseCPUFeatures(virConfPtr conf,
|
||||
- virDomainDefPtr def,
|
||||
- virDomainXMLOptionPtr xmlopt)
|
||||
+xenParseCPU(virConfPtr conf,
|
||||
+ virDomainDefPtr def,
|
||||
+ virDomainXMLOptionPtr xmlopt)
|
||||
{
|
||||
unsigned long count = 0;
|
||||
g_autofree char *cpus = NULL;
|
||||
- g_autofree char *tsc_mode = NULL;
|
||||
- int val = 0;
|
||||
- virDomainTimerDefPtr timer;
|
||||
|
||||
if (xenConfigGetULong(conf, "vcpus", &count, 1) < 0)
|
||||
return -1;
|
||||
@@ -526,6 +523,17 @@ xenParseCPUFeatures(virConfPtr conf,
|
||||
if (cpus && (virBitmapParse(cpus, &def->cpumask, 4096) < 0))
|
||||
return -1;
|
||||
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static int
|
||||
+xenParseHypervisorFeatures(virConfPtr conf, virDomainDefPtr def)
|
||||
+{
|
||||
+ g_autofree char *tsc_mode = NULL;
|
||||
+ virDomainTimerDefPtr timer;
|
||||
+ int val = 0;
|
||||
+
|
||||
if (xenConfigGetString(conf, "tsc_mode", &tsc_mode, NULL) < 0)
|
||||
return -1;
|
||||
|
||||
@@ -552,27 +560,26 @@ xenParseCPUFeatures(virConfPtr conf,
|
||||
if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) {
|
||||
if (xenConfigGetBool(conf, "pae", &val, 1) < 0)
|
||||
return -1;
|
||||
-
|
||||
else if (val)
|
||||
def->features[VIR_DOMAIN_FEATURE_PAE] = VIR_TRISTATE_SWITCH_ON;
|
||||
+
|
||||
if (xenConfigGetBool(conf, "acpi", &val, 1) < 0)
|
||||
return -1;
|
||||
-
|
||||
else if (val)
|
||||
def->features[VIR_DOMAIN_FEATURE_ACPI] = VIR_TRISTATE_SWITCH_ON;
|
||||
+
|
||||
if (xenConfigGetBool(conf, "apic", &val, 1) < 0)
|
||||
return -1;
|
||||
-
|
||||
else if (val)
|
||||
def->features[VIR_DOMAIN_FEATURE_APIC] = VIR_TRISTATE_SWITCH_ON;
|
||||
+
|
||||
if (xenConfigGetBool(conf, "hap", &val, 1) < 0)
|
||||
return -1;
|
||||
-
|
||||
else if (!val)
|
||||
def->features[VIR_DOMAIN_FEATURE_HAP] = VIR_TRISTATE_SWITCH_OFF;
|
||||
+
|
||||
if (xenConfigGetBool(conf, "viridian", &val, 0) < 0)
|
||||
return -1;
|
||||
-
|
||||
else if (val)
|
||||
def->features[VIR_DOMAIN_FEATURE_VIRIDIAN] = VIR_TRISTATE_SWITCH_ON;
|
||||
|
||||
@@ -1483,7 +1490,10 @@ xenParseConfigCommon(virConfPtr conf,
|
||||
if (xenParseEventsActions(conf, def) < 0)
|
||||
return -1;
|
||||
|
||||
- if (xenParseCPUFeatures(conf, def, xmlopt) < 0)
|
||||
+ if (xenParseCPU(conf, def, xmlopt) < 0)
|
||||
+ return -1;
|
||||
+
|
||||
+ if (xenParseHypervisorFeatures(conf, def) < 0)
|
||||
return -1;
|
||||
|
||||
if (xenParseTimeOffset(conf, def) < 0)
|
||||
@@ -2115,7 +2125,7 @@ xenFormatCPUAllocation(virConfPtr conf,
|
||||
|
||||
|
||||
static int
|
||||
-xenFormatCPUFeatures(virConfPtr conf, virDomainDefPtr def)
|
||||
+xenFormatHypervisorFeatures(virConfPtr conf, virDomainDefPtr def)
|
||||
{
|
||||
size_t i;
|
||||
bool hvm = !!(def->os.type == VIR_DOMAIN_OSTYPE_HVM);
|
||||
@@ -2423,7 +2433,7 @@ xenFormatConfigCommon(virConfPtr conf,
|
||||
if (xenFormatCPUAllocation(conf, def) < 0)
|
||||
return -1;
|
||||
|
||||
- if (xenFormatCPUFeatures(conf, def) < 0)
|
||||
+ if (xenFormatHypervisorFeatures(conf, def) < 0)
|
||||
return -1;
|
||||
|
||||
if (xenFormatTimeOffset(conf, def) < 0)
|
@ -1,190 +0,0 @@
|
||||
commit a93f55c53d83ec63fe703db38cb519465b1d2445
|
||||
Author: Jim Fehlig <jfehlig@suse.com>
|
||||
Date: Tue Apr 7 17:15:04 2020 -0600
|
||||
|
||||
libxl: Add support for max_event_channels
|
||||
|
||||
Add support for setting event_channels in libxl domain config object and
|
||||
include a test to check that it is properly converted from XML to libxl
|
||||
domain config.
|
||||
|
||||
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
@@ -380,13 +380,17 @@ libxlMakeDomBuildInfo(virDomainDefPtr de
|
||||
b_info->max_memkb = virDomainDefGetMemoryInitial(def);
|
||||
b_info->target_memkb = def->mem.cur_balloon;
|
||||
|
||||
-#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS
|
||||
for (i = 0; i < def->ncontrollers; i++) {
|
||||
- if (def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_XENBUS &&
|
||||
- def->controllers[i]->opts.xenbusopts.maxGrantFrames > 0)
|
||||
- b_info->max_grant_frames = def->controllers[i]->opts.xenbusopts.maxGrantFrames;
|
||||
- }
|
||||
+ if (def->controllers[i]->type == VIR_DOMAIN_CONTROLLER_TYPE_XENBUS) {
|
||||
+ if (def->controllers[i]->opts.xenbusopts.maxEventChannels > 0)
|
||||
+ b_info->event_channels = def->controllers[i]->opts.xenbusopts.maxEventChannels;
|
||||
+
|
||||
+#ifdef LIBXL_HAVE_BUILDINFO_GRANT_LIMITS
|
||||
+ if (def->controllers[i]->opts.xenbusopts.maxGrantFrames > 0)
|
||||
+ b_info->max_grant_frames = def->controllers[i]->opts.xenbusopts.maxGrantFrames;
|
||||
#endif
|
||||
+ }
|
||||
+ }
|
||||
|
||||
if (hvm || pvh) {
|
||||
if (caps &&
|
||||
Index: libvirt-6.2.0/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-6.2.0/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json
|
||||
@@ -0,0 +1,90 @@
|
||||
+{
|
||||
+ "c_info": {
|
||||
+ "type": "hvm",
|
||||
+ "name": "test-hvm",
|
||||
+ "uuid": "2147d599-9cc6-c0dc-92ab-4064b5446e9b"
|
||||
+ },
|
||||
+ "b_info": {
|
||||
+ "max_vcpus": 4,
|
||||
+ "avail_vcpus": [
|
||||
+ 0,
|
||||
+ 1,
|
||||
+ 2,
|
||||
+ 3
|
||||
+ ],
|
||||
+ "max_memkb": 1048576,
|
||||
+ "target_memkb": 1048576,
|
||||
+ "video_memkb": 8192,
|
||||
+ "shadow_memkb": 12288,
|
||||
+ "event_channels": 2047,
|
||||
+ "device_model_version": "qemu_xen",
|
||||
+ "device_model": "/bin/true",
|
||||
+ "sched_params": {
|
||||
+
|
||||
+ },
|
||||
+ "type.hvm": {
|
||||
+ "pae": "True",
|
||||
+ "apic": "True",
|
||||
+ "acpi": "True",
|
||||
+ "vga": {
|
||||
+ "kind": "cirrus"
|
||||
+ },
|
||||
+ "vnc": {
|
||||
+ "enable": "True",
|
||||
+ "listen": "0.0.0.0",
|
||||
+ "findunused": "False"
|
||||
+ },
|
||||
+ "sdl": {
|
||||
+ "enable": "False"
|
||||
+ },
|
||||
+ "spice": {
|
||||
+
|
||||
+ },
|
||||
+ "boot": "c",
|
||||
+ "rdm": {
|
||||
+
|
||||
+ }
|
||||
+ },
|
||||
+ "arch_arm": {
|
||||
+
|
||||
+ }
|
||||
+ },
|
||||
+ "disks": [
|
||||
+ {
|
||||
+ "pdev_path": "/var/lib/xen/images/test-hvm.img",
|
||||
+ "vdev": "hda",
|
||||
+ "backend": "qdisk",
|
||||
+ "format": "raw",
|
||||
+ "removable": 1,
|
||||
+ "readwrite": 1
|
||||
+ }
|
||||
+ ],
|
||||
+ "nics": [
|
||||
+ {
|
||||
+ "devid": 0,
|
||||
+ "mac": "00:16:3e:66:12:b4",
|
||||
+ "bridge": "br0",
|
||||
+ "script": "/etc/xen/scripts/vif-bridge",
|
||||
+ "nictype": "vif_ioemu"
|
||||
+ }
|
||||
+ ],
|
||||
+ "vfbs": [
|
||||
+ {
|
||||
+ "devid": -1,
|
||||
+ "vnc": {
|
||||
+ "enable": "True",
|
||||
+ "listen": "0.0.0.0",
|
||||
+ "findunused": "False"
|
||||
+ },
|
||||
+ "sdl": {
|
||||
+ "enable": "False"
|
||||
+ }
|
||||
+ }
|
||||
+ ],
|
||||
+ "vkbs": [
|
||||
+ {
|
||||
+ "devid": -1
|
||||
+ }
|
||||
+ ],
|
||||
+ "on_reboot": "restart"
|
||||
+}
|
||||
Index: libvirt-6.2.0/tests/libxlxml2domconfigdata/max-eventchannels-hvm.xml
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-6.2.0/tests/libxlxml2domconfigdata/max-eventchannels-hvm.xml
|
||||
@@ -0,0 +1,37 @@
|
||||
+<domain type='xen'>
|
||||
+ <name>test-hvm</name>
|
||||
+ <description>None</description>
|
||||
+ <uuid>2147d599-9cc6-c0dc-92ab-4064b5446e9b</uuid>
|
||||
+ <memory>1048576</memory>
|
||||
+ <currentMemory>1048576</currentMemory>
|
||||
+ <vcpu>4</vcpu>
|
||||
+ <on_poweroff>destroy</on_poweroff>
|
||||
+ <on_reboot>restart</on_reboot>
|
||||
+ <on_crash>destroy</on_crash>
|
||||
+ <clock offset='utc'/>
|
||||
+ <os>
|
||||
+ <type>hvm</type>
|
||||
+ <loader>/usr/lib/xen/boot/hvmloader</loader>
|
||||
+ <boot dev='hd'/>
|
||||
+ </os>
|
||||
+ <features>
|
||||
+ <apic/>
|
||||
+ <acpi/>
|
||||
+ <pae/>
|
||||
+ </features>
|
||||
+ <devices>
|
||||
+ <emulator>/bin/true</emulator>
|
||||
+ <disk type='file' device='disk'>
|
||||
+ <driver name='qemu'/>
|
||||
+ <source file='/var/lib/xen/images/test-hvm.img'/>
|
||||
+ <target dev='hda'/>
|
||||
+ </disk>
|
||||
+ <controller type='xenbus' maxEventChannels='2047'/>
|
||||
+ <interface type='bridge'>
|
||||
+ <source bridge='br0'/>
|
||||
+ <mac address='00:16:3e:66:12:b4'/>
|
||||
+ <script path='/etc/xen/scripts/vif-bridge'/>
|
||||
+ </interface>
|
||||
+ <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'/>
|
||||
+ </devices>
|
||||
+</domain>
|
||||
Index: libvirt-6.2.0/tests/libxlxml2domconfigtest.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tests/libxlxml2domconfigtest.c
|
||||
+++ libvirt-6.2.0/tests/libxlxml2domconfigtest.c
|
||||
@@ -202,6 +202,8 @@ mymain(void)
|
||||
DO_TEST("max-gntframes-hvm");
|
||||
# endif
|
||||
|
||||
+ DO_TEST("max-eventchannels-hvm");
|
||||
+
|
||||
unlink("libxl-driver.log");
|
||||
|
||||
testXLFreeDriver(driver);
|
@ -1,112 +0,0 @@
|
||||
commit b523e22521afe733165869c9e1ae18e88536acd6
|
||||
Author: Jim Fehlig <jfehlig@suse.com>
|
||||
Date: Thu Apr 16 08:31:48 2020 -0600
|
||||
|
||||
xenconfig: Add support for 'passthrough' hypervisor feature
|
||||
|
||||
Add support for xl.cfg(5) 'passthrough' option in the domXML-to-xenconfig
|
||||
configuration converter.
|
||||
|
||||
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||
|
||||
Index: libvirt-6.2.0/src/libvirt_private.syms
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libvirt_private.syms
|
||||
+++ libvirt-6.2.0/src/libvirt_private.syms
|
||||
@@ -650,6 +650,8 @@ virDomainWatchdogActionTypeToString;
|
||||
virDomainWatchdogDefFree;
|
||||
virDomainWatchdogModelTypeFromString;
|
||||
virDomainWatchdogModelTypeToString;
|
||||
+virDomainXenPassthroughModeTypeFromString;
|
||||
+virDomainXenPassthroughModeTypeToString;
|
||||
virDomainXMLOptionGetNamespace;
|
||||
virDomainXMLOptionGetSaveCookie;
|
||||
virDomainXMLOptionNew;
|
||||
Index: libvirt-6.2.0/src/libxl/xen_common.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/xen_common.c
|
||||
+++ libvirt-6.2.0/src/libxl/xen_common.c
|
||||
@@ -530,14 +530,14 @@ xenParseCPU(virConfPtr conf,
|
||||
static int
|
||||
xenParseHypervisorFeatures(virConfPtr conf, virDomainDefPtr def)
|
||||
{
|
||||
- g_autofree char *tsc_mode = NULL;
|
||||
+ g_autofree char *strval = NULL;
|
||||
virDomainTimerDefPtr timer;
|
||||
int val = 0;
|
||||
|
||||
- if (xenConfigGetString(conf, "tsc_mode", &tsc_mode, NULL) < 0)
|
||||
+ if (xenConfigGetString(conf, "tsc_mode", &strval, NULL) < 0)
|
||||
return -1;
|
||||
|
||||
- if (tsc_mode) {
|
||||
+ if (strval) {
|
||||
if (VIR_EXPAND_N(def->clock.timers, def->clock.ntimers, 1) < 0 ||
|
||||
VIR_ALLOC(timer) < 0)
|
||||
return -1;
|
||||
@@ -547,16 +547,40 @@ xenParseHypervisorFeatures(virConfPtr co
|
||||
timer->tickpolicy = -1;
|
||||
timer->mode = VIR_DOMAIN_TIMER_MODE_AUTO;
|
||||
timer->track = -1;
|
||||
- if (STREQ_NULLABLE(tsc_mode, "always_emulate"))
|
||||
+ if (STREQ_NULLABLE(strval, "always_emulate"))
|
||||
timer->mode = VIR_DOMAIN_TIMER_MODE_EMULATE;
|
||||
- else if (STREQ_NULLABLE(tsc_mode, "native"))
|
||||
+ else if (STREQ_NULLABLE(strval, "native"))
|
||||
timer->mode = VIR_DOMAIN_TIMER_MODE_NATIVE;
|
||||
- else if (STREQ_NULLABLE(tsc_mode, "native_paravirt"))
|
||||
+ else if (STREQ_NULLABLE(strval, "native_paravirt"))
|
||||
timer->mode = VIR_DOMAIN_TIMER_MODE_PARAVIRT;
|
||||
|
||||
def->clock.timers[def->clock.ntimers - 1] = timer;
|
||||
}
|
||||
|
||||
+ if (xenConfigGetString(conf, "passthrough", &strval, NULL) < 0)
|
||||
+ return -1;
|
||||
+
|
||||
+ if (strval) {
|
||||
+ if (STREQ(strval, "disabled")) {
|
||||
+ def->features[VIR_DOMAIN_FEATURE_XEN] = VIR_TRISTATE_SWITCH_OFF;
|
||||
+ def->xen_features[VIR_DOMAIN_XEN_PASSTHROUGH] = VIR_TRISTATE_SWITCH_OFF;
|
||||
+ } else if (STREQ(strval, "enabled")) {
|
||||
+ def->features[VIR_DOMAIN_FEATURE_XEN] = VIR_TRISTATE_SWITCH_ON;
|
||||
+ def->xen_features[VIR_DOMAIN_XEN_PASSTHROUGH] = VIR_TRISTATE_SWITCH_ON;
|
||||
+ } else if (STREQ(strval, "sync_pt")) {
|
||||
+ def->features[VIR_DOMAIN_FEATURE_XEN] = VIR_TRISTATE_SWITCH_ON;
|
||||
+ def->xen_features[VIR_DOMAIN_XEN_PASSTHROUGH] = VIR_TRISTATE_SWITCH_ON;
|
||||
+ def->xen_passthrough_mode = VIR_DOMAIN_XEN_PASSTHROUGH_MODE_SYNC_PT;
|
||||
+ } else if (STREQ(strval, "share_pt")) {
|
||||
+ def->features[VIR_DOMAIN_FEATURE_XEN] = VIR_TRISTATE_SWITCH_ON;
|
||||
+ def->xen_features[VIR_DOMAIN_XEN_PASSTHROUGH] = VIR_TRISTATE_SWITCH_ON;
|
||||
+ def->xen_passthrough_mode = VIR_DOMAIN_XEN_PASSTHROUGH_MODE_SHARE_PT;
|
||||
+ } else {
|
||||
+ virReportError(VIR_ERR_CONF_SYNTAX,
|
||||
+ _("Invalid passthrough mode %s"), strval);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) {
|
||||
if (xenConfigGetBool(conf, "pae", &val, 1) < 0)
|
||||
return -1;
|
||||
@@ -2163,6 +2187,20 @@ xenFormatHypervisorFeatures(virConfPtr c
|
||||
}
|
||||
}
|
||||
|
||||
+ if (def->features[VIR_DOMAIN_FEATURE_XEN] == VIR_TRISTATE_SWITCH_ON) {
|
||||
+ if (def->xen_features[VIR_DOMAIN_XEN_PASSTHROUGH] == VIR_TRISTATE_SWITCH_ON) {
|
||||
+ if (def->xen_passthrough_mode == VIR_DOMAIN_XEN_PASSTHROUGH_MODE_SYNC_PT ||
|
||||
+ def->xen_passthrough_mode == VIR_DOMAIN_XEN_PASSTHROUGH_MODE_SHARE_PT) {
|
||||
+ if (xenConfigSetString(conf, "passthrough",
|
||||
+ virDomainXenPassthroughModeTypeToString(def->xen_passthrough_mode)) < 0)
|
||||
+ return -1;
|
||||
+ } else {
|
||||
+ if (xenConfigSetString(conf, "passthrough", "enabled") < 0)
|
||||
+ return -1;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
for (i = 0; i < def->clock.ntimers; i++) {
|
||||
switch ((virDomainTimerNameType)def->clock.timers[i]->name) {
|
||||
case VIR_DOMAIN_TIMER_NAME_TSC:
|
@ -1,292 +0,0 @@
|
||||
commit b7d6648d436fe0a99d4faf0f99c88a27a7bfea33
|
||||
Author: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
|
||||
Date: Tue Apr 14 04:37:04 2020 +0200
|
||||
|
||||
conf: add xen specific feature: e820_host
|
||||
|
||||
e820_host is a Xen-specific option, only available for PV domains, that
|
||||
provides the domain a virtual e820 memory map based on the host one. It
|
||||
is enabled with a new Xen hypervisor feature, e.g.
|
||||
|
||||
<features>
|
||||
<xen>
|
||||
<e820_host state='on'/>
|
||||
</xen>
|
||||
</features>
|
||||
|
||||
e820_host is required when using PCI passthrough and is generally
|
||||
considered safe for any PV kernel. e820_host is silently ignored if set
|
||||
in HVM domain configuration. See xl.cfg(5) man page in the Xen
|
||||
documentation for more details.
|
||||
|
||||
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
|
||||
Reviewed-by: Jim Fehlig <jfehlig@suse.com>
|
||||
|
||||
Index: libvirt-6.2.0/docs/formatdomain.html.in
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/docs/formatdomain.html.in
|
||||
+++ libvirt-6.2.0/docs/formatdomain.html.in
|
||||
@@ -2055,6 +2055,9 @@
|
||||
<hidden state='on'/>
|
||||
<hint-dedicated state='on'/>
|
||||
</kvm>
|
||||
+ <xen>
|
||||
+ <e820_host state='on'/>
|
||||
+ </xen>
|
||||
<pvspinlock state='on'/>
|
||||
<gic version='2'/>
|
||||
<ioapic driver='qemu'/>
|
||||
@@ -2236,6 +2239,23 @@
|
||||
</tr>
|
||||
</table>
|
||||
</dd>
|
||||
+ <dt><code>xen</code></dt>
|
||||
+ <dd>Various features to change the behavior of the Xen hypervisor.
|
||||
+ <table class="top_table">
|
||||
+ <tr>
|
||||
+ <th>Feature</th>
|
||||
+ <th>Description</th>
|
||||
+ <th>Value</th>
|
||||
+ <th>Since</th>
|
||||
+ </tr>
|
||||
+ <tr>
|
||||
+ <td>e820_host</td>
|
||||
+ <td>Expose the host e820 to the guest (PV only)</td>
|
||||
+ <td>on, off</td>
|
||||
+ <td><span class="since">6.3.0</span></td>
|
||||
+ </tr>
|
||||
+ </table>
|
||||
+ </dd>
|
||||
<dt><code>pmu</code></dt>
|
||||
<dd>Depending on the <code>state</code> attribute (values <code>on</code>,
|
||||
<code>off</code>, default <code>on</code>) enable or disable the
|
||||
Index: libvirt-6.2.0/docs/schemas/domaincommon.rng
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/docs/schemas/domaincommon.rng
|
||||
+++ libvirt-6.2.0/docs/schemas/domaincommon.rng
|
||||
@@ -5334,6 +5334,9 @@
|
||||
<ref name="kvm"/>
|
||||
</optional>
|
||||
<optional>
|
||||
+ <ref name="xen"/>
|
||||
+ </optional>
|
||||
+ <optional>
|
||||
<element name="privnet">
|
||||
<empty/>
|
||||
</element>
|
||||
@@ -6313,6 +6316,19 @@
|
||||
<ref name="featurestate"/>
|
||||
</element>
|
||||
</optional>
|
||||
+ </interleave>
|
||||
+ </element>
|
||||
+ </define>
|
||||
+
|
||||
+ <!-- Optional Xen features -->
|
||||
+ <define name="xen">
|
||||
+ <element name="xen">
|
||||
+ <interleave>
|
||||
+ <optional>
|
||||
+ <element name="e820_host">
|
||||
+ <ref name="featurestate"/>
|
||||
+ </element>
|
||||
+ </optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
Index: libvirt-6.2.0/src/conf/domain_conf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/conf/domain_conf.c
|
||||
+++ libvirt-6.2.0/src/conf/domain_conf.c
|
||||
@@ -174,6 +174,7 @@ VIR_ENUM_IMPL(virDomainFeature,
|
||||
"nested-hv",
|
||||
"msrs",
|
||||
"ccf-assist",
|
||||
+ "xen",
|
||||
);
|
||||
|
||||
VIR_ENUM_IMPL(virDomainCapabilitiesPolicy,
|
||||
@@ -207,6 +208,11 @@ VIR_ENUM_IMPL(virDomainKVM,
|
||||
"hint-dedicated",
|
||||
);
|
||||
|
||||
+VIR_ENUM_IMPL(virDomainXen,
|
||||
+ VIR_DOMAIN_XEN_LAST,
|
||||
+ "e820_host"
|
||||
+);
|
||||
+
|
||||
VIR_ENUM_IMPL(virDomainMsrsUnknown,
|
||||
VIR_DOMAIN_MSRS_UNKNOWN_LAST,
|
||||
"ignore",
|
||||
@@ -20810,6 +20816,7 @@ virDomainDefParseXML(xmlDocPtr xml,
|
||||
case VIR_DOMAIN_FEATURE_HYPERV:
|
||||
case VIR_DOMAIN_FEATURE_KVM:
|
||||
case VIR_DOMAIN_FEATURE_MSRS:
|
||||
+ case VIR_DOMAIN_FEATURE_XEN:
|
||||
def->features[val] = VIR_TRISTATE_SWITCH_ON;
|
||||
break;
|
||||
|
||||
@@ -21120,6 +21127,51 @@ virDomainDefParseXML(xmlDocPtr xml,
|
||||
VIR_FREE(nodes);
|
||||
}
|
||||
|
||||
+ if (def->features[VIR_DOMAIN_FEATURE_XEN] == VIR_TRISTATE_SWITCH_ON) {
|
||||
+ int feature;
|
||||
+ int value;
|
||||
+ if ((n = virXPathNodeSet("./features/xen/*", ctxt, &nodes)) < 0)
|
||||
+ goto error;
|
||||
+
|
||||
+ for (i = 0; i < n; i++) {
|
||||
+ feature = virDomainXenTypeFromString((const char *)nodes[i]->name);
|
||||
+ if (feature < 0) {
|
||||
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
+ _("unsupported Xen feature: %s"),
|
||||
+ nodes[i]->name);
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ switch ((virDomainXen) feature) {
|
||||
+ case VIR_DOMAIN_XEN_E820_HOST:
|
||||
+ if (!(tmp = virXMLPropString(nodes[i], "state"))) {
|
||||
+ virReportError(VIR_ERR_XML_ERROR,
|
||||
+ _("missing 'state' attribute for "
|
||||
+ "Xen feature '%s'"),
|
||||
+ nodes[i]->name);
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ if ((value = virTristateSwitchTypeFromString(tmp)) < 0) {
|
||||
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
+ _("invalid value of state argument "
|
||||
+ "for Xen feature '%s'"),
|
||||
+ nodes[i]->name);
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ VIR_FREE(tmp);
|
||||
+ def->xen_features[feature] = value;
|
||||
+ break;
|
||||
+
|
||||
+ /* coverity[dead_error_begin] */
|
||||
+ case VIR_DOMAIN_XEN_LAST:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ VIR_FREE(nodes);
|
||||
+ }
|
||||
+
|
||||
if (def->features[VIR_DOMAIN_FEATURE_SMM] == VIR_TRISTATE_SWITCH_ON) {
|
||||
int rv = virDomainParseScaledValue("string(./features/smm/tseg)",
|
||||
"string(./features/smm/tseg/@unit)",
|
||||
@@ -23113,6 +23165,7 @@ virDomainDefFeaturesCheckABIStability(vi
|
||||
case VIR_DOMAIN_FEATURE_PRIVNET:
|
||||
case VIR_DOMAIN_FEATURE_HYPERV:
|
||||
case VIR_DOMAIN_FEATURE_KVM:
|
||||
+ case VIR_DOMAIN_FEATURE_XEN:
|
||||
case VIR_DOMAIN_FEATURE_PVSPINLOCK:
|
||||
case VIR_DOMAIN_FEATURE_PMU:
|
||||
case VIR_DOMAIN_FEATURE_VMPORT:
|
||||
@@ -23284,6 +23337,30 @@ virDomainDefFeaturesCheckABIStability(vi
|
||||
}
|
||||
}
|
||||
|
||||
+ /* xen */
|
||||
+ if (src->features[VIR_DOMAIN_FEATURE_XEN] == VIR_TRISTATE_SWITCH_ON) {
|
||||
+ for (i = 0; i < VIR_DOMAIN_XEN_LAST; i++) {
|
||||
+ switch ((virDomainXen) i) {
|
||||
+ case VIR_DOMAIN_XEN_E820_HOST:
|
||||
+ if (src->xen_features[i] != dst->xen_features[i]) {
|
||||
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
+ _("State of Xen feature '%s' differs: "
|
||||
+ "source: '%s', destination: '%s'"),
|
||||
+ virDomainXenTypeToString(i),
|
||||
+ virTristateSwitchTypeToString(src->xen_features[i]),
|
||||
+ virTristateSwitchTypeToString(dst->xen_features[i]));
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ break;
|
||||
+
|
||||
+ /* coverity[dead_error_begin] */
|
||||
+ case VIR_DOMAIN_XEN_LAST:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/* kvm */
|
||||
if (src->features[VIR_DOMAIN_FEATURE_KVM] == VIR_TRISTATE_SWITCH_ON) {
|
||||
for (i = 0; i < VIR_DOMAIN_KVM_LAST; i++) {
|
||||
@@ -28885,6 +28962,31 @@ virDomainDefFormatFeatures(virBufferPtr
|
||||
virBufferAddLit(&childBuf, "</kvm>\n");
|
||||
break;
|
||||
|
||||
+ case VIR_DOMAIN_FEATURE_XEN:
|
||||
+ if (def->features[i] != VIR_TRISTATE_SWITCH_ON)
|
||||
+ break;
|
||||
+
|
||||
+ virBufferAddLit(&childBuf, "<xen>\n");
|
||||
+ virBufferAdjustIndent(&childBuf, 2);
|
||||
+ for (j = 0; j < VIR_DOMAIN_XEN_LAST; j++) {
|
||||
+ switch ((virDomainXen) j) {
|
||||
+ case VIR_DOMAIN_XEN_E820_HOST:
|
||||
+ if (def->xen_features[j])
|
||||
+ virBufferAsprintf(&childBuf, "<%s state='%s'/>\n",
|
||||
+ virDomainXenTypeToString(j),
|
||||
+ virTristateSwitchTypeToString(
|
||||
+ def->xen_features[j]));
|
||||
+ break;
|
||||
+
|
||||
+ /* coverity[dead_error_begin] */
|
||||
+ case VIR_DOMAIN_XEN_LAST:
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ virBufferAdjustIndent(&childBuf, -2);
|
||||
+ virBufferAddLit(&childBuf, "</xen>\n");
|
||||
+ break;
|
||||
+
|
||||
case VIR_DOMAIN_FEATURE_CAPABILITIES:
|
||||
for (j = 0; j < VIR_DOMAIN_PROCES_CAPS_FEATURE_LAST; j++) {
|
||||
if (def->caps_features[j] != VIR_TRISTATE_SWITCH_ABSENT)
|
||||
Index: libvirt-6.2.0/src/conf/domain_conf.h
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/conf/domain_conf.h
|
||||
+++ libvirt-6.2.0/src/conf/domain_conf.h
|
||||
@@ -1800,6 +1800,7 @@ typedef enum {
|
||||
VIR_DOMAIN_FEATURE_NESTED_HV,
|
||||
VIR_DOMAIN_FEATURE_MSRS,
|
||||
VIR_DOMAIN_FEATURE_CCF_ASSIST,
|
||||
+ VIR_DOMAIN_FEATURE_XEN,
|
||||
|
||||
VIR_DOMAIN_FEATURE_LAST
|
||||
} virDomainFeature;
|
||||
@@ -1846,6 +1847,12 @@ typedef enum {
|
||||
} virDomainMsrsUnknown;
|
||||
|
||||
typedef enum {
|
||||
+ VIR_DOMAIN_XEN_E820_HOST = 0,
|
||||
+
|
||||
+ VIR_DOMAIN_XEN_LAST
|
||||
+} virDomainXen;
|
||||
+
|
||||
+typedef enum {
|
||||
VIR_DOMAIN_CAPABILITIES_POLICY_DEFAULT = 0,
|
||||
VIR_DOMAIN_CAPABILITIES_POLICY_ALLOW,
|
||||
VIR_DOMAIN_CAPABILITIES_POLICY_DENY,
|
||||
@@ -2469,6 +2476,7 @@ struct _virDomainDef {
|
||||
int hyperv_features[VIR_DOMAIN_HYPERV_LAST];
|
||||
int kvm_features[VIR_DOMAIN_KVM_LAST];
|
||||
int msrs_features[VIR_DOMAIN_MSRS_LAST];
|
||||
+ int xen_features[VIR_DOMAIN_XEN_LAST];
|
||||
unsigned int hyperv_spinlocks;
|
||||
int hyperv_stimer_direct;
|
||||
virGICVersion gic_version;
|
||||
@@ -3514,6 +3522,7 @@ VIR_ENUM_DECL(virDomainGraphicsSpiceMous
|
||||
VIR_ENUM_DECL(virDomainGraphicsVNCSharePolicy);
|
||||
VIR_ENUM_DECL(virDomainHyperv);
|
||||
VIR_ENUM_DECL(virDomainKVM);
|
||||
+VIR_ENUM_DECL(virDomainXen);
|
||||
VIR_ENUM_DECL(virDomainMsrsUnknown);
|
||||
VIR_ENUM_DECL(virDomainRNGModel);
|
||||
VIR_ENUM_DECL(virDomainRNGBackend);
|
@ -1,137 +0,0 @@
|
||||
commit bed325253681fa61537b01be821538479fa9df60
|
||||
Author: Jim Fehlig <jfehlig@suse.com>
|
||||
Date: Fri Apr 17 14:19:16 2020 -0600
|
||||
|
||||
tests: check conversion of passthrough hypervisor feature
|
||||
|
||||
Add a new test to check the 'mode' attribute of the passthrough element
|
||||
and augment an existing, related test to check enablement of the
|
||||
passthrough element only.
|
||||
|
||||
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||
|
||||
Index: libvirt-6.2.0/tests/xlconfigdata/test-fullvirt-hypervisor-features.cfg
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-6.2.0/tests/xlconfigdata/test-fullvirt-hypervisor-features.cfg
|
||||
@@ -0,0 +1,26 @@
|
||||
+name = "XenGuest2"
|
||||
+uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"
|
||||
+maxmem = 579
|
||||
+memory = 394
|
||||
+vcpus = 1
|
||||
+pae = 1
|
||||
+acpi = 1
|
||||
+apic = 1
|
||||
+viridian = 0
|
||||
+passthrough = "share_pt"
|
||||
+rtc_timeoffset = 0
|
||||
+localtime = 0
|
||||
+on_poweroff = "destroy"
|
||||
+on_reboot = "restart"
|
||||
+on_crash = "restart"
|
||||
+device_model = "/usr/lib/xen/bin/qemu-system-i386"
|
||||
+sdl = 0
|
||||
+vnc = 1
|
||||
+vncunused = 1
|
||||
+vnclisten = "127.0.0.1"
|
||||
+vif = [ "mac=00:16:3e:66:92:9c,bridge=xenbr1,script=vif-bridge,model=e1000" ]
|
||||
+parallel = "none"
|
||||
+serial = "none"
|
||||
+builder = "hvm"
|
||||
+boot = "c"
|
||||
+disk = [ "format=raw,vdev=hda,access=rw,backendtype=phy,target=/dev/HostVG/XenGuest2" ]
|
||||
Index: libvirt-6.2.0/tests/xlconfigdata/test-fullvirt-hypervisor-features.xml
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-6.2.0/tests/xlconfigdata/test-fullvirt-hypervisor-features.xml
|
||||
@@ -0,0 +1,50 @@
|
||||
+<domain type='xen'>
|
||||
+ <name>XenGuest2</name>
|
||||
+ <uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
|
||||
+ <memory unit='KiB'>592896</memory>
|
||||
+ <currentMemory unit='KiB'>403456</currentMemory>
|
||||
+ <vcpu placement='static'>1</vcpu>
|
||||
+ <os>
|
||||
+ <type arch='x86_64' machine='xenfv'>hvm</type>
|
||||
+ <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
|
||||
+ <boot dev='hd'/>
|
||||
+ </os>
|
||||
+ <features>
|
||||
+ <acpi/>
|
||||
+ <apic/>
|
||||
+ <pae/>
|
||||
+ <xen>
|
||||
+ <passthrough state='on' mode='share_pt'/>
|
||||
+ </xen>
|
||||
+ </features>
|
||||
+ <clock offset='variable' adjustment='0' basis='utc'/>
|
||||
+ <on_poweroff>destroy</on_poweroff>
|
||||
+ <on_reboot>restart</on_reboot>
|
||||
+ <on_crash>restart</on_crash>
|
||||
+ <devices>
|
||||
+ <emulator>/usr/lib/xen/bin/qemu-system-i386</emulator>
|
||||
+ <disk type='block' device='disk'>
|
||||
+ <driver name='phy' type='raw'/>
|
||||
+ <source dev='/dev/HostVG/XenGuest2'/>
|
||||
+ <target dev='hda' bus='ide'/>
|
||||
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
||||
+ </disk>
|
||||
+ <controller type='xenbus' index='0'/>
|
||||
+ <controller type='ide' index='0'/>
|
||||
+ <interface type='bridge'>
|
||||
+ <mac address='00:16:3e:66:92:9c'/>
|
||||
+ <source bridge='xenbr1'/>
|
||||
+ <script path='vif-bridge'/>
|
||||
+ <model type='e1000'/>
|
||||
+ </interface>
|
||||
+ <input type='mouse' bus='ps2'/>
|
||||
+ <input type='keyboard' bus='ps2'/>
|
||||
+ <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1'>
|
||||
+ <listen type='address' address='127.0.0.1'/>
|
||||
+ </graphics>
|
||||
+ <video>
|
||||
+ <model type='cirrus' vram='8192' heads='1' primary='yes'/>
|
||||
+ </video>
|
||||
+ <memballoon model='xen'/>
|
||||
+ </devices>
|
||||
+</domain>
|
||||
Index: libvirt-6.2.0/tests/xlconfigdata/test-paravirt-e820_host.cfg
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tests/xlconfigdata/test-paravirt-e820_host.cfg
|
||||
+++ libvirt-6.2.0/tests/xlconfigdata/test-paravirt-e820_host.cfg
|
||||
@@ -4,6 +4,7 @@ maxmem = 512
|
||||
memory = 512
|
||||
vcpus = 4
|
||||
e820_host = 1
|
||||
+passthrough = "enabled"
|
||||
localtime = 0
|
||||
on_poweroff = "preserve"
|
||||
on_reboot = "restart"
|
||||
Index: libvirt-6.2.0/tests/xlconfigdata/test-paravirt-e820_host.xml
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tests/xlconfigdata/test-paravirt-e820_host.xml
|
||||
+++ libvirt-6.2.0/tests/xlconfigdata/test-paravirt-e820_host.xml
|
||||
@@ -11,6 +11,7 @@
|
||||
<features>
|
||||
<xen>
|
||||
<e820_host state='on'/>
|
||||
+ <passthrough state='on'/>
|
||||
</xen>
|
||||
</features>
|
||||
<clock offset='utc' adjustment='reset'/>
|
||||
Index: libvirt-6.2.0/tests/xlconfigtest.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tests/xlconfigtest.c
|
||||
+++ libvirt-6.2.0/tests/xlconfigtest.c
|
||||
@@ -301,6 +301,9 @@ mymain(void)
|
||||
DO_TEST("usb");
|
||||
DO_TEST("usbctrl");
|
||||
DO_TEST("paravirt-e820_host");
|
||||
+#ifdef LIBXL_HAVE_CREATEINFO_PASSTHROUGH
|
||||
+ DO_TEST("fullvirt-hypervisor-features");
|
||||
+#endif
|
||||
|
||||
testXLFreeDriver(driver);
|
||||
|
@ -3,10 +3,10 @@ tests: temporarily disable the new multipath PR tests
|
||||
The new multipath PR tests are failing in a build root env.
|
||||
Disable them for now until discussing a solution with upstream.
|
||||
|
||||
Index: libvirt-6.2.0/tests/qemuhotplugtest.c
|
||||
Index: libvirt-6.3.0/tests/qemuhotplugtest.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tests/qemuhotplugtest.c
|
||||
+++ libvirt-6.2.0/tests/qemuhotplugtest.c
|
||||
--- libvirt-6.3.0.orig/tests/qemuhotplugtest.c
|
||||
+++ libvirt-6.3.0/tests/qemuhotplugtest.c
|
||||
@@ -87,8 +87,6 @@ qemuHotplugCreateObjects(virDomainXMLOpt
|
||||
virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_VNC);
|
||||
virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_SPICE);
|
||||
@ -16,7 +16,7 @@ Index: libvirt-6.2.0/tests/qemuhotplugtest.c
|
||||
|
||||
if (qemuTestCapsCacheInsert(driver.qemuCapsCache, priv->qemuCaps) < 0)
|
||||
return -1;
|
||||
@@ -757,17 +755,6 @@ mymain(void)
|
||||
@@ -755,17 +753,6 @@ mymain(void)
|
||||
"device_del", QMP_DEVICE_DELETED("scsi3-0-5-6") QMP_OK,
|
||||
"human-monitor-command", HMP(""));
|
||||
|
||||
@ -25,11 +25,11 @@ Index: libvirt-6.2.0/tests/qemuhotplugtest.c
|
||||
- "human-monitor-command", HMP("OK\\r\\n"),
|
||||
- "device_add", QMP_OK);
|
||||
- DO_TEST_DETACH("base-live", "disk-scsi-multipath", true, true,
|
||||
- "device_del", QMP_OK,
|
||||
- "human-monitor-command", HMP(""));
|
||||
- "device_del", QMP_OK);
|
||||
- DO_TEST_DETACH("base-live", "disk-scsi-multipath", false, false,
|
||||
- "device_del", QMP_DEVICE_DELETED("scsi0-0-0-0") QMP_OK,
|
||||
- "human-monitor-command", HMP(""));
|
||||
- "human-monitor-command", HMP(""),
|
||||
- "object-del", QMP_OK);
|
||||
-
|
||||
DO_TEST_ATTACH("base-live", "qemu-agent", false, true,
|
||||
"chardev-add", QMP_OK,
|
||||
|
@ -1,40 +0,0 @@
|
||||
commit f3ef7dafc8a60e6e21ac31cbbc019aa76a34e523
|
||||
Author: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
|
||||
Date: Tue Apr 14 04:37:06 2020 +0200
|
||||
|
||||
xenconfig: parse e820_host option
|
||||
|
||||
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
|
||||
Reviewed-by: Jim Fehlig <jfehlig@suse.com>
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/xen_common.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/xen_common.c
|
||||
+++ libvirt-6.2.0/src/libxl/xen_common.c
|
||||
@@ -592,6 +592,13 @@ xenParseCPUFeatures(virConfPtr conf,
|
||||
|
||||
def->clock.timers[def->clock.ntimers - 1] = timer;
|
||||
}
|
||||
+ } else {
|
||||
+ if (xenConfigGetBool(conf, "e820_host", &val, 0) < 0) {
|
||||
+ return -1;
|
||||
+ } else if (val) {
|
||||
+ def->features[VIR_DOMAIN_FEATURE_XEN] = VIR_TRISTATE_SWITCH_ON;
|
||||
+ def->xen_features[VIR_DOMAIN_XEN_E820_HOST] = VIR_TRISTATE_SWITCH_ON;
|
||||
+ }
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -2138,6 +2145,12 @@ xenFormatCPUFeatures(virConfPtr conf, vi
|
||||
(def->features[VIR_DOMAIN_FEATURE_VIRIDIAN] ==
|
||||
VIR_TRISTATE_SWITCH_ON) ? 1 : 0) < 0)
|
||||
return -1;
|
||||
+ } else {
|
||||
+ if (def->features[VIR_DOMAIN_FEATURE_XEN] == VIR_TRISTATE_SWITCH_ON) {
|
||||
+ if (def->xen_features[VIR_DOMAIN_XEN_E820_HOST] == VIR_TRISTATE_SWITCH_ON)
|
||||
+ if (xenConfigSetInt(conf, "e820_host", 1) < 0)
|
||||
+ return -1;
|
||||
+ }
|
||||
}
|
||||
|
||||
for (i = 0; i < def->clock.ntimers; i++) {
|
@ -1,291 +0,0 @@
|
||||
commit fadbaa23757ff9dca329bdb8d3447c27599f6884
|
||||
Author: Jim Fehlig <jfehlig@suse.com>
|
||||
Date: Wed Apr 15 16:34:54 2020 -0600
|
||||
|
||||
conf: add xen hypervisor feature 'passthrough'
|
||||
|
||||
'passthrough' is Xen-Specific guest configuration option new to Xen 4.13
|
||||
that enables IOMMU mappings for a guest and hence whether it supports PCI
|
||||
passthrough. The default is disabled. See the xl.cfg(5) man page and
|
||||
xen.git commit babde47a3fe for more details.
|
||||
|
||||
The default state of disabled prevents hotlugging PCI devices. However,
|
||||
if the guest configuration contains a PCI passthrough device at time of
|
||||
creation, libxl will automatically enable 'passthrough' and subsequent
|
||||
hotplugging of PCI devices will also be possible. It is not possible to
|
||||
unconditionally enable 'passthrough' since it would introduce a migration
|
||||
incompatibility due to guest ABI change. Instead, introduce another Xen
|
||||
hypervisor feature that can be used to enable guest PCI passthrough
|
||||
|
||||
<features>
|
||||
<xen>
|
||||
<passthrough state='on'/>
|
||||
</xen>
|
||||
</features>
|
||||
|
||||
To allow finer control over how IOMMU maps to guest P2M table, the
|
||||
passthrough element also supports a 'mode' attribute with values
|
||||
restricted to snyc_pt and share_pt, similar to xl.cfg(5) 'passthrough'
|
||||
setting .
|
||||
|
||||
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||
|
||||
Index: libvirt-6.2.0/docs/formatdomain.html.in
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/docs/formatdomain.html.in
|
||||
+++ libvirt-6.2.0/docs/formatdomain.html.in
|
||||
@@ -2057,6 +2057,7 @@
|
||||
</kvm>
|
||||
<xen>
|
||||
<e820_host state='on'/>
|
||||
+ <passthrough state='on' mode='share_pt'/>
|
||||
</xen>
|
||||
<pvspinlock state='on'/>
|
||||
<gic version='2'/>
|
||||
@@ -2254,6 +2255,12 @@
|
||||
<td>on, off</td>
|
||||
<td><span class="since">6.3.0</span></td>
|
||||
</tr>
|
||||
+ <tr>
|
||||
+ <td>passthrough</td>
|
||||
+ <td>Enable IOMMU mappings allowing PCI passthrough)</td>
|
||||
+ <td>on, off; mode - optional string sync_pt or share_pt</td>
|
||||
+ <td><span class="since">6.3.0</span></td>
|
||||
+ </tr>
|
||||
</table>
|
||||
</dd>
|
||||
<dt><code>pmu</code></dt>
|
||||
Index: libvirt-6.2.0/docs/schemas/domaincommon.rng
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/docs/schemas/domaincommon.rng
|
||||
+++ libvirt-6.2.0/docs/schemas/domaincommon.rng
|
||||
@@ -6329,6 +6329,18 @@
|
||||
<ref name="featurestate"/>
|
||||
</element>
|
||||
</optional>
|
||||
+ <optional>
|
||||
+ <element name="passthrough">
|
||||
+ <ref name="featurestate"/>
|
||||
+ <optional>
|
||||
+ <attribute name="mode">
|
||||
+ <data type="string">
|
||||
+ <param name='pattern'>(sync_pt|share_pt)</param>
|
||||
+ </data>
|
||||
+ </attribute>
|
||||
+ </optional>
|
||||
+ </element>
|
||||
+ </optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
Index: libvirt-6.2.0/src/conf/domain_conf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/conf/domain_conf.c
|
||||
+++ libvirt-6.2.0/src/conf/domain_conf.c
|
||||
@@ -210,7 +210,15 @@ VIR_ENUM_IMPL(virDomainKVM,
|
||||
|
||||
VIR_ENUM_IMPL(virDomainXen,
|
||||
VIR_DOMAIN_XEN_LAST,
|
||||
- "e820_host"
|
||||
+ "e820_host",
|
||||
+ "passthrough",
|
||||
+);
|
||||
+
|
||||
+VIR_ENUM_IMPL(virDomainXenPassthroughMode,
|
||||
+ VIR_DOMAIN_XEN_PASSTHROUGH_MODE_LAST,
|
||||
+ "default",
|
||||
+ "sync_pt",
|
||||
+ "share_pt",
|
||||
);
|
||||
|
||||
VIR_ENUM_IMPL(virDomainMsrsUnknown,
|
||||
@@ -21130,6 +21138,8 @@ virDomainDefParseXML(xmlDocPtr xml,
|
||||
if (def->features[VIR_DOMAIN_FEATURE_XEN] == VIR_TRISTATE_SWITCH_ON) {
|
||||
int feature;
|
||||
int value;
|
||||
+ g_autofree char *ptval = NULL;
|
||||
+
|
||||
if ((n = virXPathNodeSet("./features/xen/*", ctxt, &nodes)) < 0)
|
||||
goto error;
|
||||
|
||||
@@ -21142,27 +21152,53 @@ virDomainDefParseXML(xmlDocPtr xml,
|
||||
goto error;
|
||||
}
|
||||
|
||||
+ if (!(tmp = virXMLPropString(nodes[i], "state"))) {
|
||||
+ virReportError(VIR_ERR_XML_ERROR,
|
||||
+ _("missing 'state' attribute for "
|
||||
+ "Xen feature '%s'"),
|
||||
+ nodes[i]->name);
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ if ((value = virTristateSwitchTypeFromString(tmp)) < 0) {
|
||||
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
+ _("invalid value of state argument "
|
||||
+ "for Xen feature '%s'"),
|
||||
+ nodes[i]->name);
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ VIR_FREE(tmp);
|
||||
+ def->xen_features[feature] = value;
|
||||
+
|
||||
switch ((virDomainXen) feature) {
|
||||
case VIR_DOMAIN_XEN_E820_HOST:
|
||||
- if (!(tmp = virXMLPropString(nodes[i], "state"))) {
|
||||
- virReportError(VIR_ERR_XML_ERROR,
|
||||
- _("missing 'state' attribute for "
|
||||
- "Xen feature '%s'"),
|
||||
- nodes[i]->name);
|
||||
- goto error;
|
||||
- }
|
||||
+ break;
|
||||
|
||||
- if ((value = virTristateSwitchTypeFromString(tmp)) < 0) {
|
||||
+ case VIR_DOMAIN_XEN_PASSTHROUGH:
|
||||
+ if (value != VIR_TRISTATE_SWITCH_ON)
|
||||
+ break;
|
||||
+
|
||||
+ if ((ptval = virXMLPropString(nodes[i], "mode"))) {
|
||||
+ int mode = virDomainXenPassthroughModeTypeFromString(ptval);
|
||||
+
|
||||
+ if (mode < 0) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
- _("invalid value of state argument "
|
||||
- "for Xen feature '%s'"),
|
||||
- nodes[i]->name);
|
||||
+ _("unsupported mode '%s' for Xen passthrough feature"),
|
||||
+ ptval);
|
||||
goto error;
|
||||
}
|
||||
|
||||
- VIR_FREE(tmp);
|
||||
- def->xen_features[feature] = value;
|
||||
- break;
|
||||
+ if (mode != VIR_DOMAIN_XEN_PASSTHROUGH_MODE_SYNC_PT &&
|
||||
+ mode != VIR_DOMAIN_XEN_PASSTHROUGH_MODE_SHARE_PT) {
|
||||
+ virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||
+ _("'mode' attribute for Xen feature "
|
||||
+ "'passthrough' must be 'sync_pt' or 'share_pt'"));
|
||||
+ goto error;
|
||||
+ }
|
||||
+ def->xen_passthrough_mode = mode;
|
||||
+ }
|
||||
+ break;
|
||||
|
||||
/* coverity[dead_error_begin] */
|
||||
case VIR_DOMAIN_XEN_LAST:
|
||||
@@ -23340,18 +23376,28 @@ virDomainDefFeaturesCheckABIStability(vi
|
||||
/* xen */
|
||||
if (src->features[VIR_DOMAIN_FEATURE_XEN] == VIR_TRISTATE_SWITCH_ON) {
|
||||
for (i = 0; i < VIR_DOMAIN_XEN_LAST; i++) {
|
||||
+ if (src->xen_features[i] != dst->xen_features[i]) {
|
||||
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
+ _("State of Xen feature '%s' differs: "
|
||||
+ "source: '%s', destination: '%s'"),
|
||||
+ virDomainXenTypeToString(i),
|
||||
+ virTristateSwitchTypeToString(src->xen_features[i]),
|
||||
+ virTristateSwitchTypeToString(dst->xen_features[i]));
|
||||
+ return false;
|
||||
+ }
|
||||
switch ((virDomainXen) i) {
|
||||
case VIR_DOMAIN_XEN_E820_HOST:
|
||||
- if (src->xen_features[i] != dst->xen_features[i]) {
|
||||
+ break;
|
||||
+
|
||||
+ case VIR_DOMAIN_XEN_PASSTHROUGH:
|
||||
+ if (src->xen_passthrough_mode != dst->xen_passthrough_mode) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
- _("State of Xen feature '%s' differs: "
|
||||
+ _("'mode' of Xen passthrough feature differs: "
|
||||
"source: '%s', destination: '%s'"),
|
||||
- virDomainXenTypeToString(i),
|
||||
- virTristateSwitchTypeToString(src->xen_features[i]),
|
||||
- virTristateSwitchTypeToString(dst->xen_features[i]));
|
||||
+ virDomainXenPassthroughModeTypeToString(src->xen_passthrough_mode),
|
||||
+ virDomainXenPassthroughModeTypeToString(dst->xen_passthrough_mode));
|
||||
return false;
|
||||
}
|
||||
-
|
||||
break;
|
||||
|
||||
/* coverity[dead_error_begin] */
|
||||
@@ -28969,13 +29015,30 @@ virDomainDefFormatFeatures(virBufferPtr
|
||||
virBufferAddLit(&childBuf, "<xen>\n");
|
||||
virBufferAdjustIndent(&childBuf, 2);
|
||||
for (j = 0; j < VIR_DOMAIN_XEN_LAST; j++) {
|
||||
+ if (def->xen_features[j] == VIR_TRISTATE_SWITCH_ABSENT)
|
||||
+ continue;
|
||||
+
|
||||
+ virBufferAsprintf(&childBuf, "<%s state='%s'",
|
||||
+ virDomainXenTypeToString(j),
|
||||
+ virTristateSwitchTypeToString(
|
||||
+ def->xen_features[j]));
|
||||
+
|
||||
switch ((virDomainXen) j) {
|
||||
case VIR_DOMAIN_XEN_E820_HOST:
|
||||
- if (def->xen_features[j])
|
||||
- virBufferAsprintf(&childBuf, "<%s state='%s'/>\n",
|
||||
- virDomainXenTypeToString(j),
|
||||
- virTristateSwitchTypeToString(
|
||||
- def->xen_features[j]));
|
||||
+ virBufferAddLit(&childBuf, "/>\n");
|
||||
+ break;
|
||||
+ case VIR_DOMAIN_XEN_PASSTHROUGH:
|
||||
+ if (def->xen_features[j] != VIR_TRISTATE_SWITCH_ON) {
|
||||
+ virBufferAddLit(&childBuf, "/>\n");
|
||||
+ break;
|
||||
+ }
|
||||
+ if (def->xen_passthrough_mode == VIR_DOMAIN_XEN_PASSTHROUGH_MODE_SYNC_PT ||
|
||||
+ def->xen_passthrough_mode == VIR_DOMAIN_XEN_PASSTHROUGH_MODE_SHARE_PT) {
|
||||
+ virBufferEscapeString(&childBuf, " mode='%s'/>\n",
|
||||
+ virDomainXenPassthroughModeTypeToString(def->xen_passthrough_mode));
|
||||
+ } else {
|
||||
+ virBufferAddLit(&childBuf, "/>\n");
|
||||
+ }
|
||||
break;
|
||||
|
||||
/* coverity[dead_error_begin] */
|
||||
Index: libvirt-6.2.0/src/conf/domain_conf.h
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/conf/domain_conf.h
|
||||
+++ libvirt-6.2.0/src/conf/domain_conf.h
|
||||
@@ -1848,11 +1848,20 @@ typedef enum {
|
||||
|
||||
typedef enum {
|
||||
VIR_DOMAIN_XEN_E820_HOST = 0,
|
||||
+ VIR_DOMAIN_XEN_PASSTHROUGH,
|
||||
|
||||
VIR_DOMAIN_XEN_LAST
|
||||
} virDomainXen;
|
||||
|
||||
typedef enum {
|
||||
+ VIR_DOMAIN_XEN_PASSTHROUGH_MODE_DEFAULT = 0,
|
||||
+ VIR_DOMAIN_XEN_PASSTHROUGH_MODE_SYNC_PT,
|
||||
+ VIR_DOMAIN_XEN_PASSTHROUGH_MODE_SHARE_PT,
|
||||
+
|
||||
+ VIR_DOMAIN_XEN_PASSTHROUGH_MODE_LAST
|
||||
+} virDomainXenPassthroughMode;
|
||||
+
|
||||
+typedef enum {
|
||||
VIR_DOMAIN_CAPABILITIES_POLICY_DEFAULT = 0,
|
||||
VIR_DOMAIN_CAPABILITIES_POLICY_ALLOW,
|
||||
VIR_DOMAIN_CAPABILITIES_POLICY_DENY,
|
||||
@@ -2477,6 +2486,7 @@ struct _virDomainDef {
|
||||
int kvm_features[VIR_DOMAIN_KVM_LAST];
|
||||
int msrs_features[VIR_DOMAIN_MSRS_LAST];
|
||||
int xen_features[VIR_DOMAIN_XEN_LAST];
|
||||
+ int xen_passthrough_mode;
|
||||
unsigned int hyperv_spinlocks;
|
||||
int hyperv_stimer_direct;
|
||||
virGICVersion gic_version;
|
||||
@@ -3523,6 +3533,7 @@ VIR_ENUM_DECL(virDomainGraphicsVNCShareP
|
||||
VIR_ENUM_DECL(virDomainHyperv);
|
||||
VIR_ENUM_DECL(virDomainKVM);
|
||||
VIR_ENUM_DECL(virDomainXen);
|
||||
+VIR_ENUM_DECL(virDomainXenPassthroughMode);
|
||||
VIR_ENUM_DECL(virDomainMsrsUnknown);
|
||||
VIR_ENUM_DECL(virDomainRNGModel);
|
||||
VIR_ENUM_DECL(virDomainRNGBackend);
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:aec8881f236917c4f8064918df546ed3aacd0bb8a2f312f4d37485721cce0fb1
|
||||
size 8307248
|
@ -1,11 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQEzBAABCAAdFiEE20ZoG7ka3OoXD6LUFViLJllr6l0FAl6GOV8ACgkQFViLJllr
|
||||
6l10PAgAi2s7PQLVyGL7xHK12AO7HfH/e2jNoE+LDJfJa1SQITYLW2x3zdEV27JW
|
||||
SN8Hokf9dgRke0uJTBsQxcUxyRXFJkaGJ9pkUwkMuiUFA7fUWUPzBlBV8seaEqaf
|
||||
102Zr/VWsP90FmrZ8oQ14VOEw8IB6Jmi07hd+9I6uY+PdBeUz5YtZ1pQYOda9v+a
|
||||
yMsCDRusZKnpmVxbN1mlbmowq4rlJWDGouDpOFeB/u6RimdbAucYSfDF0RMz46Jt
|
||||
wqUne7gAeCeP0GprHrM5/gURFcepXC9muB2iUY/uQyMN96bfVyjU9M1xlSQcGiOZ
|
||||
Uuv0UCXfBYXFnhwb75RG91hxTGrlUg==
|
||||
=wKUd
|
||||
-----END PGP SIGNATURE-----
|
3
libvirt-6.3.0.tar.xz
Normal file
3
libvirt-6.3.0.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:74069438d34082336e99a88146349e21130552b96efc3b7c562f6878127996f5
|
||||
size 8442636
|
11
libvirt-6.3.0.tar.xz.asc
Normal file
11
libvirt-6.3.0.tar.xz.asc
Normal file
@ -0,0 +1,11 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQEzBAABCAAdFiEE20ZoG7ka3OoXD6LUFViLJllr6l0FAl6xDD0ACgkQFViLJllr
|
||||
6l01XQf/Rrt1ueDNLZEg/e8l42gKyoiC7lIZndYRGqpF0+P7CfWKRQAXktckuNdJ
|
||||
kVgP6lPl/pFZmsWUsYvb3GolB4OXIfavTgJx1LM+ku5Qa4RPJf8b9O9nikyisbrf
|
||||
xZe4HM+Z/DQ5ia9gt5/OrVg/uU2NW6bBsktPnRutfUbGP1lGY5a6crNFdSo2nYoy
|
||||
QbeRPUU8dDy1UCKOpl+Xm6EHbukq0Zj/nW+xRn+kiXQcMs46OfDHCU8J2mpmtJxC
|
||||
HJEHUZgZ2OymyzITtpg0CecfCixPVle2H+8zd8YOFpqx/IfL4WaNJgy1f4fjBFy9
|
||||
FgWXzzAwc80Cf4pMJzBZMynxNdfmRA==
|
||||
=kmvm
|
||||
-----END PGP SIGNATURE-----
|
@ -2,10 +2,10 @@ Add POWER8 v2.0 and v2.1 to cpu map XML
|
||||
|
||||
From: <ro@suse.de>
|
||||
|
||||
Index: libvirt-6.2.0/src/cpu_map/ppc64_POWER8.xml
|
||||
Index: libvirt-6.3.0/src/cpu_map/ppc64_POWER8.xml
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/cpu_map/ppc64_POWER8.xml
|
||||
+++ libvirt-6.2.0/src/cpu_map/ppc64_POWER8.xml
|
||||
--- libvirt-6.3.0.orig/src/cpu_map/ppc64_POWER8.xml
|
||||
+++ libvirt-6.3.0/src/cpu_map/ppc64_POWER8.xml
|
||||
@@ -4,5 +4,7 @@
|
||||
<pvr value='0x004b0000' mask='0xffff0000'/>
|
||||
<pvr value='0x004c0000' mask='0xffff0000'/>
|
||||
|
@ -1,7 +1,7 @@
|
||||
Index: libvirt-6.2.0/configure.ac
|
||||
Index: libvirt-6.3.0/configure.ac
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/configure.ac
|
||||
+++ libvirt-6.2.0/configure.ac
|
||||
--- libvirt-6.3.0.orig/configure.ac
|
||||
+++ libvirt-6.3.0/configure.ac
|
||||
@@ -278,6 +278,7 @@ LIBVIRT_ARG_LIBSSH
|
||||
LIBVIRT_ARG_LIBXML
|
||||
LIBVIRT_ARG_MACVTAP
|
||||
@ -26,10 +26,10 @@ Index: libvirt-6.2.0/configure.ac
|
||||
LIBVIRT_RESULT_NLS
|
||||
LIBVIRT_RESULT_NSS
|
||||
LIBVIRT_RESULT_NUMACTL
|
||||
Index: libvirt-6.2.0/tools/virsh.c
|
||||
Index: libvirt-6.3.0/tools/virsh.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tools/virsh.c
|
||||
+++ libvirt-6.2.0/tools/virsh.c
|
||||
--- libvirt-6.3.0.orig/tools/virsh.c
|
||||
+++ libvirt-6.3.0/tools/virsh.c
|
||||
@@ -547,6 +547,8 @@ virshShowVersion(vshControl *ctl G_GNUC_
|
||||
vshPrint(ctl, " Interface");
|
||||
# if defined(WITH_NETCF)
|
||||
@ -39,10 +39,10 @@ Index: libvirt-6.2.0/tools/virsh.c
|
||||
# elif defined(WITH_UDEV)
|
||||
vshPrint(ctl, " udev");
|
||||
# endif
|
||||
Index: libvirt-6.2.0/src/interface/interface_backend_netcf.c
|
||||
Index: libvirt-6.3.0/src/interface/interface_backend_netcf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/interface/interface_backend_netcf.c
|
||||
+++ libvirt-6.2.0/src/interface/interface_backend_netcf.c
|
||||
--- libvirt-6.3.0.orig/src/interface/interface_backend_netcf.c
|
||||
+++ libvirt-6.3.0/src/interface/interface_backend_netcf.c
|
||||
@@ -21,7 +21,12 @@
|
||||
|
||||
#include <config.h>
|
||||
@ -154,10 +154,10 @@ Index: libvirt-6.2.0/src/interface/interface_backend_netcf.c
|
||||
if (virRegisterConnectDriver(&interfaceConnectDriver, false) < 0)
|
||||
return -1;
|
||||
if (virSetSharedInterfaceDriver(&interfaceDriver) < 0)
|
||||
Index: libvirt-6.2.0/src/interface/interface_driver.c
|
||||
Index: libvirt-6.3.0/src/interface/interface_driver.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/interface/interface_driver.c
|
||||
+++ libvirt-6.2.0/src/interface/interface_driver.c
|
||||
--- libvirt-6.3.0.orig/src/interface/interface_driver.c
|
||||
+++ libvirt-6.3.0/src/interface/interface_driver.c
|
||||
@@ -30,8 +30,15 @@ interfaceRegister(void)
|
||||
if (netcfIfaceRegister() == 0)
|
||||
return 0;
|
||||
@ -175,10 +175,10 @@ Index: libvirt-6.2.0/src/interface/interface_driver.c
|
||||
if (udevIfaceRegister() == 0)
|
||||
return 0;
|
||||
#endif /* WITH_UDEV */
|
||||
Index: libvirt-6.2.0/m4/virt-netcontrol.m4
|
||||
Index: libvirt-6.3.0/m4/virt-netcontrol.m4
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-6.2.0/m4/virt-netcontrol.m4
|
||||
+++ libvirt-6.3.0/m4/virt-netcontrol.m4
|
||||
@@ -0,0 +1,39 @@
|
||||
+dnl The libnetcontrol library
|
||||
+dnl
|
||||
@ -219,10 +219,10 @@ Index: libvirt-6.2.0/m4/virt-netcontrol.m4
|
||||
+AC_DEFUN([LIBVIRT_RESULT_NETCONTROL],[
|
||||
+ LIBVIRT_RESULT_LIB([NETCONTROL])
|
||||
+])
|
||||
Index: libvirt-6.2.0/src/interface/Makefile.inc.am
|
||||
Index: libvirt-6.3.0/src/interface/Makefile.inc.am
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/interface/Makefile.inc.am
|
||||
+++ libvirt-6.2.0/src/interface/Makefile.inc.am
|
||||
--- libvirt-6.3.0.orig/src/interface/Makefile.inc.am
|
||||
+++ libvirt-6.3.0/src/interface/Makefile.inc.am
|
||||
@@ -6,6 +6,7 @@ INTERFACE_DRIVER_SOURCES = \
|
||||
$(NULL)
|
||||
|
||||
|
@ -1,3 +1,25 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed May 6 01:40:32 UTC 2020 - James Fehlig <jfehlig@suse.com>
|
||||
|
||||
- Update to libvirt 6.3.0
|
||||
- Many incremental improvements and bug fixes, see
|
||||
https://libvirt.org/news.html
|
||||
- Dropped patches:
|
||||
88011ed2-libxl-driver-crash-fix.patch,
|
||||
8e669b38-conf-add-event-channels.patch,
|
||||
a93f55c5-libxl-add-event-channels.patch,
|
||||
967f4eeb-xenconfig-event-channels.patch,
|
||||
93b15ba0-qemu-fix-hang-in-p2p-xbzrle-compression-parallel-mig.patch,
|
||||
b7d6648d-conf-add-e820-host.patch,
|
||||
5749395b-libxl-e820-host.patch,
|
||||
f3ef7daf-xenconfig-e820-host.patch,
|
||||
34077c1b-tests-check-e820-host.patch,
|
||||
fadbaa23-conf-add-passthrough.patch,
|
||||
9529e007-libxl-passthrough.patch,
|
||||
9cb8bc6f-xenconfig-refactor-features.patch,
|
||||
b523e225-xenconfig-passthrough.patch,
|
||||
bed32525-tests-check-passthrough.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 21 17:45:36 UTC 2020 - James Fehlig <jfehlig@suse.com>
|
||||
|
||||
|
138
libvirt.spec
138
libvirt.spec
@ -185,7 +185,7 @@
|
||||
|
||||
Name: libvirt
|
||||
URL: http://libvirt.org/
|
||||
Version: 6.2.0
|
||||
Version: 6.3.0
|
||||
Release: 0
|
||||
Summary: Library providing a virtualization API
|
||||
License: LGPL-2.1-or-later
|
||||
@ -338,20 +338,6 @@ Source6: libvirtd-relocation-server.xml
|
||||
Source99: baselibs.conf
|
||||
Source100: %{name}-rpmlintrc
|
||||
# Upstream patches
|
||||
Patch0: 88011ed2-libxl-driver-crash-fix.patch
|
||||
Patch1: 8e669b38-conf-add-event-channels.patch
|
||||
Patch2: a93f55c5-libxl-add-event-channels.patch
|
||||
Patch3: 967f4eeb-xenconfig-event-channels.patch
|
||||
Patch4: 93b15ba0-qemu-fix-hang-in-p2p-xbzrle-compression-parallel-mig.patch
|
||||
Patch5: b7d6648d-conf-add-e820-host.patch
|
||||
Patch6: 5749395b-libxl-e820-host.patch
|
||||
Patch7: f3ef7daf-xenconfig-e820-host.patch
|
||||
Patch8: 34077c1b-tests-check-e820-host.patch
|
||||
Patch9: fadbaa23-conf-add-passthrough.patch
|
||||
Patch10: 9529e007-libxl-passthrough.patch
|
||||
Patch11: 9cb8bc6f-xenconfig-refactor-features.patch
|
||||
Patch12: b523e225-xenconfig-passthrough.patch
|
||||
Patch13: bed32525-tests-check-passthrough.patch
|
||||
# Patches pending upstream review
|
||||
Patch100: libxl-dom-reset.patch
|
||||
Patch101: network-don-t-use-dhcp-authoritative-on-static-netwo.patch
|
||||
@ -887,20 +873,6 @@ libvirt plugin for NSS for translating domain names into IP addresses.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch100 -p1
|
||||
%patch101 -p1
|
||||
%patch150 -p1
|
||||
@ -1151,12 +1123,6 @@ done
|
||||
mkdir -p %{buildroot}/%{_localstatedir}/lib/%{name}
|
||||
mkdir -p %{buildroot}/%{_sysconfdir}/%{name}/hooks
|
||||
%find_lang %{name}
|
||||
# Add a README to the libvirt package with a note about the empty
|
||||
# file list
|
||||
cat > %{buildroot}/%{_docdir}/%{name}/libvirt.README << 'EOF'
|
||||
The libvirt package no longer contains any files. It exists now
|
||||
only to fulfill its 'Provides' contract.
|
||||
EOF
|
||||
install -d -m 0755 %{buildroot}/%{_localstatedir}/lib/%{name}/dnsmasq/
|
||||
install -d -m 0755 %{buildroot}/%{_datadir}/%{name}/networks/
|
||||
cp %{buildroot}/%{_sysconfdir}/%{name}/qemu/networks/default.xml \
|
||||
@ -1165,40 +1131,18 @@ rm -f %{buildroot}/%{_sysconfdir}/%{name}/qemu/networks/default.xml
|
||||
rm -f %{buildroot}/%{_sysconfdir}/%{name}/qemu/networks/autostart/default.xml
|
||||
# Strip auto-generated UUID - we need it generated per-install
|
||||
sed -i -e "/<uuid>/d" %{buildroot}/%{_datadir}/%{name}/networks/default.xml
|
||||
%if %{with_lxc}
|
||||
cat > %{buildroot}/%{_docdir}/%{name}/libvirt-daemon-lxc.README << 'EOF'
|
||||
Any empty package encapsulating requirements for a libvirtd capable
|
||||
of managing LXC.
|
||||
EOF
|
||||
%else
|
||||
%if ! %{with_lxc}
|
||||
rm -rf %{buildroot}/%{_sysconfdir}/%{name}/lxc.conf
|
||||
rm -f %{buildroot}/%{_datadir}/augeas/lenses/libvirtd_lxc.aug
|
||||
rm -f %{buildroot}/%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug
|
||||
rm -rf %{buildroot}/%{_sysconfdir}/logrotate.d/libvirtd.lxc
|
||||
%endif
|
||||
%if %{with_qemu}
|
||||
cat > %{buildroot}/%{_docdir}/%{name}/libvirt-daemon-qemu.README << 'EOF'
|
||||
Any empty package encapsulating requirements for a libvirtd capable
|
||||
of managing QEMU/KVM.
|
||||
EOF
|
||||
%else
|
||||
%if ! %{with_qemu}
|
||||
rm -rf %{buildroot}/%{_sysconfdir}/%{name}/qemu.conf
|
||||
rm -f %{buildroot}/%{_datadir}/augeas/lenses/libvirtd_qemu.aug
|
||||
rm -f %{buildroot}/%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug
|
||||
rm -rf %{buildroot}/%{_sysconfdir}/logrotate.d/libvirtd.qemu
|
||||
%endif
|
||||
%if %{with_vbox}
|
||||
cat > %{buildroot}/%{_docdir}/%{name}/libvirt-daemon-vbox.README << 'EOF'
|
||||
Any empty package encapsulating requirements for a libvirtd capable
|
||||
of managing VirtualBox.
|
||||
EOF
|
||||
%endif
|
||||
%if %{with_libxl}
|
||||
cat > %{buildroot}/%{_docdir}/%{name}/libvirt-daemon-xen.README << 'EOF'
|
||||
Any empty package encapsulating requirements for a libvirtd capable
|
||||
of managing Xen.
|
||||
EOF
|
||||
%endif
|
||||
%if ! %{with_libxl}
|
||||
rm -f %{buildroot}/%{_sysconfdir}/%{name}/libxl.conf
|
||||
rm -f %{buildroot}/%{_sysconfdir}/logrotate.d/libvirtd.libxl
|
||||
@ -1214,15 +1158,46 @@ rm -f %{buildroot}/%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug
|
||||
mkdir -p %{buildroot}/%{_fillupdir}
|
||||
rm -f %{buildroot}/usr/lib/sysctl.d/60-libvirtd.conf
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/libvirtd %{buildroot}%{_fillupdir}/sysconfig.libvirtd
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/virtproxyd %{buildroot}/%{_fillupdir}/sysconfig.virtproxyd
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/virtlogd %{buildroot}/%{_fillupdir}/sysconfig.virtlogd
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/virtlockd %{buildroot}/%{_fillupdir}/sysconfig.virtlockd
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/virtinterfaced %{buildroot}/%{_fillupdir}/sysconfig.virtinterfaced
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/virtnetworkd %{buildroot}/%{_fillupdir}/sysconfig.virtnetworkd
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/virtnodedevd %{buildroot}/%{_fillupdir}/sysconfig.virtnodedevd
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/virtnwfilterd %{buildroot}/%{_fillupdir}/sysconfig.virtnwfilterd
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/virtsecretd %{buildroot}/%{_fillupdir}/sysconfig.virtsecretd
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/virtstoraged %{buildroot}/%{_fillupdir}/sysconfig.virtstoraged
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/libvirt-guests %{buildroot}/%{_fillupdir}/sysconfig.libvirt-guests
|
||||
# Provide rc symlink backward compatibility
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rclibvirtd
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtproxyd
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtlogd
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtlockd
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtinterfaced
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtnetworkd
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtnodedevd
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtnwfilterd
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtsecretd
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtstoraged
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rclibvirt-guests
|
||||
|
||||
%if %{with_qemu}
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/virtqemud %{buildroot}/%{_fillupdir}/sysconfig.virtqemud
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtqemud
|
||||
%endif
|
||||
%if %{with_lxc}
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/virtlxcd %{buildroot}/%{_fillupdir}/sysconfig.virtlxcd
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtlxcd
|
||||
%endif
|
||||
%if %{with_libxl}
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/virtxend %{buildroot}/%{_fillupdir}/sysconfig.virtxend
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtxend
|
||||
%endif
|
||||
%if %{with_vbox}
|
||||
mv %{buildroot}/%{_sysconfdir}/sysconfig/virtvboxd %{buildroot}/%{_fillupdir}/sysconfig.virtvboxd
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtvboxd
|
||||
%endif
|
||||
|
||||
# install firewall services for migration ports
|
||||
mkdir -p %{buildroot}/%{_fwdefdir}
|
||||
%if %{with_firewalld}
|
||||
@ -1283,6 +1258,7 @@ fi
|
||||
%service_add_post libvirtd.service libvirtd.socket libvirtd-ro.socket libvirtd-admin.socket libvirtd-tcp.socket libvirtd-tls.socket virtlockd.service virtlockd.socket virtlogd.service virtlogd.socket virtlockd-admin.socket virtlogd-admin.socket virtproxyd.service virtproxyd.socket virtproxyd-ro.socket virtproxyd-admin.socket virtproxyd-tcp.socket virtproxyd-tls.socket virt-guest-shutdown.target
|
||||
%{fillup_only -n libvirtd}
|
||||
%{fillup_only -n virtlockd}
|
||||
%{fillup_only -n virtproxyd}
|
||||
%{fillup_only -n virtlogd}
|
||||
# The '--listen' option is incompatible with socket activation.
|
||||
# We need to forcibly remove it from /etc/sysconfig/libvirtd.
|
||||
@ -1485,7 +1461,6 @@ fi
|
||||
%postun nss -p /sbin/ldconfig
|
||||
|
||||
%files
|
||||
%doc %{_docdir}/%{name}/libvirt.README
|
||||
|
||||
%files daemon
|
||||
%{_sbindir}/libvirtd
|
||||
@ -1496,6 +1471,7 @@ fi
|
||||
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/
|
||||
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/hooks
|
||||
%{_fillupdir}/sysconfig.libvirtd
|
||||
%{_fillupdir}/sysconfig.virtproxyd
|
||||
%{_fillupdir}/sysconfig.virtlogd
|
||||
%{_fillupdir}/sysconfig.virtlockd
|
||||
%{_unitdir}/libvirtd.service
|
||||
@ -1520,6 +1496,7 @@ fi
|
||||
%{_sbindir}/rclibvirtd
|
||||
%{_sbindir}/rcvirtlogd
|
||||
%{_sbindir}/rcvirtlockd
|
||||
%{_sbindir}/rcvirtproxyd
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/libvirtd.conf
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/virtproxyd.conf
|
||||
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd
|
||||
@ -1600,6 +1577,7 @@ fi
|
||||
%config %{_sysconfdir}/%{name}/nwfilter/*.xml
|
||||
|
||||
%files daemon-driver-interface
|
||||
%{_fillupdir}/sysconfig.virtinterfaced
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/virtinterfaced.conf
|
||||
%{_datadir}/augeas/lenses/virtinterfaced.aug
|
||||
%{_datadir}/augeas/lenses/tests/test_virtinterfaced.aug
|
||||
@ -1608,10 +1586,12 @@ fi
|
||||
%{_unitdir}/virtinterfaced-ro.socket
|
||||
%{_unitdir}/virtinterfaced-admin.socket
|
||||
%{_sbindir}/virtinterfaced
|
||||
%{_sbindir}/rcvirtinterfaced
|
||||
%dir %{_libdir}/%{name}/connection-driver
|
||||
%{_libdir}/%{name}/connection-driver/libvirt_driver_interface.so
|
||||
|
||||
%files daemon-driver-network
|
||||
%{_fillupdir}/sysconfig.virtnetworkd
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/virtnetworkd.conf
|
||||
%{_datadir}/augeas/lenses/virtnetworkd.aug
|
||||
%{_datadir}/augeas/lenses/tests/test_virtnetworkd.aug
|
||||
@ -1620,6 +1600,7 @@ fi
|
||||
%{_unitdir}/virtnetworkd-ro.socket
|
||||
%{_unitdir}/virtnetworkd-admin.socket
|
||||
%{_sbindir}/virtnetworkd
|
||||
%{_sbindir}/rcvirtnetworkd
|
||||
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/qemu/
|
||||
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/qemu/networks/
|
||||
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/qemu/networks/autostart
|
||||
@ -1634,6 +1615,7 @@ fi
|
||||
%endif
|
||||
|
||||
%files daemon-driver-nodedev
|
||||
%{_fillupdir}/sysconfig.virtnodedevd
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/virtnodedevd.conf
|
||||
%{_datadir}/augeas/lenses/virtnodedevd.aug
|
||||
%{_datadir}/augeas/lenses/tests/test_virtnodedevd.aug
|
||||
@ -1642,10 +1624,12 @@ fi
|
||||
%{_unitdir}/virtnodedevd-ro.socket
|
||||
%{_unitdir}/virtnodedevd-admin.socket
|
||||
%{_sbindir}/virtnodedevd
|
||||
%{_sbindir}/rcvirtnodedevd
|
||||
%dir %{_libdir}/%{name}/connection-driver
|
||||
%{_libdir}/%{name}/connection-driver/libvirt_driver_nodedev.so
|
||||
|
||||
%files daemon-driver-nwfilter
|
||||
%{_fillupdir}/sysconfig.virtnwfilterd
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/virtnwfilterd.conf
|
||||
%{_datadir}/augeas/lenses/virtnwfilterd.aug
|
||||
%{_datadir}/augeas/lenses/tests/test_virtnwfilterd.aug
|
||||
@ -1654,11 +1638,13 @@ fi
|
||||
%{_unitdir}/virtnwfilterd-ro.socket
|
||||
%{_unitdir}/virtnwfilterd-admin.socket
|
||||
%{_sbindir}/virtnwfilterd
|
||||
%{_sbindir}/rcvirtnwfilterd
|
||||
%dir %attr(0700, root, root) %{_sysconfdir}/%{name}/nwfilter/
|
||||
%dir %{_libdir}/%{name}/connection-driver
|
||||
%{_libdir}/%{name}/connection-driver/libvirt_driver_nwfilter.so
|
||||
|
||||
%files daemon-driver-secret
|
||||
%{_fillupdir}/sysconfig.virtsecretd
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/virtsecretd.conf
|
||||
%{_datadir}/augeas/lenses/virtsecretd.aug
|
||||
%{_datadir}/augeas/lenses/tests/test_virtsecretd.aug
|
||||
@ -1667,12 +1653,14 @@ fi
|
||||
%{_unitdir}/virtsecretd-ro.socket
|
||||
%{_unitdir}/virtsecretd-admin.socket
|
||||
%{_sbindir}/virtsecretd
|
||||
%{_sbindir}/rcvirtsecretd
|
||||
%dir %{_libdir}/%{name}/connection-driver
|
||||
%{_libdir}/%{name}/connection-driver/libvirt_driver_secret.so
|
||||
|
||||
%files daemon-driver-storage
|
||||
|
||||
%files daemon-driver-storage-core
|
||||
%{_fillupdir}/sysconfig.virtstoraged
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/virtstoraged.conf
|
||||
%{_datadir}/augeas/lenses/virtstoraged.aug
|
||||
%{_datadir}/augeas/lenses/tests/test_virtstoraged.aug
|
||||
@ -1681,6 +1669,7 @@ fi
|
||||
%{_unitdir}/virtstoraged-ro.socket
|
||||
%{_unitdir}/virtstoraged-admin.socket
|
||||
%{_sbindir}/virtstoraged
|
||||
%{_sbindir}/rcvirtstoraged
|
||||
%attr(0755, root, root) %{_libdir}/%{name}/libvirt_parthelper
|
||||
%dir %{_libdir}/%{name}/connection-driver
|
||||
%{_libdir}/%{name}/connection-driver/libvirt_driver_storage.so
|
||||
@ -1728,6 +1717,7 @@ fi
|
||||
%if %{with_qemu}
|
||||
|
||||
%files daemon-driver-qemu
|
||||
%{_fillupdir}/sysconfig.virtqemud
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/virtqemud.conf
|
||||
%{_datadir}/augeas/lenses/virtqemud.aug
|
||||
%{_datadir}/augeas/lenses/tests/test_virtqemud.aug
|
||||
@ -1736,6 +1726,7 @@ fi
|
||||
%{_unitdir}/virtqemud-ro.socket
|
||||
%{_unitdir}/virtqemud-admin.socket
|
||||
%{_sbindir}/virtqemud
|
||||
%{_sbindir}/rcvirtqemud
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/qemu.conf
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/qemu-lockd.conf
|
||||
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.qemu
|
||||
@ -1757,6 +1748,7 @@ fi
|
||||
%if %{with_lxc}
|
||||
|
||||
%files daemon-driver-lxc
|
||||
%{_fillupdir}/sysconfig.virtlxcd
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/virtlxcd.conf
|
||||
%{_datadir}/augeas/lenses/virtlxcd.aug
|
||||
%{_datadir}/augeas/lenses/tests/test_virtlxcd.aug
|
||||
@ -1765,6 +1757,7 @@ fi
|
||||
%{_unitdir}/virtlxcd-ro.socket
|
||||
%{_unitdir}/virtlxcd-admin.socket
|
||||
%{_sbindir}/virtlxcd
|
||||
%{_sbindir}/rcvirtlxcd
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/lxc.conf
|
||||
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.lxc
|
||||
%dir %attr(0700, root, root) %{_localstatedir}/lib/%{name}/lxc/
|
||||
@ -1784,6 +1777,7 @@ fi
|
||||
%if %{with_libxl}
|
||||
|
||||
%files daemon-driver-libxl
|
||||
%{_fillupdir}/sysconfig.virtxend
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/virtxend.conf
|
||||
%{_datadir}/augeas/lenses/virtxend.aug
|
||||
%{_datadir}/augeas/lenses/tests/test_virtxend.aug
|
||||
@ -1792,6 +1786,7 @@ fi
|
||||
%{_unitdir}/virtxend-ro.socket
|
||||
%{_unitdir}/virtxend-admin.socket
|
||||
%{_sbindir}/virtxend
|
||||
%{_sbindir}/rcvirtxend
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/libxl.conf
|
||||
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.libxl
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/libxl-lockd.conf
|
||||
@ -1806,6 +1801,7 @@ fi
|
||||
%if %{with_vbox}
|
||||
|
||||
%files daemon-driver-vbox
|
||||
%{_fillupdir}/sysconfig.virtvboxd
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/virtvboxd.conf
|
||||
%{_datadir}/augeas/lenses/virtvboxd.aug
|
||||
%{_datadir}/augeas/lenses/tests/test_virtvboxd.aug
|
||||
@ -1814,31 +1810,28 @@ fi
|
||||
%{_unitdir}/virtvboxd-ro.socket
|
||||
%{_unitdir}/virtvboxd-admin.socket
|
||||
%{_sbindir}/virtvboxd
|
||||
%{_sbindir}/rcvirtvboxd
|
||||
%{_libdir}/%{name}/connection-driver/libvirt_driver_vbox.so
|
||||
%endif
|
||||
|
||||
%if %{with_qemu}
|
||||
|
||||
%files daemon-qemu
|
||||
%doc %{_docdir}/%{name}/libvirt-daemon-qemu.README
|
||||
%endif
|
||||
|
||||
%if %{with_lxc}
|
||||
|
||||
%files daemon-lxc
|
||||
%doc %{_docdir}/%{name}/libvirt-daemon-lxc.README
|
||||
%endif
|
||||
|
||||
%if %{with_libxl}
|
||||
|
||||
%files daemon-xen
|
||||
%doc %{_docdir}/%{name}/libvirt-daemon-xen.README
|
||||
%endif
|
||||
|
||||
%if %{with_vbox}
|
||||
|
||||
%files daemon-vbox
|
||||
%doc %{_docdir}/%{name}/libvirt-daemon-vbox.README
|
||||
%endif
|
||||
|
||||
%files client
|
||||
@ -1925,23 +1918,12 @@ fi
|
||||
%{_datadir}/%{name}/api/libvirt-lxc-api.xml
|
||||
|
||||
%files doc
|
||||
%doc AUTHORS NEWS README README.md
|
||||
%doc AUTHORS NEWS README README.rst
|
||||
%license COPYING COPYING.LESSER
|
||||
%dir %{_docdir}/%{name}
|
||||
%doc %{_docdir}/%{name}/*.png
|
||||
%doc %{_docdir}/%{name}/*.html
|
||||
%doc %{_docdir}/%{name}/*.gif
|
||||
%doc %{_docdir}/%{name}/*.css
|
||||
%doc %{_docdir}/%{name}/html
|
||||
%doc %{_docdir}/%{name}/internals
|
||||
%doc %{_docdir}/%{name}/kbase
|
||||
%doc %{_docdir}/%{name}/logos
|
||||
%doc %{_docdir}/%{name}/fonts
|
||||
%doc %{_docdir}/%{name}/js
|
||||
%doc %{_docdir}/%{name}/manpages
|
||||
%doc %{_docdir}/%{name}/*
|
||||
%dir %{_datadir}/doc/%{name}
|
||||
%dir %{_datadir}/doc/%{name}/examples
|
||||
%doc %{_datadir}/doc/%{name}/examples/*
|
||||
%doc %{_datadir}/doc/%{name}/*
|
||||
|
||||
%if %{with_sanlock}
|
||||
|
||||
|
@ -8,10 +8,10 @@ Date: Mon Jun 23 15:51:20 2014 -0600
|
||||
option, but domainReset can be implemented in the libxl driver by
|
||||
forcibly destroying the domain and starting it again.
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_driver.c
|
||||
Index: libvirt-6.3.0/src/libxl/libxl_driver.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_driver.c
|
||||
+++ libvirt-6.2.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
|
||||
@@ -1371,6 +1371,61 @@ libxlDomainReboot(virDomainPtr dom, unsi
|
||||
}
|
||||
|
||||
|
@ -3,10 +3,10 @@ https://bugzilla.novell.com/show_bug.cgi?id=879425
|
||||
src/libxl/libxl_conf.c | 25 +++++++++++++++++++++++++
|
||||
1 file changed, 25 insertions(+)
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
Index: libvirt-6.3.0/src/libxl/libxl_conf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
--- libvirt-6.3.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-6.3.0/src/libxl/libxl_conf.c
|
||||
@@ -905,6 +905,30 @@ libxlDiskSetDiscard(libxl_device_disk *x
|
||||
#endif
|
||||
}
|
||||
|
@ -16,10 +16,10 @@ Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
tools/virsh.pod | 8 ++++++++
|
||||
6 files changed, 125 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: libvirt-6.2.0/include/libvirt/libvirt-domain.h
|
||||
Index: libvirt-6.3.0/include/libvirt/libvirt-domain.h
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/include/libvirt/libvirt-domain.h
|
||||
+++ libvirt-6.2.0/include/libvirt/libvirt-domain.h
|
||||
--- libvirt-6.3.0.orig/include/libvirt/libvirt-domain.h
|
||||
+++ libvirt-6.3.0/include/libvirt/libvirt-domain.h
|
||||
@@ -1065,6 +1065,31 @@ typedef enum {
|
||||
*/
|
||||
# define VIR_MIGRATE_PARAM_TLS_DESTINATION "tls.destination"
|
||||
@ -52,10 +52,10 @@ Index: libvirt-6.2.0/include/libvirt/libvirt-domain.h
|
||||
/* Domain migration. */
|
||||
virDomainPtr virDomainMigrate (virDomainPtr domain, virConnectPtr dconn,
|
||||
unsigned long flags, const char *dname,
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_driver.c
|
||||
Index: libvirt-6.3.0/src/libxl/libxl_driver.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_driver.c
|
||||
+++ libvirt-6.2.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
|
||||
@@ -6196,6 +6196,9 @@ libxlDomainMigratePerform3Params(virDoma
|
||||
const char *dname = NULL;
|
||||
const char *uri = NULL;
|
||||
@ -99,10 +99,10 @@ Index: libvirt-6.2.0/src/libxl/libxl_driver.c
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_migration.c
|
||||
Index: libvirt-6.3.0/src/libxl/libxl_migration.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_migration.c
|
||||
+++ libvirt-6.2.0/src/libxl/libxl_migration.c
|
||||
--- libvirt-6.3.0.orig/src/libxl/libxl_migration.c
|
||||
+++ libvirt-6.3.0/src/libxl/libxl_migration.c
|
||||
@@ -345,18 +345,39 @@ libxlMigrateDstReceive(virNetSocketPtr s
|
||||
static int
|
||||
libxlDoMigrateSrcSend(libxlDriverPrivatePtr driver,
|
||||
@ -264,10 +264,10 @@ Index: libvirt-6.2.0/src/libxl/libxl_migration.c
|
||||
virObjectLock(vm);
|
||||
|
||||
if (ret == 0) {
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_migration.h
|
||||
Index: libvirt-6.3.0/src/libxl/libxl_migration.h
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_migration.h
|
||||
+++ libvirt-6.2.0/src/libxl/libxl_migration.h
|
||||
--- libvirt-6.3.0.orig/src/libxl/libxl_migration.h
|
||||
+++ libvirt-6.3.0/src/libxl/libxl_migration.h
|
||||
@@ -35,6 +35,10 @@
|
||||
VIR_MIGRATE_PARAM_URI, VIR_TYPED_PARAM_STRING, \
|
||||
VIR_MIGRATE_PARAM_DEST_NAME, VIR_TYPED_PARAM_STRING, \
|
||||
@ -312,11 +312,11 @@ Index: libvirt-6.2.0/src/libxl/libxl_migration.h
|
||||
|
||||
virDomainPtr
|
||||
libxlDomainMigrationDstFinish(virConnectPtr dconn,
|
||||
Index: libvirt-6.2.0/tools/virsh-domain.c
|
||||
Index: libvirt-6.3.0/tools/virsh-domain.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tools/virsh-domain.c
|
||||
+++ libvirt-6.2.0/tools/virsh-domain.c
|
||||
@@ -10716,6 +10716,22 @@ static const vshCmdOptDef opts_migrate[]
|
||||
--- 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[]
|
||||
.type = VSH_OT_STRING,
|
||||
.help = N_("override the destination host name used for TLS verification")
|
||||
},
|
||||
@ -339,7 +339,7 @@ Index: libvirt-6.2.0/tools/virsh-domain.c
|
||||
{.name = NULL}
|
||||
};
|
||||
|
||||
@@ -10738,6 +10754,7 @@ doMigrate(void *opaque)
|
||||
@@ -10743,6 +10759,7 @@ doMigrate(void *opaque)
|
||||
unsigned long long ullOpt = 0;
|
||||
int rv;
|
||||
virConnectPtr dconn = data->dconn;
|
||||
@ -347,7 +347,7 @@ Index: libvirt-6.2.0/tools/virsh-domain.c
|
||||
#ifndef WIN32
|
||||
sigset_t sigmask, oldsigmask;
|
||||
|
||||
@@ -10860,6 +10877,27 @@ doMigrate(void *opaque)
|
||||
@@ -10865,6 +10882,27 @@ doMigrate(void *opaque)
|
||||
goto save_error;
|
||||
}
|
||||
|
||||
@ -375,10 +375,10 @@ Index: libvirt-6.2.0/tools/virsh-domain.c
|
||||
if (vshCommandOptStringReq(ctl, cmd, "xml", &opt) < 0)
|
||||
goto out;
|
||||
if (opt) {
|
||||
Index: libvirt-6.2.0/docs/manpages/virsh.rst
|
||||
Index: libvirt-6.3.0/docs/manpages/virsh.rst
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/docs/manpages/virsh.rst
|
||||
+++ libvirt-6.2.0/docs/manpages/virsh.rst
|
||||
--- libvirt-6.3.0.orig/docs/manpages/virsh.rst
|
||||
+++ libvirt-6.3.0/docs/manpages/virsh.rst
|
||||
@@ -3093,6 +3093,8 @@ migrate
|
||||
[--postcopy-bandwidth bandwidth]
|
||||
[--parallel [--parallel-connections connections]]
|
||||
|
@ -7,10 +7,10 @@ and npiv.
|
||||
|
||||
For more details, see bsc#954872 and FATE#319810
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
Index: libvirt-6.3.0/src/libxl/libxl_conf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
--- libvirt-6.3.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-6.3.0/src/libxl/libxl_conf.c
|
||||
@@ -905,6 +905,22 @@ libxlDiskSetDiscard(libxl_device_disk *x
|
||||
#endif
|
||||
}
|
||||
|
@ -13,10 +13,10 @@ device with the same name that is being created.
|
||||
src/lxc/lxc_process.c | 1 +
|
||||
3 files changed, 4 insertions(+)
|
||||
|
||||
Index: libvirt-6.2.0/src/lxc/lxc_controller.c
|
||||
Index: libvirt-6.3.0/src/lxc/lxc_controller.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/lxc/lxc_controller.c
|
||||
+++ libvirt-6.2.0/src/lxc/lxc_controller.c
|
||||
--- libvirt-6.3.0.orig/src/lxc/lxc_controller.c
|
||||
+++ libvirt-6.3.0/src/lxc/lxc_controller.c
|
||||
@@ -2056,6 +2056,7 @@ static int virLXCControllerDeleteInterfa
|
||||
if (virNetDevVethDelete(ctrl->veths[i]) < 0)
|
||||
ret = -1;
|
||||
@ -25,10 +25,10 @@ Index: libvirt-6.2.0/src/lxc/lxc_controller.c
|
||||
|
||||
return ret;
|
||||
}
|
||||
Index: libvirt-6.2.0/src/lxc/lxc_driver.c
|
||||
Index: libvirt-6.3.0/src/lxc/lxc_driver.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/lxc/lxc_driver.c
|
||||
+++ libvirt-6.2.0/src/lxc/lxc_driver.c
|
||||
--- libvirt-6.3.0.orig/src/lxc/lxc_driver.c
|
||||
+++ libvirt-6.3.0/src/lxc/lxc_driver.c
|
||||
@@ -67,6 +67,7 @@
|
||||
#include "virtime.h"
|
||||
#include "virtypedparam.h"
|
||||
@ -37,7 +37,7 @@ Index: libvirt-6.2.0/src/lxc/lxc_driver.c
|
||||
#include "virstring.h"
|
||||
#include "viraccessapicheck.h"
|
||||
#include "viraccessapichecklxc.h"
|
||||
@@ -3551,6 +3552,7 @@ lxcDomainAttachDeviceNetLive(virLXCDrive
|
||||
@@ -3552,6 +3553,7 @@ lxcDomainAttachDeviceNetLive(virLXCDrive
|
||||
case VIR_DOMAIN_NET_TYPE_NETWORK:
|
||||
case VIR_DOMAIN_NET_TYPE_ETHERNET:
|
||||
ignore_value(virNetDevVethDelete(veth));
|
||||
@ -45,7 +45,7 @@ Index: libvirt-6.2.0/src/lxc/lxc_driver.c
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_NET_TYPE_DIRECT:
|
||||
@@ -3991,6 +3993,7 @@ lxcDomainDetachDeviceNetLive(virDomainOb
|
||||
@@ -3992,6 +3994,7 @@ lxcDomainDetachDeviceNetLive(virDomainOb
|
||||
virDomainAuditNet(vm, detach, NULL, "detach", false);
|
||||
goto cleanup;
|
||||
}
|
||||
@ -53,10 +53,10 @@ Index: libvirt-6.2.0/src/lxc/lxc_driver.c
|
||||
break;
|
||||
|
||||
/* It'd be nice to support this, but with macvlan
|
||||
Index: libvirt-6.2.0/src/lxc/lxc_process.c
|
||||
Index: libvirt-6.3.0/src/lxc/lxc_process.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/lxc/lxc_process.c
|
||||
+++ libvirt-6.2.0/src/lxc/lxc_process.c
|
||||
--- libvirt-6.3.0.orig/src/lxc/lxc_process.c
|
||||
+++ libvirt-6.3.0/src/lxc/lxc_process.c
|
||||
@@ -50,6 +50,7 @@
|
||||
#include "virstring.h"
|
||||
#include "virprocess.h"
|
||||
|
@ -17,11 +17,11 @@ Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
tests/networkxml2confdata/dhcp6host-routed-network.conf | 1 -
|
||||
2 files changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: libvirt-6.2.0/src/network/bridge_driver.c
|
||||
Index: libvirt-6.3.0/src/network/bridge_driver.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/network/bridge_driver.c
|
||||
+++ libvirt-6.2.0/src/network/bridge_driver.c
|
||||
@@ -1444,7 +1444,14 @@ networkDnsmasqConfContents(virNetworkObj
|
||||
--- libvirt-6.3.0.orig/src/network/bridge_driver.c
|
||||
+++ libvirt-6.3.0/src/network/bridge_driver.c
|
||||
@@ -1476,7 +1476,14 @@ networkDnsmasqConfContents(virNetworkObj
|
||||
if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET)) {
|
||||
if (ipdef->nranges || ipdef->nhosts) {
|
||||
virBufferAddLit(&configbuf, "dhcp-no-override\n");
|
||||
@ -37,10 +37,10 @@ Index: libvirt-6.2.0/src/network/bridge_driver.c
|
||||
}
|
||||
|
||||
if (ipdef->tftproot) {
|
||||
Index: libvirt-6.2.0/tests/networkxml2confdata/dhcp6host-routed-network.conf
|
||||
Index: libvirt-6.3.0/tests/networkxml2confdata/dhcp6host-routed-network.conf
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tests/networkxml2confdata/dhcp6host-routed-network.conf
|
||||
+++ libvirt-6.2.0/tests/networkxml2confdata/dhcp6host-routed-network.conf
|
||||
--- libvirt-6.3.0.orig/tests/networkxml2confdata/dhcp6host-routed-network.conf
|
||||
+++ libvirt-6.3.0/tests/networkxml2confdata/dhcp6host-routed-network.conf
|
||||
@@ -10,7 +10,6 @@ bind-dynamic
|
||||
interface=virbr1
|
||||
dhcp-range=192.168.122.1,static
|
||||
|
@ -2,10 +2,10 @@ Canonicalize hostarch name ppc64le to ppc64
|
||||
|
||||
See bnc#894956
|
||||
|
||||
Index: libvirt-6.2.0/src/util/virarch.c
|
||||
Index: libvirt-6.3.0/src/util/virarch.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/util/virarch.c
|
||||
+++ libvirt-6.2.0/src/util/virarch.c
|
||||
--- libvirt-6.3.0.orig/src/util/virarch.c
|
||||
+++ libvirt-6.3.0/src/util/virarch.c
|
||||
@@ -220,6 +220,8 @@ virArch virArchFromHost(void)
|
||||
arch = VIR_ARCH_I686;
|
||||
} else if (STREQ(ut.machine, "amd64")) {
|
||||
|
@ -1,11 +1,11 @@
|
||||
Index: libvirt-6.2.0/src/security/apparmor/libvirt-qemu
|
||||
Index: libvirt-6.3.0/src/security/apparmor/libvirt-qemu
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/security/apparmor/libvirt-qemu
|
||||
+++ libvirt-6.2.0/src/security/apparmor/libvirt-qemu
|
||||
@@ -228,3 +228,6 @@
|
||||
# required for sasl GSSAPI plugin
|
||||
/etc/gss/mech.d/ r,
|
||||
/etc/gss/mech.d/* r,
|
||||
--- libvirt-6.3.0.orig/src/security/apparmor/libvirt-qemu
|
||||
+++ libvirt-6.3.0/src/security/apparmor/libvirt-qemu
|
||||
@@ -233,3 +233,6 @@
|
||||
# /sys/bus/nd/devices
|
||||
/ r, # harmless on any lsb compliant system
|
||||
/sys/bus/nd/devices/{,**/} r,
|
||||
+
|
||||
+ # Temporary screendump rule -- See bsc#904426
|
||||
+ /var/cache/libvirt/qemu/qemu.screendump.* rw,
|
||||
|
@ -8,10 +8,10 @@ Subject: [PATCH] support managed pci devices in xen driver
|
||||
src/xenxs/xen_xm.c | 28 +++++++++++++++++++++++++++-
|
||||
2 files changed, 35 insertions(+), 15 deletions(-)
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/xen_common.c
|
||||
Index: libvirt-6.3.0/src/libxl/xen_common.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/xen_common.c
|
||||
+++ libvirt-6.2.0/src/libxl/xen_common.c
|
||||
--- libvirt-6.3.0.orig/src/libxl/xen_common.c
|
||||
+++ libvirt-6.3.0/src/libxl/xen_common.c
|
||||
@@ -381,12 +381,19 @@ xenParsePCI(char *entry)
|
||||
int busID;
|
||||
int slotID;
|
||||
|
@ -8,10 +8,10 @@ It was also noticed that the per-domain profiles need a libnl rule
|
||||
to squelch a denial when starting confined domains.
|
||||
|
||||
Found while investigating bsc#1058847
|
||||
Index: libvirt-6.2.0/src/security/apparmor/libvirt-qemu
|
||||
Index: libvirt-6.3.0/src/security/apparmor/libvirt-qemu
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/security/apparmor/libvirt-qemu
|
||||
+++ libvirt-6.2.0/src/security/apparmor/libvirt-qemu
|
||||
--- libvirt-6.3.0.orig/src/security/apparmor/libvirt-qemu
|
||||
+++ libvirt-6.3.0/src/security/apparmor/libvirt-qemu
|
||||
@@ -61,6 +61,7 @@
|
||||
#/dev/fb* rw,
|
||||
|
||||
@ -20,10 +20,10 @@ Index: libvirt-6.2.0/src/security/apparmor/libvirt-qemu
|
||||
@{HOME}/.pulse-cookie rwk,
|
||||
owner /root/.pulse-cookie rwk,
|
||||
owner /root/.pulse/ rw,
|
||||
Index: libvirt-6.2.0/src/security/apparmor/usr.lib.libvirt.virt-aa-helper.in
|
||||
Index: libvirt-6.3.0/src/security/apparmor/usr.lib.libvirt.virt-aa-helper.in
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/security/apparmor/usr.lib.libvirt.virt-aa-helper.in
|
||||
+++ libvirt-6.2.0/src/security/apparmor/usr.lib.libvirt.virt-aa-helper.in
|
||||
--- libvirt-6.3.0.orig/src/security/apparmor/usr.lib.libvirt.virt-aa-helper.in
|
||||
+++ libvirt-6.3.0/src/security/apparmor/usr.lib.libvirt.virt-aa-helper.in
|
||||
@@ -19,7 +19,7 @@ profile virt-aa-helper @libexecdir@/virt
|
||||
# Used when internally running another command (namely apparmor_parser)
|
||||
@{PROC}/@{pid}/fd/ r,
|
||||
|
@ -9,10 +9,10 @@ need backporting to anything older. The dependency on xen.git commit
|
||||
c3999835df makes it hard to upstream this patch.
|
||||
|
||||
See bsc#1157490 and bsc#1167007 for more details
|
||||
Index: libvirt-6.2.0/m4/virt-driver-libxl.m4
|
||||
Index: libvirt-6.3.0/m4/virt-driver-libxl.m4
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/m4/virt-driver-libxl.m4
|
||||
+++ libvirt-6.2.0/m4/virt-driver-libxl.m4
|
||||
--- libvirt-6.3.0.orig/m4/virt-driver-libxl.m4
|
||||
+++ libvirt-6.3.0/m4/virt-driver-libxl.m4
|
||||
@@ -26,11 +26,11 @@ AC_DEFUN([LIBVIRT_DRIVER_CHECK_LIBXL], [
|
||||
LIBXL_CFLAGS=""
|
||||
LIBXL_FIRMWARE_DIR=""
|
||||
@ -27,10 +27,10 @@ Index: libvirt-6.2.0/m4/virt-driver-libxl.m4
|
||||
if test "x$with_libxl" = "xyes" ; then
|
||||
LIBXL_FIRMWARE_DIR=$($PKG_CONFIG --variable xenfirmwaredir xenlight)
|
||||
LIBXL_EXECBIN_DIR=$($PKG_CONFIG --variable libexec_bin xenlight)
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
Index: libvirt-6.3.0/src/libxl/libxl_conf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
--- libvirt-6.3.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-6.3.0/src/libxl/libxl_conf.c
|
||||
@@ -1823,7 +1823,7 @@ libxlDriverConfigNew(void)
|
||||
int
|
||||
libxlDriverConfigInit(libxlDriverConfigPtr cfg)
|
||||
@ -40,10 +40,10 @@ Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
|
||||
if (virFileMakePath(cfg->logDir) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_domain.c
|
||||
Index: libvirt-6.3.0/src/libxl/libxl_domain.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_domain.c
|
||||
+++ libvirt-6.2.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
|
||||
@@ -1020,8 +1020,8 @@ libxlDomainSetVcpuAffinities(libxlDriver
|
||||
static int
|
||||
libxlDomainFreeMem(libxl_ctx *ctx, libxl_domain_config *d_config)
|
||||
@ -64,10 +64,10 @@ Index: libvirt-6.2.0/src/libxl/libxl_domain.c
|
||||
&aop_console_how);
|
||||
libxl_domain_restore_params_dispose(¶ms);
|
||||
}
|
||||
Index: libvirt-6.2.0/tests/libxlmock.c
|
||||
Index: libvirt-6.3.0/tests/libxlmock.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tests/libxlmock.c
|
||||
+++ libvirt-6.2.0/tests/libxlmock.c
|
||||
--- libvirt-6.3.0.orig/tests/libxlmock.c
|
||||
+++ libvirt-6.3.0/tests/libxlmock.c
|
||||
@@ -67,7 +67,7 @@ VIR_MOCK_IMPL_RET_ARGS(libxl_get_version
|
||||
VIR_MOCK_STUB_RET_ARGS(libxl_get_free_memory,
|
||||
int, 0,
|
||||
|
@ -1,9 +1,9 @@
|
||||
Adjust libvirt-guests service to conform to SUSE standards
|
||||
|
||||
Index: libvirt-6.2.0/tools/libvirt-guests.sh.in
|
||||
Index: libvirt-6.3.0/tools/libvirt-guests.sh.in
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tools/libvirt-guests.sh.in
|
||||
+++ libvirt-6.2.0/tools/libvirt-guests.sh.in
|
||||
--- libvirt-6.3.0.orig/tools/libvirt-guests.sh.in
|
||||
+++ libvirt-6.3.0/tools/libvirt-guests.sh.in
|
||||
@@ -16,14 +16,13 @@
|
||||
# License along with this library. If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
@ -74,8 +74,8 @@ Index: libvirt-6.2.0/tools/libvirt-guests.sh.in
|
||||
# check if URI is reachable
|
||||
test_connect()
|
||||
@@ -108,7 +129,7 @@ list_guests() {
|
||||
local list=$(run_virsh_c "$uri" list --uuid $persistent)
|
||||
|
||||
list=$(run_virsh_c "$uri" list --uuid $persistent)
|
||||
if [ $? -ne 0 ]; then
|
||||
- RETVAL=1
|
||||
+ rc_failed 1
|
||||
@ -83,15 +83,15 @@ Index: libvirt-6.2.0/tools/libvirt-guests.sh.in
|
||||
fi
|
||||
|
||||
@@ -134,7 +155,7 @@ guest_is_on() {
|
||||
|
||||
guest_running=false
|
||||
id=$(run_virsh "$uri" domid "$uuid")
|
||||
if [ $? -ne 0 ]; then
|
||||
- RETVAL=1
|
||||
+ rc_failed 1
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -184,6 +205,13 @@ start() {
|
||||
@@ -190,6 +211,13 @@ start() {
|
||||
|
||||
test_connect "$uri" || continue
|
||||
|
||||
@ -104,8 +104,8 @@ Index: libvirt-6.2.0/tools/libvirt-guests.sh.in
|
||||
+
|
||||
eval_gettext "Resuming guests on \$uri URI..."; echo
|
||||
for guest in $list; do
|
||||
name=$(guest_name "$uri" "$guest")
|
||||
@@ -405,7 +433,7 @@ shutdown_guests_parallel()
|
||||
local name=$(guest_name "$uri" "$guest")
|
||||
@@ -418,7 +446,7 @@ shutdown_guests_parallel()
|
||||
timeout=$(($timeout - 1))
|
||||
if [ $timeout -le 0 ]; then
|
||||
eval_gettext "Timeout expired while shutting down domains"; echo
|
||||
@ -114,7 +114,7 @@ Index: libvirt-6.2.0/tools/libvirt-guests.sh.in
|
||||
return
|
||||
fi
|
||||
else
|
||||
@@ -434,7 +462,7 @@ stop() {
|
||||
@@ -449,7 +477,7 @@ stop() {
|
||||
if [ $SHUTDOWN_TIMEOUT -lt 0 ]; then
|
||||
gettext "SHUTDOWN_TIMEOUT must be equal or greater than 0"
|
||||
echo
|
||||
@ -123,7 +123,7 @@ Index: libvirt-6.2.0/tools/libvirt-guests.sh.in
|
||||
return
|
||||
fi
|
||||
fi
|
||||
@@ -482,14 +510,14 @@ stop() {
|
||||
@@ -499,14 +527,14 @@ stop() {
|
||||
if [ $? -ne 0 ]; then
|
||||
eval_gettext "Failed to list persistent guests on \$uri"
|
||||
echo
|
||||
@ -140,7 +140,7 @@ Index: libvirt-6.2.0/tools/libvirt-guests.sh.in
|
||||
set +f
|
||||
return
|
||||
fi
|
||||
@@ -548,14 +576,13 @@ gueststatus() {
|
||||
@@ -567,14 +595,13 @@ gueststatus() {
|
||||
rh_status() {
|
||||
if [ -f "$LISTFILE" ]; then
|
||||
gettext "stopped, with saved guests"; echo
|
||||
@ -157,55 +157,49 @@ Index: libvirt-6.2.0/tools/libvirt-guests.sh.in
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@@ -600,4 +627,4 @@ case "$1" in
|
||||
@@ -619,4 +646,4 @@ case "$1" in
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
-exit $RETVAL
|
||||
+rc_exit
|
||||
Index: libvirt-6.2.0/tools/libvirt-guests.sysconf
|
||||
Index: libvirt-6.3.0/tools/libvirt-guests.sysconf
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tools/libvirt-guests.sysconf
|
||||
+++ libvirt-6.2.0/tools/libvirt-guests.sysconf
|
||||
@@ -1,19 +1,29 @@
|
||||
--- libvirt-6.3.0.orig/tools/libvirt-guests.sysconf
|
||||
+++ libvirt-6.3.0/tools/libvirt-guests.sysconf
|
||||
@@ -1,9 +1,14 @@
|
||||
+## Path: System/Virtualization/libvirt-guests
|
||||
+
|
||||
# Customizations for the libvirt-guests.service systemd unit
|
||||
|
||||
+## Type: string
|
||||
+## Default: default
|
||||
# URIs to check for running guests
|
||||
# example: URIS='default xen:///system vbox+tcp://host/system lxc:///system'
|
||||
-#URIS=default
|
||||
+URIS=default
|
||||
#URIS=default
|
||||
|
||||
+## Type: string
|
||||
+## Default: start
|
||||
# action taken on host boot
|
||||
# - start all guests which were running on shutdown are started on boot
|
||||
# regardless on their autostart settings
|
||||
# - ignore libvirt-guests init script won't start any guest on boot, however,
|
||||
# guests marked as autostart will still be automatically started by
|
||||
@@ -12,10 +17,14 @@
|
||||
# libvirtd
|
||||
-#ON_BOOT=start
|
||||
+ON_BOOT=start
|
||||
#ON_BOOT=start
|
||||
|
||||
+## Type: integer
|
||||
+## Default: 0
|
||||
# Number of seconds to wait between each guest start. Set to 0 to allow
|
||||
# parallel startup.
|
||||
-#START_DELAY=0
|
||||
+START_DELAY=0
|
||||
#START_DELAY=0
|
||||
|
||||
+## Type: string
|
||||
+## Default: suspend
|
||||
# action taken on host shutdown
|
||||
# - suspend all running guests are suspended using virsh managedsave
|
||||
# - shutdown all running guests are asked to shutdown. Please be careful with
|
||||
@@ -22,14 +32,18 @@
|
||||
# which just needs a long time to shutdown. When setting
|
||||
# ON_SHUTDOWN=shutdown, you must also set SHUTDOWN_TIMEOUT to a
|
||||
@@ -26,12 +35,16 @@
|
||||
# value suitable for your guests.
|
||||
-#ON_SHUTDOWN=suspend
|
||||
+ON_SHUTDOWN=suspend
|
||||
#ON_SHUTDOWN=suspend
|
||||
|
||||
+## Type: integer
|
||||
+## Default: 0
|
||||
@ -213,15 +207,14 @@ Index: libvirt-6.2.0/tools/libvirt-guests.sysconf
|
||||
# "ON_SHUTDOWN" is set to "shutdown". If Set to 0, guests will be shutdown one
|
||||
# after another. Number of guests on shutdown at any time will not exceed number
|
||||
# set in this variable.
|
||||
-#PARALLEL_SHUTDOWN=0
|
||||
+PARALLEL_SHUTDOWN=0
|
||||
#PARALLEL_SHUTDOWN=0
|
||||
|
||||
+## Type: integer
|
||||
+## Default: 300
|
||||
# Number of seconds we're willing to wait for a guest to shut down. If parallel
|
||||
# shutdown is enabled, this timeout applies as a timeout for shutting down all
|
||||
# guests on a single URI defined in the variable URIS. If this is 0, then there
|
||||
@@ -37,14 +51,18 @@
|
||||
@@ -39,14 +52,18 @@
|
||||
# request). The default value is 300 seconds (5 minutes).
|
||||
#SHUTDOWN_TIMEOUT=300
|
||||
|
||||
@ -230,8 +223,7 @@ Index: libvirt-6.2.0/tools/libvirt-guests.sysconf
|
||||
# If non-zero, try to bypass the file system cache when saving and
|
||||
# restoring guests, even though this may give slower operation for
|
||||
# some file systems.
|
||||
-#BYPASS_CACHE=0
|
||||
+BYPASS_CACHE=0
|
||||
#BYPASS_CACHE=0
|
||||
|
||||
+## Type: integer
|
||||
+## Default: 0
|
||||
|
@ -3,10 +3,10 @@ Disable TLS by default
|
||||
On SUSE distros, the default is for libvirtd to listen only on the
|
||||
Unix Domain Socket. The libvirt client still provides remote access
|
||||
via a SSH tunnel.
|
||||
Index: libvirt-6.2.0/src/remote/remote_daemon_config.c
|
||||
Index: libvirt-6.3.0/src/remote/remote_daemon_config.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/remote/remote_daemon_config.c
|
||||
+++ libvirt-6.2.0/src/remote/remote_daemon_config.c
|
||||
--- libvirt-6.3.0.orig/src/remote/remote_daemon_config.c
|
||||
+++ libvirt-6.3.0/src/remote/remote_daemon_config.c
|
||||
@@ -99,7 +99,7 @@ daemonConfigNew(bool privileged G_GNUC_U
|
||||
|
||||
#ifdef WITH_IP
|
||||
@ -16,10 +16,10 @@ Index: libvirt-6.2.0/src/remote/remote_daemon_config.c
|
||||
# else /* ! LIBVIRTD */
|
||||
data->listen_tls = 0; /* Always honoured, --listen doesn't exist. */
|
||||
# endif /* ! LIBVIRTD */
|
||||
Index: libvirt-6.2.0/src/remote/libvirtd.conf.in
|
||||
Index: libvirt-6.3.0/src/remote/libvirtd.conf.in
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/remote/libvirtd.conf.in
|
||||
+++ libvirt-6.2.0/src/remote/libvirtd.conf.in
|
||||
--- libvirt-6.3.0.orig/src/remote/libvirtd.conf.in
|
||||
+++ libvirt-6.3.0/src/remote/libvirtd.conf.in
|
||||
@@ -17,8 +17,8 @@
|
||||
# It is necessary to setup a CA and issue server certificates before
|
||||
# using this capability.
|
||||
|
@ -1,9 +1,9 @@
|
||||
Adjust libvirtd sysconfig file to conform to SUSE standards
|
||||
|
||||
Index: libvirt-6.2.0/src/remote/libvirtd.sysconf
|
||||
Index: libvirt-6.3.0/src/remote/libvirtd.sysconf
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/remote/libvirtd.sysconf
|
||||
+++ libvirt-6.2.0/src/remote/libvirtd.sysconf
|
||||
--- libvirt-6.3.0.orig/src/remote/libvirtd.sysconf
|
||||
+++ libvirt-6.3.0/src/remote/libvirtd.sysconf
|
||||
@@ -1,5 +1,9 @@
|
||||
+## Path: System/Virtualization/libvirt
|
||||
# Customizations for the libvirtd.service systemd unit
|
||||
@ -14,15 +14,10 @@ Index: libvirt-6.2.0/src/remote/libvirtd.sysconf
|
||||
# Default behaviour is for libvirtd.service to start on boot
|
||||
# so that VM autostart can be performed. We then want it to
|
||||
# shutdown again if nothing was started and rely on systemd
|
||||
@@ -11,9 +15,13 @@ LIBVIRTD_ARGS="--timeout 120"
|
||||
@@ -11,6 +15,8 @@ LIBVIRTD_ARGS="--timeout 120"
|
||||
# can be used to listen on TCP/TLS sockets
|
||||
#LIBVIRTD_ARGS="--listen"
|
||||
|
||||
+## Type: string
|
||||
+## Default: none
|
||||
# Override Kerberos service keytab for SASL/GSSAPI
|
||||
#KRB5_KTNAME=/etc/libvirt/krb5.tab
|
||||
|
||||
+## Type: string
|
||||
+## Default: none
|
||||
# Override the QEMU/SDL default audio driver probing when
|
||||
|
@ -6,10 +6,10 @@ autoballooning. This patch changes libvirt to also disable autoballooning
|
||||
by default. It can only be enabled with the 'autoballoon' setting in
|
||||
libxl.conf. See jsc#SLE-3059 for more details.
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/libxl.conf
|
||||
Index: libvirt-6.3.0/src/libxl/libxl.conf
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl.conf
|
||||
+++ libvirt-6.2.0/src/libxl/libxl.conf
|
||||
--- libvirt-6.3.0.orig/src/libxl/libxl.conf
|
||||
+++ libvirt-6.3.0/src/libxl/libxl.conf
|
||||
@@ -4,12 +4,11 @@
|
||||
|
||||
# Enable autoballooning of domain0
|
||||
@ -27,10 +27,10 @@ Index: libvirt-6.2.0/src/libxl/libxl.conf
|
||||
|
||||
|
||||
# In order to prevent accidentally starting two domains that
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
Index: libvirt-6.3.0/src/libxl/libxl_conf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
--- libvirt-6.3.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-6.3.0/src/libxl/libxl_conf.c
|
||||
@@ -1737,15 +1737,12 @@ libxlMakeBuildInfoVfb(virPortAllocatorRa
|
||||
/*
|
||||
* Get domain0 autoballoon configuration. Honor user-specified
|
||||
|
@ -1,9 +1,9 @@
|
||||
Adjust paths of OVMF firmwares on SUSE distros
|
||||
|
||||
Index: libvirt-6.2.0/src/qemu/qemu.conf
|
||||
Index: libvirt-6.3.0/src/qemu/qemu.conf
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/qemu/qemu.conf
|
||||
+++ libvirt-6.2.0/src/qemu/qemu.conf
|
||||
--- libvirt-6.3.0.orig/src/qemu/qemu.conf
|
||||
+++ libvirt-6.3.0/src/qemu/qemu.conf
|
||||
@@ -788,10 +788,9 @@
|
||||
# for x86_64 and i686, but it's AAVMF for aarch64. The libvirt default
|
||||
# follows this scheme.
|
||||
@ -18,11 +18,11 @@ Index: libvirt-6.2.0/src/qemu/qemu.conf
|
||||
#]
|
||||
|
||||
# The backend to use for handling stdout/stderr output from
|
||||
Index: libvirt-6.2.0/src/qemu/qemu_conf.c
|
||||
Index: libvirt-6.3.0/src/qemu/qemu_conf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/qemu/qemu_conf.c
|
||||
+++ libvirt-6.2.0/src/qemu/qemu_conf.c
|
||||
@@ -95,10 +95,9 @@ qemuDriverUnlock(virQEMUDriverPtr driver
|
||||
--- libvirt-6.3.0.orig/src/qemu/qemu_conf.c
|
||||
+++ libvirt-6.3.0/src/qemu/qemu_conf.c
|
||||
@@ -96,10 +96,9 @@ qemuDriverUnlock(virQEMUDriverPtr driver
|
||||
|
||||
#ifndef DEFAULT_LOADER_NVRAM
|
||||
# define DEFAULT_LOADER_NVRAM \
|
||||
@ -36,10 +36,10 @@ Index: libvirt-6.2.0/src/qemu/qemu_conf.c
|
||||
#endif
|
||||
|
||||
|
||||
Index: libvirt-6.2.0/src/security/virt-aa-helper.c
|
||||
Index: libvirt-6.3.0/src/security/virt-aa-helper.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/security/virt-aa-helper.c
|
||||
+++ libvirt-6.2.0/src/security/virt-aa-helper.c
|
||||
--- libvirt-6.3.0.orig/src/security/virt-aa-helper.c
|
||||
+++ libvirt-6.3.0/src/security/virt-aa-helper.c
|
||||
@@ -479,7 +479,8 @@ valid_path(const char *path, const bool
|
||||
"/usr/share/ovmf/", /* for OVMF images */
|
||||
"/usr/share/AAVMF/", /* for AAVMF images */
|
||||
|
@ -7,10 +7,10 @@ suse-qemu-conf-secdriver.patch, suse-qemu-conf-lockmgr.patch,
|
||||
etc.), but for now they are all lumped together in this
|
||||
single patch.
|
||||
|
||||
Index: libvirt-6.2.0/src/qemu/qemu.conf
|
||||
Index: libvirt-6.3.0/src/qemu/qemu.conf
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/qemu/qemu.conf
|
||||
+++ libvirt-6.2.0/src/qemu/qemu.conf
|
||||
--- libvirt-6.3.0.orig/src/qemu/qemu.conf
|
||||
+++ libvirt-6.3.0/src/qemu/qemu.conf
|
||||
@@ -420,10 +420,19 @@
|
||||
# isolation, but it cannot appear in a list of drivers.
|
||||
#
|
||||
@ -60,10 +60,10 @@ Index: libvirt-6.2.0/src/qemu/qemu.conf
|
||||
#
|
||||
#lock_manager = "lockd"
|
||||
|
||||
Index: libvirt-6.2.0/src/qemu/qemu_conf.c
|
||||
Index: libvirt-6.3.0/src/qemu/qemu_conf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/qemu/qemu_conf.c
|
||||
+++ libvirt-6.2.0/src/qemu/qemu_conf.c
|
||||
--- libvirt-6.3.0.orig/src/qemu/qemu_conf.c
|
||||
+++ libvirt-6.3.0/src/qemu/qemu_conf.c
|
||||
@@ -266,7 +266,7 @@ virQEMUDriverConfigPtr virQEMUDriverConf
|
||||
cfg->slirpHelperName = g_strdup(QEMU_SLIRP_HELPER);
|
||||
cfg->dbusDaemonName = g_strdup(QEMU_DBUS_DAEMON);
|
||||
|
@ -1,14 +1,14 @@
|
||||
Adjust virtlockd sysconfig file to conform to SUSE standards
|
||||
|
||||
Index: libvirt-6.2.0/src/locking/virtlockd.sysconf
|
||||
Index: libvirt-6.3.0/src/locking/virtlockd.sysconf
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/locking/virtlockd.sysconf
|
||||
+++ libvirt-6.2.0/src/locking/virtlockd.sysconf
|
||||
--- libvirt-6.3.0.orig/src/locking/virtlockd.sysconf
|
||||
+++ libvirt-6.3.0/src/locking/virtlockd.sysconf
|
||||
@@ -1,3 +1,7 @@
|
||||
+## Path: System/Virtualization/virtlockd
|
||||
+
|
||||
+## Type: string
|
||||
+## Default: ""
|
||||
#
|
||||
# Pass extra arguments to virtlockd
|
||||
#VIRTLOCKD_ARGS=
|
||||
# Customizations for the virtlockd.service systemd unit
|
||||
|
||||
VIRTLOCKD_ARGS=""
|
||||
|
@ -1,14 +1,14 @@
|
||||
Adjust virtlogd sysconfig file to conform to SUSE standards
|
||||
|
||||
Index: libvirt-6.2.0/src/logging/virtlogd.sysconf
|
||||
Index: libvirt-6.3.0/src/logging/virtlogd.sysconf
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/logging/virtlogd.sysconf
|
||||
+++ libvirt-6.2.0/src/logging/virtlogd.sysconf
|
||||
--- libvirt-6.3.0.orig/src/logging/virtlogd.sysconf
|
||||
+++ libvirt-6.3.0/src/logging/virtlogd.sysconf
|
||||
@@ -1,3 +1,7 @@
|
||||
+## Path: System/Virtualization/virtlogd
|
||||
+
|
||||
+## Type: string
|
||||
+## Default: ""
|
||||
#
|
||||
# Pass extra arguments to virtlogd
|
||||
#VIRTLOGD_ARGS=
|
||||
# Customizations for the virtlogd.service systemd unit
|
||||
|
||||
VIRTLOGD_ARGS=""
|
||||
|
@ -5,10 +5,10 @@ upstream support for firmware autoselection in the xen driver. Sadly, the
|
||||
upstream efforts to improve firmware handling in the qemu driver broke
|
||||
the firmware handling in the xen driver.
|
||||
|
||||
Index: libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
Index: libvirt-6.3.0/src/libxl/libxl_conf.c
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-6.2.0/src/libxl/libxl_conf.c
|
||||
--- libvirt-6.3.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-6.3.0/src/libxl/libxl_conf.c
|
||||
@@ -1777,6 +1777,15 @@ libxlDriverConfigNew(void)
|
||||
cfg->autoDumpDir = g_strdup(LIBXL_DUMP_DIR);
|
||||
cfg->channelDir = g_strdup(LIBXL_CHANNEL_DIR);
|
||||
|
@ -1,7 +1,7 @@
|
||||
Index: libvirt-6.2.0/tools/Makefile.am
|
||||
Index: libvirt-6.3.0/tools/Makefile.am
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/tools/Makefile.am
|
||||
+++ libvirt-6.2.0/tools/Makefile.am
|
||||
--- libvirt-6.3.0.orig/tools/Makefile.am
|
||||
+++ libvirt-6.3.0/tools/Makefile.am
|
||||
@@ -70,7 +70,7 @@ MAINTAINERCLEANFILES =
|
||||
confdir = $(sysconfdir)/libvirt
|
||||
conf_DATA =
|
||||
@ -11,10 +11,10 @@ Index: libvirt-6.2.0/tools/Makefile.am
|
||||
bin_PROGRAMS = virsh virt-admin
|
||||
libexec_SCRIPTS = libvirt-guests.sh
|
||||
|
||||
Index: libvirt-6.2.0/tools/virt-create-rootfs
|
||||
Index: libvirt-6.3.0/tools/virt-create-rootfs
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-6.2.0/tools/virt-create-rootfs
|
||||
+++ libvirt-6.3.0/tools/virt-create-rootfs
|
||||
@@ -0,0 +1,231 @@
|
||||
+#!/bin/sh
|
||||
+set -e
|
||||
@ -247,11 +247,11 @@ Index: libvirt-6.2.0/tools/virt-create-rootfs
|
||||
+ echo "pts/0" >> "$ROOT/etc/securetty"
|
||||
+ chroot "$ROOT" /usr/bin/passwd
|
||||
+fi
|
||||
Index: libvirt-6.2.0/docs/Makefile.am
|
||||
Index: libvirt-6.3.0/docs/Makefile.am
|
||||
===================================================================
|
||||
--- libvirt-6.2.0.orig/docs/Makefile.am
|
||||
+++ libvirt-6.2.0/docs/Makefile.am
|
||||
@@ -209,6 +209,7 @@ manpages1_rst = \
|
||||
--- libvirt-6.3.0.orig/docs/Makefile.am
|
||||
+++ libvirt-6.3.0/docs/Makefile.am
|
||||
@@ -215,6 +215,7 @@ manpages1_rst = \
|
||||
manpages/virt-xml-validate.rst \
|
||||
manpages/virt-admin.rst \
|
||||
manpages/virsh.rst \
|
||||
@ -259,10 +259,10 @@ Index: libvirt-6.2.0/docs/Makefile.am
|
||||
$(NULL)
|
||||
manpages7_rst = \
|
||||
$(KEYCODES:%=manpages/virkeycode-%.rst) \
|
||||
Index: libvirt-6.2.0/docs/manpages/virt-create-rootfs.rst
|
||||
Index: libvirt-6.3.0/docs/manpages/virt-create-rootfs.rst
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-6.2.0/docs/manpages/virt-create-rootfs.rst
|
||||
+++ libvirt-6.3.0/docs/manpages/virt-create-rootfs.rst
|
||||
@@ -0,0 +1,88 @@
|
||||
+==================
|
||||
+virt-create-rootfs
|
||||
|
Loading…
Reference in New Issue
Block a user