[libvirt] Release of libvirt-6.0.0
by Daniel Veillard
As planned the release is available, tagged in git, and the signed
tarball and source rpm are available from the usual place:
https://libvirt.org/sources/
I also made the release of the pythn bindings which can be found at:
https://libvirt.org/sources/python/
This release carries some serious changes, dropping the support for python2
and the phyp Power Hypervisor. This comes with a set of new features and
improvements too:
Packaging changes:
- support for python2 is removed
Libvirt is no longer able to be built using the Python 2 binary. Python
3 must be used instead.
- docs: the python docutils toolset is now required
The use of rst2html has been introduced for the website build process
since docs are now being written in the RST as an alternative to HTML.
New features:
- new PCI hostdev address type: unassigned
A new PCI hostdev address type 'unassigned' is introduced. An
unassigned PCI hostdev behaves like any regular PCI hostdev inside
Libvirt, but it is not usable by the guest. This gives the user a new
option to manage the binding of PCI devices via Libvirt, declaring PCI
hostdevs in the domain XML but allowing just a subset of them to be
assigned to the guest.
- Provide init scripts for sub-deaemons
So far libvirt shipped systemd unit files for sub-daemons. With this
release, init scripts are available too. Package maintainers can choose
which one to install via --with-init-script configure option.
- qemu: Support cold-unplug of sound devices
- qemu: Implement VIR_MIGRATE_PARAM_TLS_DESTINATION
This flag, which can be enabled using virsh's --tls-destination option,
allows migration to succeed in situations where there is a mismatch
between the destination's hostname and the information stored in its
TLS certificate.
- qemu: Support reporting memory bandwidth usage stats
Implement Intel RDT-MBM in libvirt. The stats can be obtained via virsh
domstats --memory.
- qemu: Allow accessing NVMe disks directly
Before this release there were two ways to configure a NVMe disk for a
domain. The first was using <disk/> with the <source/> pointing to the
/dev/nvmeXXXX. The other was using PCI assignment via <hostdev/>
element. Both have their disadvantages: the former adds latency of file
system and block layers of the host kernel, the latter prohibits domain
migration. In this release the third way of configuring NVMe disk is
added which combines the advantages and drops disadvantages of the
previous two ways. It's accessible via <disk type='nvme'/>.
Removed features:
- 'phyp' Power Hypervisor driver removed
The 'phyp' Power Hypervisor driver has not seen active development
since 2011 and does not seem to have any real world usage. It has now
been removed.
Improvements:
- qemu: xz save image compression is faster
When using the xz format to compressed virtual machine saved state
images, the "-3" compression level preset is now used. This results in
slightly larger files, but with a massively reduced time to compress.
The xz format offers the best compression level for saved state images,
albeit still with the slowest running time. For the fastest possible
running time, at cost of the larest compressed size, lzop should be
used.
- domain: Improve job stat handling
It is now possible to retrieve stats for completed and failed jobs.
- qemu: Don't hold monitor and agent job at the same time
Before this change, a malicious (or buggy) qemu-guest-agent running in
the guest could make other libvirt APIs unavailable for an unbounded
amount of time.
Bug fixes:
- qemu: Report error if backing image format is not specified explicitly
For a long time libvirt was assuming that a backing file is RAW when
the format was not specified. This didn't pose a problem until blockdev
support was enabled in last release. Libvirt now requires that the
format is specified in the image metadata or domain XML and the VM will
refuse to start otherwise. Additionally the error message now links to
the knowledge base which summarizes how to fix the images.
- qemu: Fix non-shared storage migration over NBD
- qemu: Generate a single MAC address for hotplugged network devices
Since libvirt 4.6.0, when hotplugging a network device that didn't have
a MAC address already assigned by the user, two separate addresses
would be generated: one for the live configuration, which would show up
immediately, and one for the inactive configuration, which would show
up after the first reboot. This situation was clearly undesirable, so a
single MAC address is now generated and used both for the live
configuration and the inactive one.
thanks everybody who helped on this release, with reports, fixes,
reviews, ideas, documentation, etc ...
Enjoy the release, next one will be scheduled at the end of
February !
Daniel
--
Daniel Veillard | Red Hat Developers Tools http://developer.redhat.com/
veillard(a)redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | virtualization library http://libvirt.org/
4 years, 11 months
[libvirt] [PATCH v2 86/86] numa: remove deprecated implicit RAM distribution between nodes
by Igor Mammedov
Feature has been deprecated since 4.1 (4bb4a273),
remove it.
As result if RAM distribution wasn't specified explicitly,
the machine won't start and CLI should be changed to explicitly
assign RAM to nodes using options:
-node node,memdev (5.0 and newer machine types)
-node node,mem (4.2 and older machine types)
It's recommended to use "memdev" variant for new virtual machines
and use "mem" only when it's necessary to migrate already existing
virtual machine started with implicit RAM distribution.
Signed-off-by: Igor Mammedov <imammedo(a)redhat.com>
---
CC: ehabkost(a)redhat.com
CC: marcel.apfelbaum(a)gmail.com
CC: mst(a)redhat.com
CC: pbonzini(a)redhat.com
CC: david(a)gibson.dropbear.id.au
CC: libvir-list(a)redhat.com
CC: qemu-ppc(a)nongnu.org
CC: rth(a)twiddle.net
---
include/hw/boards.h | 3 ---
include/sysemu/numa.h | 4 ----
hw/core/machine.c | 6 -----
hw/core/numa.c | 61 +++++----------------------------------------------
hw/i386/pc_piix.c | 1 -
hw/i386/pc_q35.c | 1 -
hw/ppc/spapr.c | 7 ------
qemu-deprecated.texi | 8 -------
qemu-options.hx | 16 +++++++-------
9 files changed, 13 insertions(+), 94 deletions(-)
diff --git a/include/hw/boards.h b/include/hw/boards.h
index 7f09bc9..916bb50 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -192,12 +192,9 @@ struct MachineClass {
int minimum_page_bits;
bool has_hotpluggable_cpus;
bool ignore_memory_transaction_failures;
- int numa_mem_align_shift;
const char **valid_cpu_types;
strList *allowed_dynamic_sysbus_devices;
bool auto_enable_numa_with_memhp;
- void (*numa_auto_assign_ram)(MachineClass *mc, NodeInfo *nodes,
- int nb_nodes, ram_addr_t size);
bool ignore_boot_device_suffixes;
bool smbus_no_migration_support;
bool nvdimm_supported;
diff --git a/include/sysemu/numa.h b/include/sysemu/numa.h
index ad58ee8..4173ef2 100644
--- a/include/sysemu/numa.h
+++ b/include/sysemu/numa.h
@@ -106,10 +106,6 @@ void parse_numa_hmat_cache(MachineState *ms, NumaHmatCacheOptions *node,
void numa_complete_configuration(MachineState *ms);
void query_numa_node_mem(NumaNodeMem node_mem[], MachineState *ms);
extern QemuOptsList qemu_numa_opts;
-void numa_legacy_auto_assign_ram(MachineClass *mc, NodeInfo *nodes,
- int nb_nodes, ram_addr_t size);
-void numa_default_auto_assign_ram(MachineClass *mc, NodeInfo *nodes,
- int nb_nodes, ram_addr_t size);
void numa_cpu_pre_plug(const struct CPUArchId *slot, DeviceState *dev,
Error **errp);
bool numa_uses_legacy_mem(void);
diff --git a/hw/core/machine.c b/hw/core/machine.c
index d8fa45c..0862f45 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -747,12 +747,6 @@ static void machine_class_init(ObjectClass *oc, void *data)
mc->rom_file_has_mr = true;
mc->smp_parse = smp_parse;
- /* numa node memory size aligned on 8MB by default.
- * On Linux, each node's border has to be 8MB aligned
- */
- mc->numa_mem_align_shift = 23;
- mc->numa_auto_assign_ram = numa_default_auto_assign_ram;
-
object_class_property_add_str(oc, "kernel",
machine_get_kernel, machine_set_kernel, &error_abort);
object_class_property_set_description(oc, "kernel",
diff --git a/hw/core/numa.c b/hw/core/numa.c
index 47d5ea1..591e62a 100644
--- a/hw/core/numa.c
+++ b/hw/core/numa.c
@@ -627,42 +627,6 @@ static void complete_init_numa_distance(MachineState *ms)
}
}
-void numa_legacy_auto_assign_ram(MachineClass *mc, NodeInfo *nodes,
- int nb_nodes, ram_addr_t size)
-{
- int i;
- uint64_t usedmem = 0;
-
- /* Align each node according to the alignment
- * requirements of the machine class
- */
-
- for (i = 0; i < nb_nodes - 1; i++) {
- nodes[i].node_mem = (size / nb_nodes) &
- ~((1 << mc->numa_mem_align_shift) - 1);
- usedmem += nodes[i].node_mem;
- }
- nodes[i].node_mem = size - usedmem;
-}
-
-void numa_default_auto_assign_ram(MachineClass *mc, NodeInfo *nodes,
- int nb_nodes, ram_addr_t size)
-{
- int i;
- uint64_t usedmem = 0, node_mem;
- uint64_t granularity = size / nb_nodes;
- uint64_t propagate = 0;
-
- for (i = 0; i < nb_nodes - 1; i++) {
- node_mem = (granularity + propagate) &
- ~((1 << mc->numa_mem_align_shift) - 1);
- propagate = granularity + propagate - node_mem;
- nodes[i].node_mem = node_mem;
- usedmem += node_mem;
- }
- nodes[i].node_mem = size - usedmem;
-}
-
static void numa_init_memdev_container(MachineState *ms, MemoryRegion *ram)
{
int i;
@@ -732,30 +696,15 @@ void numa_complete_configuration(MachineState *ms)
ms->numa_state->num_nodes = MAX_NODES;
}
- /* If no memory size is given for any node, assume the default case
- * and distribute the available memory equally across all nodes
- */
- for (i = 0; i < ms->numa_state->num_nodes; i++) {
- if (numa_info[i].node_mem != 0) {
- break;
- }
- }
- if (i == ms->numa_state->num_nodes) {
- assert(mc->numa_auto_assign_ram);
- mc->numa_auto_assign_ram(mc, numa_info,
- ms->numa_state->num_nodes, ram_size);
- if (!qtest_enabled()) {
- warn_report("Default splitting of RAM between nodes is deprecated,"
- " Use '-numa node,memdev' to explictly define RAM"
- " allocation per node");
- }
- }
-
numa_total = 0;
for (i = 0; i < ms->numa_state->num_nodes; i++) {
numa_total += numa_info[i].node_mem;
}
- if (numa_total != ram_size) {
+ if (numa_total == 0) {
+ error_report(" Use '-numa node,memdev' to explictly assign RAM"
+ " to node");
+ exit(EXIT_FAILURE);
+ } else if (numa_total != ram_size) {
error_report("total memory for NUMA nodes (0x%" PRIx64 ")"
" should equal RAM size (0x" RAM_ADDR_FMT ")",
numa_total, ram_size);
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 0a9b9e0..7941b0d 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -532,7 +532,6 @@ static void pc_i440fx_2_9_machine_options(MachineClass *m)
pc_i440fx_2_10_machine_options(m);
compat_props_add(m->compat_props, hw_compat_2_9, hw_compat_2_9_len);
compat_props_add(m->compat_props, pc_compat_2_9, pc_compat_2_9_len);
- m->numa_auto_assign_ram = numa_legacy_auto_assign_ram;
}
DEFINE_I440FX_MACHINE(v2_9, "pc-i440fx-2.9", NULL,
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 4d6e2be..9715413 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -466,7 +466,6 @@ static void pc_q35_2_10_machine_options(MachineClass *m)
pc_q35_2_11_machine_options(m);
compat_props_add(m->compat_props, hw_compat_2_10, hw_compat_2_10_len);
compat_props_add(m->compat_props, pc_compat_2_10, pc_compat_2_10_len);
- m->numa_auto_assign_ram = numa_legacy_auto_assign_ram;
m->auto_enable_numa_with_memhp = false;
}
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 2686b73..712548f 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -4378,11 +4378,6 @@ static void spapr_machine_class_init(ObjectClass *oc, void *data)
xic->ics_resend = spapr_ics_resend;
xic->icp_get = spapr_icp_get;
ispc->print_info = spapr_pic_print_info;
- /* Force NUMA node memory size to be a multiple of
- * SPAPR_MEMORY_BLOCK_SIZE (256M) since that's the granularity
- * in which LMBs are represented and hot-added
- */
- mc->numa_mem_align_shift = 28;
mc->auto_enable_numa = true;
smc->default_caps.caps[SPAPR_CAP_HTM] = SPAPR_CAP_OFF;
@@ -4635,7 +4630,6 @@ static void spapr_machine_2_9_class_options(MachineClass *mc)
spapr_machine_2_10_class_options(mc);
compat_props_add(mc->compat_props, hw_compat_2_9, hw_compat_2_9_len);
compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
- mc->numa_auto_assign_ram = numa_legacy_auto_assign_ram;
smc->pre_2_10_has_unused_icps = true;
smc->resize_hpt_default = SPAPR_RESIZE_HPT_DISABLED;
}
@@ -4655,7 +4649,6 @@ static void spapr_machine_2_8_class_options(MachineClass *mc)
spapr_machine_2_9_class_options(mc);
compat_props_add(mc->compat_props, hw_compat_2_8, hw_compat_2_8_len);
compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
- mc->numa_mem_align_shift = 23;
}
DEFINE_SPAPR_MACHINE(2_8, "2.8", false);
diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
index 17a0e1d..9ad6778 100644
--- a/qemu-deprecated.texi
+++ b/qemu-deprecated.texi
@@ -89,14 +89,6 @@ error in the future.
The @code{-realtime mlock=on|off} argument has been replaced by the
@code{-overcommit mem-lock=on|off} argument.
-@subsection -numa node (without memory specified) (since 4.1)
-
-Splitting RAM by default between NUMA nodes has the same issues as @option{mem}
-parameter described above with the difference that the role of the user plays
-QEMU using implicit generic or board specific splitting rule.
-Use @option{memdev} with @var{memory-backend-ram} backend or @option{mem} (if
-it's supported by used machine type) to define mapping explictly instead.
-
@subsection RISC-V -bios (since 4.1)
QEMU 4.1 introduced support for the -bios option in QEMU for RISC-V for the
diff --git a/qemu-options.hx b/qemu-options.hx
index 55500bd..f959bbe 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -172,16 +172,16 @@ If any on the three values is given, the total number of CPUs @var{n} can be omi
ETEXI
DEF("numa", HAS_ARG, QEMU_OPTION_numa,
- "-numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]\n"
- "-numa node[,memdev=id][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]\n"
+ "-numa node,mem=size[,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]\n"
+ "-numa node,memdev=id[,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=node]\n"
"-numa dist,src=source,dst=destination,val=distance\n"
"-numa cpu,node-id=node[,socket-id=x][,core-id=y][,thread-id=z]\n"
"-numa hmat-lb,initiator=node,target=node,hierarchy=memory|first-level|second-level|third-level,data-type=access-latency|read-latency|write-latency[,latency=lat][,bandwidth=bw]\n"
"-numa hmat-cache,node-id=node,size=size,level=level[,associativity=none|direct|complex][,policy=none|write-back|write-through][,line=size]\n",
QEMU_ARCH_ALL)
STEXI
-@item -numa node[,mem=@var{size}][,cpus=@var{firstcpu}[-@var{lastcpu}]][,nodeid=@var{node}][,initiator=@var{initiator}]
-@itemx -numa node[,memdev=@var{id}][,cpus=@var{firstcpu}[-@var{lastcpu}]][,nodeid=@var{node}][,initiator=@var{initiator}]
+@item -numa node,mem=@var{size}[,cpus=@var{firstcpu}[-@var{lastcpu}]][,nodeid=@var{node}][,initiator=@var{initiator}]
+@itemx -numa node,memdev=@var{id}[,cpus=@var{firstcpu}[-@var{lastcpu}]][,nodeid=@var{node}][,initiator=@var{initiator}]
@itemx -numa dist,src=@var{source},dst=@var{destination},val=@var{distance}
@itemx -numa cpu,node-id=@var{node}[,socket-id=@var{x}][,core-id=@var{y}][,thread-id=@var{z}]
@itemx -numa hmat-lb,initiator=@var{node},target=@var{node},hierarchy=@var{hierarchy},data-type=@var{tpye}[,latency=@var{lat}][,bandwidth=@var{bw}]
@@ -202,7 +202,7 @@ split between them.
For example, the following option assigns VCPUs 0, 1, 2 and 5 to
a NUMA node:
@example
--numa node,cpus=0-2,cpus=5
+-numa node,cpus=0-2,cpus=5,memdev=ram-backend-id
@end example
@samp{cpu} option is a new alternative to @samp{cpus} option
@@ -219,14 +219,14 @@ For example:
@example
-M pc \
-smp 1,sockets=2,maxcpus=2 \
--numa node,nodeid=0 -numa node,nodeid=1 \
+-m 512M -object memory-backend-ram,id=mem,size=512M \
+-numa node,nodeid=0,memdev=mem -numa node,nodeid=1 \
-numa cpu,node-id=0,socket-id=0 -numa cpu,node-id=1,socket-id=1
@end example
Legacy @samp{mem} assigns a given RAM amount to a node (not supported for 5.0
and newer machine types). @samp{memdev} assigns RAM from a given memory backend
-device to a node. If @samp{mem} and @samp{memdev} are omitted in all nodes, RAM
-is split equally between them.
+device to a node.
@samp{mem} and @samp{memdev} are mutually exclusive. Furthermore,
if one node uses @samp{memdev}, all of them have to use it.
--
2.7.4
4 years, 11 months
[libvirt] Getting memory usage info for domains with balloon driver disabled
by Tomasz Barański
Hello,
I'm looking for a way to read guest memory usage information (RAM used,
RAM available) for VMs with balloon driver disabled.
oVirt used to read that information using ovirt guest agent, but OGA is no
longer used (and not even available for RHEL8).
I've seen that there was a discussion about adding it to the QEMU guest
agent a couple years back[1] but it has not been implemented.
dominfo doesn't help:
# virsh dominfo 306c001c-f569-4afa-b024-81135c566a73 | grep memory
Max memory: 1048576 KiB
Used memory: 1048576 KiB
dommemstat doesn't help:
# virsh dommemstat 306c001c-f569-4afa-b024-81135c566a73
rss 1049432
Neither does domstats.
Is there any other way to get the info?
[1] https://bugzilla.redhat.com/show_bug.cgi?id=1101915
Tomo
4 years, 11 months
[libvirt] [PATCH 00/12] even less gnulib: 25 more modules purged, leaving 25 to go
by Daniel P. Berrangé
A continued effort to purge gnulib from the libvirt build
system. The bulk of the win comes from implementing our
own Winsock portability wrappers. The use of GSocket turned
out to have many complications, making it hard for us to
achieve the same level of functionality as we currently
have. Thus we take a simpler wrapping approach that GNULIB
does for Winsock too.
NB this has only been compile tested so far. The sockets
stuff definitely needs functional testing on Windows
before I dare push it
Daniel P. Berrangé (12):
src: import gnulib's intprops.h header
tests: always declare environ
build: validate headers against local gnulib not git repo
util: add detection of openpty function
util: introduce compat wrappers for Winsock2
src: convert code to use new socket portability wrappers
util: pull gnulib physmem impl into local code
util: replace atomic ops impls with g_atomic_int*
src: replace verify(expr) with G_STATIC_ASSERT(expr)
src: add check for termios.h and conditionally include it
src: replace gmtime_r/localtime_r/strftime with GDateTime
bootstrap: remove 25 more gnulib modules
bootstrap.conf | 50 --
build-aux/syntax-check.mk | 18 +-
configure.ac | 5 +
m4/virt-manywarnings.m4 | 339 ++++++++++++++
m4/virt-warnings.m4 | 115 +++++
src/conf/capabilities.c | 1 -
src/conf/domain_conf.c | 11 +-
src/conf/snapshot_conf.h | 2 +-
src/conf/virdomaincheckpointobjlist.c | 8 +-
src/esx/esx_network_driver.c | 2 +-
src/esx/esx_storage_backend_iscsi.c | 2 +-
src/esx/esx_storage_backend_vmfs.c | 2 +-
src/hyperv/hyperv_driver.c | 2 +-
src/internal.h | 1 -
src/libvirt-domain.c | 2 +-
src/libxl/libxl_domain.c | 12 +-
src/libxl/libxl_driver.c | 2 +-
src/libxl/xen_xm.c | 3 +-
src/lxc/lxc_process.c | 4 +-
src/nwfilter/nwfilter_dhcpsnoop.c | 10 +-
src/nwfilter/nwfilter_ebiptables_driver.c | 2 +-
src/nwfilter/nwfilter_learnipaddr.c | 2 +-
src/qemu/qemu_blockjob.h | 4 +-
src/qemu/qemu_capabilities.c | 2 +-
src/qemu/qemu_command.c | 17 +-
src/qemu/qemu_driver.c | 12 +-
src/qemu/qemu_firmware.h | 2 +-
src/qemu/qemu_migration_params.c | 2 +-
src/qemu/qemu_process.c | 4 +-
src/remote/remote_daemon_dispatch.c | 12 +-
src/remote/remote_driver.c | 2 +-
src/rpc/virnetsocket.c | 34 +-
src/util/Makefile.inc.am | 4 +
src/util/virarch.c | 3 +-
src/util/viratomic.h | 351 +--------------
src/util/vircgroup.h | 2 +-
src/util/vircrypto.c | 2 +-
src/util/virenum.h | 8 +-
src/util/virfdstream.c | 4 +-
src/util/virfile.c | 18 +-
src/util/virhostcpu.c | 3 +-
src/util/virhostmem.c | 182 ++++++--
src/util/virinitctl.c | 4 +-
src/util/virintprops.h | 526 ++++++++++++++++++++++
src/util/virkeycode.c | 22 +-
src/util/virlog.c | 2 +-
src/util/virmacaddr.h | 2 +-
src/util/virnetdevbridge.c | 2 +-
src/util/virobject.h | 8 +-
src/util/virperf.c | 2 +-
src/util/virpidfile.c | 2 +-
src/util/virportallocator.c | 8 +-
src/util/virprocess.c | 2 +-
src/util/virsocket.c | 346 ++++++++++++++
src/util/virsocket.h | 89 ++++
src/util/virstoragefile.c | 4 +-
src/util/virtime.c | 35 +-
src/util/virtypedparam.h | 2 +-
src/util/virutil.c | 4 +-
src/vz/vz_driver.c | 2 +-
tests/commandhelper.c | 3 +
tests/commandtest.c | 3 +
tests/qemuxml2argvmock.c | 12 +-
tests/viratomictest.c | 2 +-
tests/virstringtest.c | 7 +-
tests/virsystemdtest.c | 2 +-
tests/virtimetest.c | 39 +-
tools/virsh-checkpoint.c | 20 +-
tools/virsh-domain-monitor.c | 16 +-
tools/virsh-domain.c | 15 +-
tools/virsh-network.c | 13 +-
tools/virsh-nodedev.c | 2 +-
tools/virsh-pool.c | 2 +-
tools/virsh-secret.c | 2 +-
tools/virsh-snapshot.c | 19 +-
tools/virsh.h | 1 -
tools/virt-admin.c | 55 +--
tools/virt-host-validate-common.c | 4 +-
tools/virt-login-shell.c | 7 +-
tools/vsh.c | 16 +-
tools/vsh.h | 4 +-
81 files changed, 1836 insertions(+), 733 deletions(-)
create mode 100644 m4/virt-manywarnings.m4
create mode 100644 m4/virt-warnings.m4
create mode 100644 src/util/virintprops.h
create mode 100644 src/util/virsocket.c
create mode 100644 src/util/virsocket.h
--
2.24.1
4 years, 11 months
[libvirt] [PATCH 0/4][RFC] Drop media update support in virDomainAttachDevice*
by Han Han
https://bugzilla.redhat.com/show_bug.cgi?id=1788793
Before virDomainUpdateDeviceFlags, virDomainAttachDevice* were used for
media update. Now we have introduced virDomainUpdateDeviceFlags for 9
years(since commit 46a2ea3689) but keep that compatibility of
virDomainAttachDevice* until now.
I think it is time to remove the compatibility since it doesn't work as
well as virDomainUpdateDeviceFlags on disk xml validation.
I wonder if any uplayer software relying on this compatibility...
My git repo: https://github.com/qiankehan/libvirt/tree/attach-device-nocdrom
Han Han (4):
virsh.rst: Mention media update is not supported in
attach-{disk,device}
libvirt: Remove comments of media update in virDomainAttachDeviceFlags
qemu: Drop support of media update in live disk attach API
libxl: Drop cdrom media update support in live disk attch APIs
docs/manpages/virsh.rst | 14 +++++++-------
src/libvirt-domain.c | 4 ----
src/libxl/libxl_driver.c | 6 ++++--
src/qemu/qemu_hotplug.c | 12 ++++--------
4 files changed, 15 insertions(+), 21 deletions(-)
--
2.24.0.rc1
4 years, 11 months
[libvirt] libvirt 6.0.0 make check-TESTS fails "FAIL: test-ptsname_r"
by Satheesh Rajendran
Hi,
libvirt 6.0.0 (commit:bfd5f69d6038daeac03d2684fcd98aeee4ef1e24), "make rpm" fails at
make check-TESTS
...
..
PASS: test-memchr
PASS: test-send
../../../build-aux/test-driver: line 107: 453114 Aborted (core dumped) "$@" > $log_file 2>&1
FAIL: test-ptsname_r
PASS: test-setsockopt
PASS: test-sigaction
PASS: test-signal-h
...
-------
# cat /root/rpmbuild/BUILD/libvirt-6.0.0/ppc64le-redhat-linux-gnu/gnulib/tests/test-suite.log
================================================
libvirt 6.0.0: gnulib/tests/test-suite.log
================================================
# TOTAL: 149
# PASS: 148
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
.. contents:: :depth: 2
FAIL: test-ptsname_r
====================
../../../gnulib/tests/test-ptsname_r.c:89: assertion 'result == EINVAL' failed
FAIL test-ptsname_r (exit status: 134)
--------
Env:
HW: Power8
ArcH: ppc64le
OS: Fedora 31
GCC: 9.2.1 20190827 (Red Hat 9.2.1-1)
Glibc: glibc-2.30-8.fc31.ppc64le
Gdb output:
# gdb /root/rpmbuild/BUILD/libvirt-6.0.0/ppc64le-redhat-linux-gnu/gnulib/tests/test-ptsname_r -c core.test-ptsname_r.0.1a9e4ce7d7ec4d7e81e295f7f67c7029.317503.1578922893000000000000
GNU gdb (GDB) Fedora 8.3.50.20190824-26.fc31
..
..
Reading symbols from /root/rpmbuild/BUILD/libvirt-6.0.0/ppc64le-redhat-linux-gnu/gnulib/tests/test-ptsname_r...
[New LWP 317503]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `./test-ptsname_r '.
Program terminated with signal SIGABRT, Aborted.
#0 0x00007fffac447358 in __libc_signal_restore_set (set=0x7fffefdc3078) at ../sysdeps/unix/sysv/linux/internal-signals.h:84
84 return INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_SETMASK, set, NULL,
(gdb) start
Temporary breakpoint 1 at 0x11d850c88: file ../../../gnulib/tests/test-ptsname_r.c, line 94.
Starting program: /root/rpmbuild/BUILD/libvirt-6.0.0/ppc64le-redhat-linux-gnu/gnulib/tests/test-ptsname_r
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Temporary breakpoint 1, 0x0000000100000c88 in main () at ../../../gnulib/tests/test-ptsname_r.c:94
94 {
(gdb) c
Continuing.
../../../gnulib/tests/test-ptsname_r.c:89: assertion 'result == EINVAL' failed
Program received signal SIGABRT, Aborted.
0x00007ffff7d57358 in __libc_signal_restore_set (set=0x7fffffffe438) at ../sysdeps/unix/sysv/linux/internal-signals.h:84
84 return INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_SETMASK, set, NULL,
(gdb) print result
$1 = '\000' <repeats 113 times>
(gdb)
Any help would be appreciated, Thanks in advance.
Regards,
-Satheesh.
4 years, 11 months
[libvirt] [PATCH] news: News for RDT-MBM feature
by Han Han
Signed-off-by: Han Han <hhan(a)redhat.com>
---
docs/news.xml | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/docs/news.xml b/docs/news.xml
index acb63709da..822f89f420 100644
--- a/docs/news.xml
+++ b/docs/news.xml
@@ -106,6 +106,15 @@
hostname and the information stored in its TLS certificate.
</description>
</change>
+ <change>
+ <summary>
+ qemu: Support to report the stats of memory bandwidth usage
+ </summary>
+ <description>
+ Implement Intel RDT-MBM to libvirt. The stats can be got via
+ <code>virsh domstats --memory</code>.
+ </description>
+ </change>
</section>
<section title="Removed features">
<change>
--
2.24.0.rc1
4 years, 11 months
[libvirt] [PATCH 0/7] Adapt machine name generation to new facts
by Ján Tomko
Ján Tomko (7):
virbuftest: remove extra G_GNUC_UNUSED markers
virbuftest: use g_autofree
virbuftest: remove unnecessary labels
virbuftest: declare testBufAddStrData earlier
virbuftest: use field names when initalizing test info
util: add virBufferTrimChars
conf: do not generate machine names ending with a dash
src/conf/domain_conf.c | 3 +
src/libvirt_private.syms | 1 +
src/util/virbuffer.c | 26 +++++++++
src/util/virbuffer.h | 1 +
tests/virbuftest.c | 123 ++++++++++++++++++++++-----------------
tests/virsystemdtest.c | 4 ++
6 files changed, 103 insertions(+), 55 deletions(-)
--
2.21.0
4 years, 11 months
[libvirt] [PATCH for 6.0.0] news: Document <disk type='nvme'/>
by Michal Privoznik
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
docs/news.xml | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/docs/news.xml b/docs/news.xml
index acb63709da..e9863dacf3 100644
--- a/docs/news.xml
+++ b/docs/news.xml
@@ -106,6 +106,22 @@
hostname and the information stored in its TLS certificate.
</description>
</change>
+ <change>
+ <summary>
+ qemu: Allow accessing NVMe disks directly
+ </summary>
+ <description>
+ Before this release there were two ways to configure a NVMe disk for
+ a domain. The first was using <disk/> with the <source/>
+ pointing to the <code>/dev/nvmeXXXX</code>. The other was using PCI
+ assignment via <hostdev/> element. Both have their
+ disadvantages: the former adds latency of file system and block
+ layers of the host kernel, the latter prohibits domain migration. In
+ this release the third way of configuring NVMe disk is added which
+ combines the advantages and drops disadvantages of the previous two
+ ways. It's accessible via <disk type='nvme'/>.
+ </description>
+ </change>
</section>
<section title="Removed features">
<change>
--
2.24.1
4 years, 11 months
[libvirt] [PATCH] docs: Notes for geometry in formatdomain doc
by Han Han
Since commit b340c6c614 CHS geometry is not supported in usb and sd, CHS
translation is only supported in ide. Add these notes to formatdomain
doc.
Signed-off-by: Han Han <hhan(a)redhat.com>
---
docs/formatdomain.html.in | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 2af4960981..74bea528be 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -3715,9 +3715,13 @@
<dt><code>secs</code></dt>
<dd>The <code>secs</code> attribute is the
number of sectors per track. </dd>
+ <dt>Note that <code>cyls</code>, <code>heads</code> and
+ <code>secs</code> are not supported in <code>usb</code>
+ or <code>sd</code> bus.</dt>
<dt><code>trans</code></dt>
<dd>The optional <code>trans</code> attribute is the
- BIOS-Translation-Modus (none, lba or auto)</dd>
+ BIOS-Translation-Modus (none, lba or auto). Note that this
+ attribute is only supported in <code>ide</code> bus.</dd>
</dl>
</dd>
<dt><code>blockio</code></dt>
--
2.24.0.rc1
4 years, 11 months