[PATCH] numa: forbid '-numa node, mem' for 5.1 and newer machine types
by Igor Mammedov
Deprecation period is run out and it's a time to flip the switch
introduced by cd5ff8333a. Disable legacy option for new machine
types (since 5.1) and amend documentation.
'-numa node,memdev' shall be used instead of disabled option
with new machine types.
Signed-off-by: Igor Mammedov <imammedo(a)redhat.com>
---
- rebased on top of current master
- move compat mode from 4.2 to 5.0
CC: peter.maydell(a)linaro.org
CC: ehabkost(a)redhat.com
CC: marcel.apfelbaum(a)gmail.com
CC: mst(a)redhat.com
CC: pbonzini(a)redhat.com
CC: rth(a)twiddle.net
CC: david(a)gibson.dropbear.id.au
CC: libvir-list(a)redhat.com
CC: qemu-arm(a)nongnu.org
CC: qemu-ppc(a)nongnu.org
---
docs/system/deprecated.rst | 17 -----------------
hw/arm/virt.c | 2 +-
hw/core/numa.c | 6 ++++++
hw/i386/pc.c | 1 -
hw/i386/pc_piix.c | 1 +
hw/i386/pc_q35.c | 1 +
hw/ppc/spapr.c | 2 +-
qemu-options.hx | 9 +++++----
8 files changed, 15 insertions(+), 24 deletions(-)
diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst
index f0061f94aa..57edc075c2 100644
--- a/docs/system/deprecated.rst
+++ b/docs/system/deprecated.rst
@@ -101,23 +101,6 @@ error in the future.
The ``-realtime mlock=on|off`` argument has been replaced by the
``-overcommit mem-lock=on|off`` argument.
-``-numa node,mem=``\ *size* (since 4.1)
-'''''''''''''''''''''''''''''''''''''''
-
-The parameter ``mem`` of ``-numa node`` is used to assign a part of
-guest RAM to a NUMA node. But when using it, it's impossible to manage specified
-RAM chunk on the host side (like bind it to a host node, setting bind policy, ...),
-so guest end-ups with the fake NUMA configuration with suboptiomal performance.
-However since 2014 there is an alternative way to assign RAM to a NUMA node
-using parameter ``memdev``, which does the same as ``mem`` and adds
-means to actualy manage node RAM on the host side. Use parameter ``memdev``
-with *memory-backend-ram* backend as an replacement for parameter ``mem``
-to achieve the same fake NUMA effect or a properly configured
-*memory-backend-file* backend to actually benefit from NUMA configuration.
-In future new machine versions will not accept the option but it will still
-work with old machine types. User can check QAPI schema to see if the legacy
-option is supported by looking at MachineInfo::numa-mem-supported property.
-
``-numa`` node (without memory specified) (since 4.1)
'''''''''''''''''''''''''''''''''''''''''''''''''''''
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 37462a6f78..063d4703f7 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -2262,7 +2262,6 @@ static void virt_machine_class_init(ObjectClass *oc, void *data)
hc->pre_plug = virt_machine_device_pre_plug_cb;
hc->plug = virt_machine_device_plug_cb;
hc->unplug_request = virt_machine_device_unplug_request_cb;
- mc->numa_mem_supported = true;
mc->nvdimm_supported = true;
mc->auto_enable_numa_with_memhp = true;
mc->default_ram_id = "mach-virt.ram";
@@ -2375,6 +2374,7 @@ DEFINE_VIRT_MACHINE_AS_LATEST(5, 1)
static void virt_machine_5_0_options(MachineClass *mc)
{
virt_machine_5_1_options(mc);
+ mc->numa_mem_supported = true;
}
DEFINE_VIRT_MACHINE(5, 0)
diff --git a/hw/core/numa.c b/hw/core/numa.c
index 316bc50d75..05be412e59 100644
--- a/hw/core/numa.c
+++ b/hw/core/numa.c
@@ -117,6 +117,12 @@ static void parse_numa_node(MachineState *ms, NumaNodeOptions *node,
}
if (node->has_mem) {
+ if (!mc->numa_mem_supported) {
+ error_setg(errp, "Parameter -numa node,mem is not supported by this"
+ " machine type. Use -numa node,memdev instead");
+ return;
+ }
+
numa_info[nodenr].node_mem = node->mem;
if (!qtest_enabled()) {
warn_report("Parameter -numa node,mem is deprecated,"
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 2128f3d6fe..a86136069c 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1960,7 +1960,6 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
hc->unplug = pc_machine_device_unplug_cb;
mc->default_cpu_type = TARGET_DEFAULT_CPU_TYPE;
mc->nvdimm_supported = true;
- mc->numa_mem_supported = true;
mc->default_ram_id = "pc.ram";
object_class_property_add(oc, PC_MACHINE_DEVMEM_REGION_SIZE, "int",
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index f66e1d73ce..8955436efa 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -438,6 +438,7 @@ static void pc_i440fx_5_0_machine_options(MachineClass *m)
pc_i440fx_5_1_machine_options(m);
m->alias = NULL;
m->is_default = false;
+ m->numa_mem_supported = true;
compat_props_add(m->compat_props, hw_compat_5_0, hw_compat_5_0_len);
compat_props_add(m->compat_props, pc_compat_5_0, pc_compat_5_0_len);
}
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 4ba8ac8774..af6b32adb7 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -366,6 +366,7 @@ static void pc_q35_5_0_machine_options(MachineClass *m)
{
pc_q35_5_1_machine_options(m);
m->alias = NULL;
+ m->numa_mem_supported = true;
compat_props_add(m->compat_props, hw_compat_5_0, hw_compat_5_0_len);
compat_props_add(m->compat_props, pc_compat_5_0, pc_compat_5_0_len);
}
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 3b1a5ed865..210d61d1b3 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -4511,7 +4511,6 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
* in which LMBs are represented and hot-added
*/
mc->numa_mem_align_shift = 28;
- mc->numa_mem_supported = true;
mc->auto_enable_numa = true;
smc->default_caps.caps[SPAPR_CAP_HTM] = SPAPR_CAP_OFF;
@@ -4599,6 +4598,7 @@ static void spapr_machine_5_0_class_options(MachineClass *mc)
{
spapr_machine_5_1_class_options(mc);
compat_props_add(mc->compat_props, hw_compat_5_0, hw_compat_5_0_len);
+ mc->numa_mem_supported = true;
}
DEFINE_SPAPR_MACHINE(5_0, "5.0", false);
diff --git a/qemu-options.hx b/qemu-options.hx
index 93bde2bbc8..196f468786 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -239,10 +239,11 @@ SRST
-numa node,nodeid=0 -numa node,nodeid=1 \
-numa cpu,node-id=0,socket-id=0 -numa cpu,node-id=1,socket-id=1
- '\ ``mem``\ ' assigns a given RAM amount to a node. '\ ``memdev``\ '
- assigns RAM from a given memory backend device to a node. If
- '\ ``mem``\ ' and '\ ``memdev``\ ' are omitted in all nodes, RAM is
- split equally between them.
+ Legacy '\ ``mem``\ ' assigns a given RAM amount to a node (not supported
+ for 5.1 and newer machine types). '\ ``memdev``\ ' assigns RAM from
+ a given memory backend device to a node. If '\ ``mem``\ ' and
+ '\ ``memdev``\ ' are omitted in all nodes, RAM is split equally between them.
+
'\ ``mem``\ ' and '\ ``memdev``\ ' are mutually exclusive.
Furthermore, if one node uses '\ ``memdev``\ ', all of them have to
--
2.18.4
4 years, 5 months
Disable some unit tests
by Ani Sinha
Hi :
Is there a recommended way to disable some unit tests in Libvirt ? We some broken tests which we want to fix incrementally but while we do that, we want to keep running other non-broken tests.
thanks
Ani
4 years, 5 months
[libvirt PATCH] gitlab: fix potfile job for new location
by Daniel P. Berrangé
Since we're storing the libvirt.pot file in git now, we should pull from
the source dir, not the build dir.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
Pushed as CI fix
.gitlab-ci.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 149334ed6f..7113a1283c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -210,7 +210,7 @@ potfile:
- $MAKE -C src generated-sources
- $MAKE -C po libvirt.pot
- cd ..
- - mv build/po/libvirt.pot libvirt.pot
+ - cp po/libvirt.pot libvirt.pot
image: quay.io/libvirt/buildenv-libvirt-centos-8:latest
artifacts:
expose_as: 'Potfile'
--
2.26.2
4 years, 5 months
[libvirt PATCH] qemu: don't reject interface update when switching to/from bridged network
by Laine Stump
If virDomainUpdateDeviceFlags() was used to update an <interface>, and
the interface type changed from type='network' where the network was
an unmanaged bridge (so actualType == bridge) to type='bridge'
(i.e. actualType *also* == bridge), the update would fail due to the
perceived change in type.
In practice it is okay to switch between any interface types that end
up using a tap device, since libvirt just needs to attach the device
to a new bridge. But in this case we were erroneously rejecting it due
to a conditional that was too restrictive. This is what the code was doing:
if (old->type != new->type)
[allow update]
else
if ((oldActual == bridge and newActual == network)
|| (oldActual == network and newActual == bridge)) {
[allow update]
else
[error]
In the case described above though, old->type and new->type don't match,
but oldActual and newActual are both 'bridge', so we get an error.
This patch changes the inner conditional so that any combination of
'network' and 'bridge' for oldActual and newActual, since they both
use a tap device connected to a bridge.
Signed-off-by: Laine Stump <laine(a)redhat.com>
---
src/qemu/qemu_hotplug.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index a5d57702eb..dc3bd8245f 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -3770,15 +3770,15 @@ qemuDomainChangeNet(virQEMUDriverPtr driver,
* where this can only require a minor (or even no) change,
* but in most cases we need to do a full reconnection.
*
- * If we switch (in either direction) between type='bridge'
- * and type='network' (for a traditional managed virtual
- * network that uses a host bridge, i.e. forward
- * mode='route|nat'), we just need to change the bridge.
+ * As long as both the new and old types use a tap device
+ * connected to a host bridge (ie VIR_DOMAIN_NET_TYPE_NETWORK
+ * or VIR_DOMAIN_NET_TYPE_BRIDGE), we just need to connect to
+ * the new bridge.
*/
- if ((oldType == VIR_DOMAIN_NET_TYPE_NETWORK &&
- newType == VIR_DOMAIN_NET_TYPE_BRIDGE) ||
- (oldType == VIR_DOMAIN_NET_TYPE_BRIDGE &&
- newType == VIR_DOMAIN_NET_TYPE_NETWORK)) {
+ if ((oldType == VIR_DOMAIN_NET_TYPE_NETWORK ||
+ oldType == VIR_DOMAIN_NET_TYPE_BRIDGE) &&
+ (newType == VIR_DOMAIN_NET_TYPE_NETWORK ||
+ newType == VIR_DOMAIN_NET_TYPE_BRIDGE)) {
needBridgeChange = true;
--
2.25.4
4 years, 5 months
[libvirt PATCH] conf: fix alignment in virObjectEvent to be 8 not 4 bytes
by Daniel P. Berrangé
The previous fix accidentally picked up a debug change that put
alignment back at 4, not 8, bytes as it claimed:
commit 37ae0426420a2f682cc96ee457a8cae9c0db27d3
Author: Daniel P. Berrangé <berrange(a)redhat.com>
Date: Wed Jun 3 11:18:23 2020 +0100
conf: force 8 byte alignment for virObjectEvent
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
Pushed under the face-palm build breaker fix rule
src/conf/object_event_private.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/conf/object_event_private.h b/src/conf/object_event_private.h
index 126464a9a5..80af043b9b 100644
--- a/src/conf/object_event_private.h
+++ b/src/conf/object_event_private.h
@@ -42,7 +42,7 @@ typedef void
virConnectObjectEventGenericCallback cb,
void *cbopaque);
-struct __attribute__((aligned(4))) _virObjectEvent {
+struct __attribute__((aligned(8))) _virObjectEvent {
virObject parent;
int eventID;
virObjectMeta meta;
--
2.26.2
4 years, 5 months
[PATCH] conf: force 8 byte alignment for virObjectEvent
by Daniel P. Berrangé
We need to be able to cast from virObjectEventPtr to one of
its many subclasses. Some of these subclasses have 8 byte
alignment on 32-bit platforms, but virObjectEventPtr only
has 4 byte alignment.
Previously the virObject base class had 8 byte alignment
but this dropped to 4 byte when converted to inherit from
GObject. This introduces cast alignment warnings on 32-bit:
../../src/conf/domain_event.c: In function 'virDomainEventDispatchDefaultFunc':
../../src/conf/domain_event.c:1656:30: error: cast increases required alignment of target type [-Werror=cast-align]
1656 | rtcChangeEvent = (virDomainEventRTCChangePtr)event;
| ^
../../src/conf/domain_event.c:1785:34: error: cast increases required alignment of target type [-Werror=cast-align]
1785 | balloonChangeEvent = (virDomainEventBalloonChangePtr)event;
| ^
../../src/conf/domain_event.c:1896:35: error: cast increases required alignment of target type [-Werror=cast-align]
1896 | blockThresholdEvent = (virDomainEventBlockThresholdPtr)event;
| ^
../../src/conf/domain_event.c: In function 'virDomainQemuMonitorEventDispatchFunc':
../../src/conf/domain_event.c:1974:24: error: cast increases required alignment of target type [-Werror=cast-align]
1974 | qemuMonitorEvent = (virDomainQemuMonitorEventPtr)event;
| ^
../../src/conf/domain_event.c: In function 'virDomainQemuMonitorEventFilter':
../../src/conf/domain_event.c:2179:20: error: cast increases required alignment of target type [-Werror=cast-align]
2179 | monitorEvent = (virDomainQemuMonitorEventPtr) event;
| ^
Forcing 8-byte alignment on virObjectEventPtr removes the
alignment increase during casts to subclasses.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
Technically a build-breaker, but since we don't have any existing
usage of __attribute__((aligned)), I wanted to get a second opinion
on this approach.
One alternative approach would be to switch one of the current "int"
fields in virObjectEvent to "long long".
src/conf/object_event_private.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/conf/object_event_private.h b/src/conf/object_event_private.h
index b31441c53a..126464a9a5 100644
--- a/src/conf/object_event_private.h
+++ b/src/conf/object_event_private.h
@@ -42,7 +42,7 @@ typedef void
virConnectObjectEventGenericCallback cb,
void *cbopaque);
-struct _virObjectEvent {
+struct __attribute__((aligned(4))) _virObjectEvent {
virObject parent;
int eventID;
virObjectMeta meta;
--
2.24.1
4 years, 5 months
[libvirt PATCH] gitdm: Add missing entries
by Andrea Bolognani
A few new individuals have contributed to libvirt since the last
time the gitdm configuration was updated.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
docs/gitdm/groups/unaffiliated | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/docs/gitdm/groups/unaffiliated b/docs/gitdm/groups/unaffiliated
index a58731a683..6e9de7084a 100644
--- a/docs/gitdm/groups/unaffiliated
+++ b/docs/gitdm/groups/unaffiliated
@@ -14,6 +14,7 @@ gmx.de
googlemail.com
hotmail.com
mail.ru
+outlook.com
pobox.com
protonmail.com
riseup.net
@@ -39,6 +40,8 @@ bigon(a)bigon.be
bugzilla.redhat.simon(a)arlott.org
cardoe(a)cardoe.com
charles(a)dyfis.net
+cky(a)cky.nz
+contact(a)puzio.waw.pl
d.herrendoerfer(a)herrendoerfer.name
dan(a)danny.cz
debfx(a)fobos.de
@@ -53,6 +56,7 @@ ibaldo(a)adinet.com.uy
igor47(a)moomers.org
infos(a)nafets.de
intrigeri(a)boum.org
+jaak(a)ristioja.ee
james410(a)cowgill.org.uk
james(a)shubin.ca
jasper(a)humppa.nl
--
2.25.4
4 years, 5 months
[PATCH 00/40] convert virObjects to GObject
by Rafael Fonseca
This patch series convert various simple instances of virObject to a
GObject equivalent.
virLockableObject and virObjects which are subclassed will be covered in
future patchsets.
New in v3:
- merge *Dispose back into *Finalize
- rebased on top of master
Rafael Fonseca (40):
util: virresctrl: convert classes to GObject
conf: capabilities: convert virCaps to GOBject
qemu: convert virQEMUCaps to GObject
util: add function to unref array of GObjects
rpc: convert virNetClientProgram to GObject
rpc: convert virNetServerProgram to GObject
conf: convert virDomainXMLOption to GObject
bhyve: convert bhyveMonitor to GObject
bhyve: convert virBhyveDriverConfig to GObject
rpc: convert virNetServerService to GObject
conf: convert virDomainCapsCPUModels to GObject
util: convert dnsmasqCaps to GObject
conf: convert virDomainChrSourceDef to GObject
rpc: gendispatch: prepare for GObject conversion
admin: convert virAdmServer to GObject
admin: convert virAdmClient to GObject
datatypes: convert virDomainCheckpoint to GObject
datatypes: convert virDomainSnapshot to GObject
datatypes: convert virNWFilter to GObject
datatypes: convert virNWFilterBinding to GObject
datatypes: convert virNetwork to GObject
datatypes: convert virNetworkPort to GObject
datatypes: convert virInterface to GObject
datatypes: convert virStoragePool to GObject
datatypes: convert virStorageVol to GObject
datatypes: convert virNodeDevice to GObject
datatypes: convert virSecret to GObject
datatypes: convert virStream to GObject
datatypes: convert virDomain to GObject
rpc: gendispatch: use g_autoptr where possible
conf: convert virNetworkXMLOption to GObject
lxc: convert virLXCDriverConfig to GObject
libxl: convert libxlDriverConfig to GObject
hypervisor: convert virHostdevManager to GObject
libxl: convert libxlMigrationDstArgs to GObject
qemu: convert qemuBlockJobData to GObject
qemu: convert virQEMUDriverConfig to GObject
conf: convert virDomain*Private to GObject
conf: convert virSaveCookie to GObject
util: convert virStorageSource to GObject
src/admin/admin_remote.c | 9 +-
src/admin/libvirt-admin.c | 4 +-
src/admin/libvirt_admin_private.syms | 4 +-
src/bhyve/bhyve_capabilities.c | 19 +-
src/bhyve/bhyve_conf.c | 36 +-
src/bhyve/bhyve_driver.c | 33 +-
src/bhyve/bhyve_monitor.c | 37 +-
src/bhyve/bhyve_monitor.h | 3 +-
src/bhyve/bhyve_utils.h | 11 +-
src/conf/capabilities.c | 41 +-
src/conf/capabilities.h | 6 +-
src/conf/domain_capabilities.c | 48 +-
src/conf/domain_capabilities.h | 10 +-
src/conf/domain_conf.c | 117 ++---
src/conf/domain_conf.h | 36 +-
src/conf/domain_event.c | 58 +--
src/conf/network_conf.c | 24 +-
src/conf/network_conf.h | 12 +-
src/conf/network_event.c | 7 +-
src/conf/node_device_event.c | 11 +-
src/conf/node_device_util.c | 4 +-
src/conf/secret_event.c | 15 +-
src/conf/snapshot_conf.c | 2 +-
src/conf/snapshot_conf.h | 2 +-
src/conf/storage_capabilities.c | 4 +-
src/conf/storage_event.c | 15 +-
src/conf/virchrdev.c | 4 +-
src/conf/virconftypes.h | 3 +-
src/conf/virdomaincheckpointobjlist.c | 7 +-
src/conf/virdomainsnapshotobjlist.c | 7 +-
src/conf/virinterfaceobj.c | 5 +-
src/conf/virnetworkobj.c | 10 +-
src/conf/virnodedeviceobj.c | 3 +-
src/conf/virnwfilterbindingobjlist.c | 2 +-
src/conf/virnwfilterobj.c | 7 +-
src/conf/virsavecookie.c | 10 +-
src/conf/virsavecookie.h | 14 +-
src/conf/virsecretobj.c | 2 +-
src/conf/virstorageobj.c | 4 +-
src/datatypes.c | 658 +++++++++++++++---------
src/datatypes.h | 219 ++++----
src/esx/esx_driver.c | 33 +-
src/hyperv/hyperv_driver.c | 8 +-
src/hypervisor/virhostdev.c | 31 +-
src/hypervisor/virhostdev.h | 13 +-
src/interface/interface_backend_netcf.c | 7 +-
src/interface/interface_backend_udev.c | 8 +-
src/libvirt-domain-checkpoint.c | 7 +-
src/libvirt-domain-snapshot.c | 7 +-
src/libvirt-domain.c | 6 +-
src/libvirt-interface.c | 6 +-
src/libvirt-network.c | 14 +-
src/libvirt-nodedev.c | 6 +-
src/libvirt-nwfilter.c | 14 +-
src/libvirt-secret.c | 7 +-
src/libvirt-storage.c | 12 +-
src/libvirt-stream.c | 7 +-
src/libvirt_private.syms | 35 +-
src/libxl/libxl_capabilities.c | 19 +-
src/libxl/libxl_conf.c | 56 +-
src/libxl/libxl_conf.h | 12 +-
src/libxl/libxl_driver.c | 175 +++----
src/libxl/libxl_migration.c | 92 ++--
src/libxl/xen_common.c | 3 +-
src/locking/lock_daemon.c | 28 +-
src/locking/lock_driver_lockd.c | 19 +-
src/locking/sanlock_helper.c | 5 +-
src/logging/log_daemon.c | 28 +-
src/logging/log_manager.c | 15 +-
src/lxc/lxc_conf.c | 46 +-
src/lxc/lxc_conf.h | 10 +-
src/lxc/lxc_controller.c | 20 +-
src/lxc/lxc_driver.c | 98 ++--
src/lxc/lxc_monitor.c | 2 +-
src/lxc/lxc_process.c | 35 +-
src/network/bridge_driver.c | 24 +-
src/nwfilter/nwfilter_driver.c | 3 +-
src/openvz/openvz_conf.c | 8 +-
src/qemu/qemu_blockjob.c | 119 ++---
src/qemu/qemu_blockjob.h | 15 +-
src/qemu/qemu_capabilities.c | 165 +++---
src/qemu/qemu_capabilities.h | 9 +-
src/qemu/qemu_conf.c | 42 +-
src/qemu/qemu_conf.h | 19 +-
src/qemu/qemu_domain.c | 436 +++++++---------
src/qemu/qemu_domain.h | 157 ++++--
src/qemu/qemu_driver.c | 34 +-
src/qemu/qemu_hotplug.c | 3 +-
src/qemu/qemu_migration.c | 34 +-
src/qemu/qemu_process.c | 20 +-
src/qemu/qemu_virtiofs.c | 12 +-
src/remote/remote_daemon.c | 52 +-
src/remote/remote_daemon_dispatch.c | 188 +++----
src/remote/remote_daemon_stream.c | 6 +-
src/remote/remote_driver.c | 178 +++----
src/rpc/gendispatch.pl | 90 ++--
src/rpc/virnetclient.c | 7 +-
src/rpc/virnetclientprogram.c | 29 +-
src/rpc/virnetclientprogram.h | 10 +-
src/rpc/virnetclientstream.c | 4 +-
src/rpc/virnetserver.c | 21 +-
src/rpc/virnetserverprogram.c | 30 +-
src/rpc/virnetserverprogram.h | 17 +-
src/rpc/virnetserverservice.c | 87 ++--
src/security/virt-aa-helper.c | 9 +-
src/storage/storage_backend.c | 3 +-
src/storage/storage_driver.c | 7 +-
src/storage/storage_util.c | 4 +-
src/test/test_driver.c | 33 +-
src/util/virdnsmasq.c | 56 +-
src/util/virdnsmasq.h | 6 +-
src/util/virfdstream.c | 4 +-
src/util/virfilecache.c | 43 +-
src/util/virfilecache.h | 12 +-
src/util/virobject.c | 24 +
src/util/virobject.h | 4 +
src/util/virresctrl.c | 155 +++---
src/util/virresctrl.h | 15 +-
src/util/virsecret.c | 3 +-
src/util/virstoragefile.c | 42 +-
src/util/virstoragefile.h | 9 +-
src/vbox/vbox_common.c | 19 +-
src/vmware/vmware_conf.c | 13 +-
src/vz/vz_driver.c | 33 +-
src/vz/vz_sdk.c | 22 +-
tests/bhyveargv2xmltest.c | 4 +-
tests/bhyvexml2argvtest.c | 4 +-
tests/bhyvexml2xmltest.c | 4 +-
tests/cputest.c | 48 +-
tests/domaincapstest.c | 5 +-
tests/domainconftest.c | 4 +-
tests/genericxml2xmltest.c | 4 +-
tests/networkxml2conftest.c | 10 +-
tests/networkxml2xmltest.c | 3 +-
tests/openvzutilstest.c | 4 +-
tests/qemublocktest.c | 3 +-
tests/qemucapabilitiestest.c | 9 +-
tests/qemucaps2xmltest.c | 29 +-
tests/qemucapsprobe.c | 4 +-
tests/qemuhotplugtest.c | 6 +-
tests/qemumemlocktest.c | 3 +-
tests/testutils.c | 4 +-
tests/testutilslxc.c | 22 +-
tests/testutilsqemu.c | 31 +-
tests/testutilsxen.c | 7 +-
tests/vircaps2xmltest.c | 6 +-
tests/vircapstest.c | 14 +-
tests/virfilecachetest.c | 69 ++-
tests/virnetdaemontest.c | 4 +-
tests/virresctrltest.c | 6 +-
tests/vmx2xmltest.c | 10 +-
tests/xml2vmxtest.c | 12 +-
152 files changed, 2411 insertions(+), 2660 deletions(-)
--
2.26.2
4 years, 5 months
[PATCH 0/6] Expose QEMU's -fw_cfg
by Michal Privoznik
There was a discussion whether to do this or not:
https://www.redhat.com/archives/libvir-list/2020-May/msg00954.html
Before you start reviewing, naming is hard and I was unable to come up
with a good element names and place, so suggestions are more than
welcome!
Michal Prívozník (6):
domain_conf: Format NS always last
conf: Add firmware blob configuration
qemu: Validate firmware blob configuration
qemu: Introduce fw_cfg capability
secdrivers: Relabel firmware config files
qemu: Generate command line for -fw_cfg
docs/formatdomain.html.in | 30 +++++
docs/schemas/domaincommon.rng | 24 ++++
src/conf/domain_conf.c | 114 +++++++++++++++++-
src/conf/domain_conf.h | 11 ++
src/conf/virconftypes.h | 3 +
src/qemu/qemu_capabilities.c | 4 +
src/qemu/qemu_capabilities.h | 3 +
src/qemu/qemu_command.c | 38 ++++++
src/qemu/qemu_validate.c | 38 ++++++
src/security/security_dac.c | 14 +++
src/security/security_selinux.c | 13 ++
src/security/virt-aa-helper.c | 6 +
.../caps_2.10.0.aarch64.xml | 1 +
.../caps_2.10.0.ppc64.xml | 1 +
.../caps_2.10.0.s390x.xml | 1 +
.../caps_2.10.0.x86_64.xml | 1 +
.../caps_2.11.0.s390x.xml | 1 +
.../caps_2.11.0.x86_64.xml | 1 +
.../caps_2.12.0.aarch64.xml | 1 +
.../caps_2.12.0.ppc64.xml | 1 +
.../caps_2.12.0.s390x.xml | 1 +
.../caps_2.12.0.x86_64.xml | 1 +
.../caps_2.4.0.x86_64.xml | 1 +
.../caps_2.5.0.x86_64.xml | 1 +
.../caps_2.6.0.aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 +
.../caps_2.6.0.x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 +
.../caps_2.7.0.x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 +
.../caps_2.8.0.x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 +
.../qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 +
.../caps_2.9.0.x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 1 +
.../caps_3.0.0.riscv32.xml | 1 +
.../caps_3.0.0.riscv64.xml | 1 +
.../qemucapabilitiesdata/caps_3.0.0.s390x.xml | 1 +
.../caps_3.0.0.x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 1 +
.../caps_3.1.0.x86_64.xml | 1 +
.../caps_4.0.0.aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 1 +
.../caps_4.0.0.riscv32.xml | 1 +
.../caps_4.0.0.riscv64.xml | 1 +
.../qemucapabilitiesdata/caps_4.0.0.s390x.xml | 1 +
.../caps_4.0.0.x86_64.xml | 1 +
.../caps_4.1.0.x86_64.xml | 1 +
.../caps_4.2.0.aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 1 +
.../qemucapabilitiesdata/caps_4.2.0.s390x.xml | 1 +
.../caps_4.2.0.x86_64.xml | 1 +
.../caps_5.0.0.aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 +
.../caps_5.0.0.riscv64.xml | 1 +
.../caps_5.0.0.x86_64.xml | 1 +
.../caps_5.1.0.x86_64.xml | 1 +
tests/qemuxml2argvdata/fw_cfg.args | 32 +++++
tests/qemuxml2argvdata/fw_cfg.xml | 40 ++++++
tests/qemuxml2argvtest.c | 1 +
tests/qemuxml2xmloutdata/fw_cfg.xml | 1 +
tests/qemuxml2xmltest.c | 1 +
62 files changed, 413 insertions(+), 5 deletions(-)
create mode 100644 tests/qemuxml2argvdata/fw_cfg.args
create mode 100644 tests/qemuxml2argvdata/fw_cfg.xml
create mode 120000 tests/qemuxml2xmloutdata/fw_cfg.xml
--
2.26.2
4 years, 5 months
[PATCH] autogen.sh: Restore --no-git (avoid git submodule update)
by Ian Jackson
Prior to 2621d48f005a "gnulib: delete all gnulib integration",
one could pass ./autogen.sh --no-git to prevent the libvirt build
system from running git submodule update.
This feature is needed by systems like the Xen Project CI which want
to explicitly control the revisions of every tree. These will
typically arrange to initialise the submodules check out the right
version of everything, and then expect the build system not to mess
with it any more.
Despite to the old documentation comments referring only to gnulib,
the --no-git feature is required not only because of gnulib but also
because of the other submodule, src/keycodemapdb.
(And in any case, even if it were no longer required because all the
submodules were removed, it ought ideally to have been retained as a
no-op for compaibility reasons.)
So restore the --no-git feature.
Because of the way the argument parsing of autogen.sh works, it is
easiest to recognise this option only if it comes first. This works
for the Xen Project CI, which has always passed this option first.
If something else is using this option (and hasn't introduced a
different workaround in the meantime), not in the first position,
then perhaps a more sophisticated approach will be needed. But I
think this will do for now.
Signed-off-by: Ian Jackson <ian.jackson(a)eu.citrix.com>
---
autogen.sh | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/autogen.sh b/autogen.sh
index 4e1bbceb0a..1c98273452 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,5 +1,10 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
+#
+# THe following options must come first. All other or subsequent
+# arguments are passed to configure:
+# --no-git skip `git submodule update --init`
+
test -n "$srcdir" || srcdir=$(dirname "$0")
test -n "$srcdir" || srcdir=.
@@ -13,7 +18,11 @@ cd "$srcdir"
exit 1
}
-git submodule update --init || exit 1
+if [ "x$1" = x--no-git ]; then
+ shift
+else
+ git submodule update --init || exit 1
+fi
autoreconf --verbose --force --install || exit 1
--
2.11.0
4 years, 5 months