[libvirt] [PATCH] rpm spec: disable ceph on 32-bit architectures
by Daniel P. Berrangé
Ceph in upstream and Fedora has dropped support for building on host
architectures which are 32-bit.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
Pushed as a build fix for RPM builds
libvirt.spec.in | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index b04cf53eb8..567721f424 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -109,6 +109,12 @@
%define with_storage_zfs 0
%endif
+# Ceph dropping support for 32-bit hosts
+%if 0%{fedora} >= 30
+ %ifarch %{arm} %{ix86}
+ %define with_storage_rbd 0
+ %endif
+%endif
# RHEL doesn't ship OpenVZ, VBox, PowerHypervisor,
# VMware, libxenserver (xenapi), libxenlight (Xen 4.1 and newer),
--
2.20.1
5 years, 10 months
[libvirt] [PATCH] qemu: fix i6300esb watchdog hotplug on Q35
by Laine Stump
When commit 361c8dc17 added support for hotplugging the i6300esb
watchdog device (first in libvirt-3.9.0), it accidentally contstructed
the commandline for the device_add command before allocating a PCI
address for the device. With no PCI address specified in the command,
the watchdog would simply be placed at the lowest unused PCI slot.
On a 440fx guest, this doesn't cause a problem, because libvirt's PCI
address allocation algorithm would most likely give the same address
anyway (usually a slot on pci-root), so nobody noticed the omission of
address from the command.
But on a Q35 guest, the lowest unused PCI slot is on pcie-root, which
doesn't support hotplug; libvirt knows enough to assign a PCI address
that is on a pcie-to-pci-bridge (because its slots *do* support
hotplug), but qemu doesn't, so if there is no PCI address in the
command, qemu just tries to plug the new device into pcie-root, and
fails because it doesn't support hotplug, e.g.:
error: Failed to attach device from watchdog.xml
error: internal error: unable to execute QEMU command 'device_add':
Bus 'pcie.0' does not support hotplugging
The solution is simply to build the command string after assigning a
PCI address, not before.
Resolves: https://bugzilla.redhat.com/1666559
Signed-off-by: Laine Stump <laine(a)laine.org>
---
src/qemu/qemu_hotplug.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index a1c3ca999b..40c693483e 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -3280,9 +3280,6 @@ qemuDomainAttachWatchdog(virQEMUDriverPtr driver,
if (qemuAssignDeviceWatchdogAlias(watchdog) < 0)
return -1;
- if (!(watchdogstr = qemuBuildWatchdogDevStr(vm->def, watchdog, priv->qemuCaps)))
- return -1;
-
if (watchdog->model == VIR_DOMAIN_WATCHDOG_MODEL_I6300ESB) {
if (qemuDomainEnsurePCIAddress(vm, &dev, driver) < 0)
goto cleanup;
@@ -3294,6 +3291,9 @@ qemuDomainAttachWatchdog(virQEMUDriverPtr driver,
goto cleanup;
}
+ if (!(watchdogstr = qemuBuildWatchdogDevStr(vm->def, watchdog, priv->qemuCaps)))
+ goto cleanup;
+
/* QEMU doesn't have a 'dump' action; we tell qemu to 'pause', then
libvirt listens for the watchdog event, and we perform the dump
ourselves. so convert 'dump' to 'pause' for the qemu cli */
--
2.20.1
5 years, 10 months
[libvirt] ANNOUNCE: libvirt-dbus 1.3.0 released
by Pavel Hrdina
I'm happy to announce the release of libvirt-dbus 1.3.0.
libvirt-dbus wraps libvirt API to provide high-level object-oriented
API better suited for dbus-based applications.
You can download it here:
https://libvirt.org/sources/dbus/libvirt-dbus-1.3.0.tar.xz
* New features
- Support for all relevant interface APIs up to libvirt 3.0.0
* Bug fixes
- Storage volumes and with special characters in the name are now correctly listed
* Build-system improvements
- Detect flake8 automatically
- Install daemon under @sbindir@
- Fix version check for dependencies
Thanks everybody who contributed!
Pavel
5 years, 10 months
[libvirt] [PATCH 00/23] Clean up qemu.conf parsing
by Ján Tomko
Remove the odd three-phase defaults filling for TLS cert dirs
and split out the huge function into smaller ones based on
the entry groups in the augeas file.
Ján Tomko (23):
qemu: fix double space in augeas file
qemu: group swtpm entry in augeas file
qemu.conf: fill out TLS verify attributes after parsing
qemu: fill out usage-specific TLS settings after parsing
qemu_conf: split out virQEMUDriverConfigLoadSWTPMEntry
qemu_conf: split out virQEMUDriverConfigLoadMemoryEntry
qemu_conf: split out virQEMUDriverConfigLoadSecurityEntry
qemu_conf: split out virQEMUDriverConfigLoadGlusterDebugEntry
qemu_conf: split out virQEMUDriverConfigLoadNVRAMEntry
qemu_conf: split out virQEMUDriverConfigLoadLogEntry
qemu_conf: split out virQEMUDriverConfigLoadNetworkEntry
qemu_conf: split out virQEMUDriverConfigLoadRPCEntry
qemu_conf: split out virQEMUDriverConfigLoadDeviceEntry
qemu_conf: split out virQEMUDriverConfigLoadProcessEntry
qemu_conf: split out virQEMUDriverConfigLoadSaveEntry
qemu_conf: split out virQEMUDriverConfigLoadRemoteDisplayEntry
qemu_conf: split out virQEMUDriverConfigLoadSpecificTLS
qemu_conf: split out virQEMUDriverConfigLoadSPICEEntry
qemu_conf: split out virQEMUDriverConfigLoadNographicsEntry
qemu_conf: split out virQEMUDriverConfigLoadVNCEntry
qemu_conf: split out virQEMUDriverConfigLoadDefaultTLSEntry
qemu_conf: rename checkdefaultTLSx509certdir
qemu_conf: fix stray space
src/qemu/libvirtd_qemu.aug | 9 +-
src/qemu/qemu_conf.c | 751 +++++++++++++++++++++++--------------
src/qemu/qemu_conf.h | 8 +-
src/qemu/qemu_driver.c | 3 +
4 files changed, 480 insertions(+), 291 deletions(-)
--
2.20.1
5 years, 10 months
[libvirt] [PATCH v1 1/1] qemu_hotplug.c: assert disk->info.alias unique before hotplug
by Daniel Henrique Barboza
In a case where we want to hotplug the following disk:
<disk type='file' device='disk'>
(...)
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
In a QEMU guest that has a single OS disk, as follows:
<disk type='file' device='disk'>
(...)
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
What happens is that the existing guest disk will receive the ID
'scsi0-0-0-0' due to how Libvirt calculate the alias based on
the address in qemu_alias.c, qemuAssignDeviceDiskAlias. When hotplugging
a disk that happens to have the same address, Libvirt will calculate
the same ID to it and attempt to device_add. QEMU will refuse it:
$ virsh attach-device dhb hp-disk-dup.xml
error: Failed to attach device from hp-disk-dup.xml
error: internal error: unable to execute QEMU command 'device_add': Duplicate ID 'scsi0-0-0-0' for device
And Libvirt follows it up with a cleanup code in qemuDomainAttachDiskGeneric
that ends up removing what supposedly is a faulty hotplugged disk but, in
this case, ends up being the original guest disk. This happens because Libvirt
doesn't differentiate the error received by QMP device_add.
An argument can be made for how QMP device_add should provide a different
error code for this scenario. A quicker way to solve the problem is
presented in this patch: let us check the generated alias against the
aliases already presented in the disks in the VM definition. If a match
happens, error out without calling device_add.
After this patch, this is the result of the previous attach-device call:
$ ./run tools/virsh attach-device dhb ~/hp-disk-dup.xml
[sudo] password for danielhb:
error: Failed to attach device from /home/danielhb/hp-disk-dup.xml
error: operation failed: attached disk conflicts with existing device id 'scsi0-0-0-0'
Reported-by: Srikanth Aithal <bssrikanth(a)in.ibm.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413(a)gmail.com>
---
src/qemu/qemu_hotplug.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index a1c3ca999b..7c770211ab 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -875,6 +875,27 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver,
}
+/**
+ * qemuDomainDeviceAliasIsUnique:
+ *
+ * Searches the existing domain disks to check if a given alias is
+ * unique. */
+static bool
+qemuDomainDeviceAliasIsUnique(virDomainDefPtr def, char *alias)
+{
+ int idx;
+
+ for (idx = (def->ndisks - 1); idx >= 0; idx--) {
+ if (def->disks[idx]->info.alias &&
+ (strcmp(def->disks[idx]->info.alias, alias) == 0)) {
+
+ return false;
+ }
+ }
+ return true;
+}
+
+
/**
* qemuDomainAttachDiskGeneric:
*
@@ -897,6 +918,13 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
if (qemuAssignDeviceDiskAlias(vm->def, disk, priv->qemuCaps) < 0)
goto error;
+ if (!qemuDomainDeviceAliasIsUnique(vm->def, disk->info.alias)) {
+ virReportError(VIR_ERR_OPERATION_FAILED,
+ _("attached disk conflicts with existing "
+ "device id '%s'"), disk->info.alias);
+ goto error;
+ }
+
if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0)
goto error;
--
2.20.1
5 years, 10 months
[libvirt] [PATCH] qemu: process: Use enum belonging to correct type
by Peter Krempa
GCC was unhappy about comparison between two distinct enum types. Use
the correct value instead.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
Pushed as a build fix.
src/qemu/qemu_process.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index afa960a683..855bd9cb14 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -7835,7 +7835,7 @@ qemuProcessRefreshLegacyBlockjob(void *payload,
return 0;
}
- if (jobtype == VIR_DOMAIN_BLOCK_JOB_TYPE_COMMIT &&
+ if (jobtype == QEMU_BLOCKJOB_TYPE_COMMIT &&
disk->mirrorJob == VIR_DOMAIN_BLOCK_JOB_TYPE_ACTIVE_COMMIT)
jobtype = disk->mirrorJob;
--
2.20.1
5 years, 10 months
[libvirt] [PATCH] rpc: virNetClientNew: fix socket leak on error path
by Nikolay Shirokovskiy
if virNetClientNew finishes with error before sock is set
to client object then sock does not get unrefed. This is
unexpected by function clients like virNetClientNewUNIX.
Let's make sure sock gets unrefed on any error path.
Next some clients like virNetClientNewLibSSH2 try to unref
sock on virNetClientNew errors. This is not correct even
before this patch because in some cases virNetClientNew
unrefed sock on error path by itself. Let's give up
sock managment to virNetClientNew entirely.
Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy(a)virtuozzo.com>
---
src/rpc/virnetclient.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/src/rpc/virnetclient.c b/src/rpc/virnetclient.c
index 2aced79..b7ffdcb 100644
--- a/src/rpc/virnetclient.c
+++ b/src/rpc/virnetclient.c
@@ -299,7 +299,7 @@ static virNetClientPtr virNetClientNew(virNetSocketPtr sock,
int wakeupFD[2] = { -1, -1 };
if (virNetClientInitialize() < 0)
- return NULL;
+ goto error;
if (pipe2(wakeupFD, O_CLOEXEC) < 0) {
virReportSystemError(errno, "%s",
@@ -311,6 +311,7 @@ static virNetClientPtr virNetClientNew(virNetSocketPtr sock,
goto error;
client->sock = sock;
+ sock = NULL;
client->wakeupReadFD = wakeupFD[0];
client->wakeupSendFD = wakeupFD[1];
wakeupFD[0] = wakeupFD[1] = -1;
@@ -327,6 +328,7 @@ static virNetClientPtr virNetClientNew(virNetSocketPtr sock,
VIR_FORCE_CLOSE(wakeupFD[0]);
VIR_FORCE_CLOSE(wakeupFD[1]);
virObjectUnref(client);
+ virObjectUnref(sock);
return NULL;
}
@@ -513,7 +515,6 @@ virNetClientPtr virNetClientNewLibSSH2(const char *host,
if (!(ret = virNetClientNew(sock, NULL)))
goto cleanup;
- sock = NULL;
cleanup:
VIR_FREE(command);
@@ -522,7 +523,6 @@ virNetClientPtr virNetClientNewLibSSH2(const char *host,
VIR_FREE(homedir);
VIR_FREE(confdir);
VIR_FREE(nc);
- virObjectUnref(sock);
return ret;
no_memory:
@@ -619,7 +619,6 @@ virNetClientPtr virNetClientNewLibssh(const char *host,
if (!(ret = virNetClientNew(sock, NULL)))
goto cleanup;
- sock = NULL;
cleanup:
VIR_FREE(command);
@@ -628,7 +627,6 @@ virNetClientPtr virNetClientNewLibssh(const char *host,
VIR_FREE(homedir);
VIR_FREE(confdir);
VIR_FREE(nc);
- virObjectUnref(sock);
return ret;
no_memory:
--
1.8.3.1
5 years, 10 months
[libvirt] [PATCH] storage: More uniquely identify NPIV LUNs
by John Ferlan
https://bugzilla.redhat.com/show_bug.cgi?id=1657468
Commit be1bb6c95 changed the way volumes were stored from a forward
linked list to a hash table. In doing so, it required that each vol
object would have 3 unique values as keys into tables - key, name,
and path. Due to how vHBA/NPIV LUNs are created/used this resulted
in a failure to utilize all the LUN's found during processing.
The virStorageBackendSCSINewLun uses virStorageBackendSCSISerial
in order to read/return the unique serial number of the LUN to be
used as a key for the volume.
However, for NPIV based LUNs the logic results in usage of the
same serial value for each path to the LUN. For example,
$ lsscsi -tg
...
[4:0:3:13] disk fc:0x207800c0ffd79b2a0xeb02ef /dev/sde /dev/sg16
[4:0:4:0] disk fc:0x50060169446021980xeb1f00 /dev/sdf /dev/sg17
[4:0:5:0] disk fc:0x50060161446021980xeb2000 /dev/sdg /dev/sg18
...
/lib/udev/scsi_id --replace-whitespace --whitelisted --device /dev/sde
3600c0ff000d7a2965c603e5401000000
/lib/udev/scsi_id --replace-whitespace --whitelisted --device /dev/sdf
350060160c460219850060160c4602198
/lib/udev/scsi_id --replace-whitespace --whitelisted --device /dev/sdg
350060160c460219850060160c4602198
The /dev/sdf and /dev/sdg although separate LUNs would end up with the
same serial number used for the vol->key value. When attempting to add
the LUN via virStoragePoolObjAddVol, the hash table code will indicate
that we have a duplicate:
virHashAddOrUpdateEntry:341 : internal error: Duplicate key
and thus the LUN is not added to the pool.
Digging deeper into the scsi_id output using the --export option one
will find that the only difference between the two luns is:
ID_TARGET_PORT=1 for /dev/sdf
ID_TARGET_PORT=2 for /dev/sdg
So, let's use the ID_TARGET_PORT string value along with the serial
to generate a more unique key using "@serial_PORT@target_port", where
@target_port is just the value of the ID_TARGET_PORT for the LUN.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/storage/storage_util.c | 61 +++++++++++++++++++++++++++++++++++++-
1 file changed, 60 insertions(+), 1 deletion(-)
diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c
index a84ee5b600..d6d441c06d 100644
--- a/src/storage/storage_util.c
+++ b/src/storage/storage_util.c
@@ -3755,6 +3755,49 @@ virStorageBackendRefreshLocal(virStoragePoolObjPtr pool)
}
+static char *
+virStorageBackendSCSITargetPort(const char *dev)
+{
+ char *target_port = NULL;
+ const char *id;
+#ifdef WITH_UDEV
+ virCommandPtr cmd = virCommandNewArgList(
+ "/lib/udev/scsi_id",
+ "--replace-whitespace",
+ "--whitelisted",
+ "--export",
+ "--device", dev,
+ NULL
+ );
+
+ /* Run the program and capture its output */
+ virCommandSetOutputBuffer(cmd, &target_port);
+ if (virCommandRun(cmd, NULL) < 0)
+ goto cleanup;
+#endif
+
+ if (target_port && STRNEQ(target_port, "") &&
+ (id = strstr(target_port, "ID_TARGET_PORT="))) {
+ char *nl = strchr(id, '\n');
+ if (nl)
+ *nl = '\0';
+ id = strrchr(id, '=');
+ memmove(target_port, id + 1, strlen(id));
+ } else {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("unable to uniquely identify target port for '%s'"),
+ dev);
+ }
+
+#ifdef WITH_UDEV
+ cleanup:
+ virCommandFree(cmd);
+#endif
+
+ return target_port;
+}
+
+
static char *
virStorageBackendSCSISerial(const char *dev)
{
@@ -3813,6 +3856,8 @@ virStorageBackendSCSINewLun(virStoragePoolObjPtr pool,
virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
virStorageVolDefPtr vol = NULL;
char *devpath = NULL;
+ char *key = NULL;
+ char *target_port = NULL;
int retval = -1;
/* Check if the pool is using a stable target path. The call to
@@ -3877,9 +3922,21 @@ virStorageBackendSCSINewLun(virStoragePoolObjPtr pool,
VIR_STORAGE_VOL_READ_NOERROR)) < 0)
goto cleanup;
- if (!(vol->key = virStorageBackendSCSISerial(vol->target.path)))
+ if (!(key = virStorageBackendSCSISerial(vol->target.path)))
goto cleanup;
+ if (def->source.adapter.type == VIR_STORAGE_ADAPTER_TYPE_FC_HOST &&
+ STRNEQ(key, vol->target.path)) {
+ /* NPIV based LUNs use the same "serial" key. In order to distinguish
+ * we need to append a port value */
+ if (!(target_port = virStorageBackendSCSITargetPort(vol->target.path)))
+ goto cleanup;
+ if (virAsprintf(&vol->key, "%s_PORT%s", key, target_port) < 0)
+ goto cleanup;
+ } else {
+ VIR_STEAL_PTR(vol->key, key);
+ }
+
def->capacity += vol->target.capacity;
def->allocation += vol->target.allocation;
@@ -3892,6 +3949,8 @@ virStorageBackendSCSINewLun(virStoragePoolObjPtr pool,
cleanup:
virStorageVolDefFree(vol);
VIR_FREE(devpath);
+ VIR_FREE(target_port);
+ VIR_FREE(key);
return retval;
}
--
2.17.2
5 years, 10 months
[libvirt] [PATCH v2] qemu: Assign device address before qemuDomainSupportsNicdev
by Wang Yechao
qemuDomainSupportsNicdev will check the device address type on
aarch64. If it is invoked before device address assigned, hotadd
vhostuser interface with no address specified will get error.
Let qemuDomainEnsurePCIAddress run before qemuDomainSupportsNicdev.
Signed-off-by: Wang Yechao <wang.yechao255(a)zte.com.cn>
---
v1 patch:
https://www.redhat.com/archives/libvir-list/2018-December/msg00435.html
Changes in v2:
- do not modify the address type, let qemuDomainEnsurePCIAddress do it.
---
src/qemu/qemu_hotplug.c | 38 +++++++++++++++++++-------------------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 8da0233..f25c8db 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -1369,6 +1369,25 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
if (qemuAssignDeviceNetAlias(vm->def, net, -1) < 0)
goto cleanup;
+ if (qemuDomainIsS390CCW(vm->def) &&
+ net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
+ virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_CCW)) {
+ net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW;
+ if (!(ccwaddrs = virDomainCCWAddressSetCreateFromDomain(vm->def)))
+ goto cleanup;
+ if (virDomainCCWAddressAssign(&net->info, ccwaddrs,
+ !net->info.addr.ccw.assigned) < 0)
+ goto cleanup;
+ } else if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VIRTIO_S390)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("virtio-s390 net device cannot be hotplugged."));
+ goto cleanup;
+ } else if (qemuDomainEnsurePCIAddress(vm, &dev, driver) < 0) {
+ goto cleanup;
+ }
+
+ releaseaddr = true;
+
switch (actualType) {
case VIR_DOMAIN_NET_TYPE_BRIDGE:
case VIR_DOMAIN_NET_TYPE_NETWORK:
@@ -1503,25 +1522,6 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
goto cleanup;
}
- if (qemuDomainIsS390CCW(vm->def) &&
- net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
- virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_CCW)) {
- net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW;
- if (!(ccwaddrs = virDomainCCWAddressSetCreateFromDomain(vm->def)))
- goto cleanup;
- if (virDomainCCWAddressAssign(&net->info, ccwaddrs,
- !net->info.addr.ccw.assigned) < 0)
- goto cleanup;
- } else if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VIRTIO_S390)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("virtio-s390 net device cannot be hotplugged."));
- goto cleanup;
- } else if (qemuDomainEnsurePCIAddress(vm, &dev, driver) < 0) {
- goto cleanup;
- }
-
- releaseaddr = true;
-
if (VIR_ALLOC_N(tapfdName, tapfdSize) < 0 ||
VIR_ALLOC_N(vhostfdName, vhostfdSize) < 0)
goto cleanup;
--
1.8.3.1
5 years, 10 months
[libvirt] ANNOUNCE: libguestfs 1.40 released
by Richard W.M. Jones
I'm pleased to announce libguestfs 1.40, a library and a set of tools
for accessing and modifying virtual machine disk images.
This release represents about a year of work by many contributors.
I'd like to call out in particular substantial contributions from:
Pino Toscano, Tomáš Golembiovský, Nir Soffer and Nikolay Ivanets.
See the release notes below for full details.
You can get libguestfs 1.40 from here:
Main website: http://libguestfs.org/ [not updated yet]
Source: http://libguestfs.org/download/1.40-stable/
Fedora: https://koji.fedoraproject.org/koji/packageinfo?packageID=8391
Debian/experimental: https://packages.debian.org/libguestfs0
Rich.
----------------------------------------------------------------------
Release notes for libguestfs 1.40
These are also available online at:
http://libguestfs.org/guestfs-release-notes.1.html
New features
New features in existing tools
Virt-inspector now displays the libosinfo short ID for guests (Pino
Toscano).
Guestfish -N will now generate 1G disks instead of 100M disks by
default.
Virt-resize supports f2fs filesystems (Pino Toscano).
libguestfs-test-tool now supports bash tab completion (Pino Toscano).
The --machine-readable option now supports sending output to files or
stdout/stderr. This works uniformly across most OCaml-based virt
tools, specifically: virt-builder, virt-builder-repository, virt-dib,
virt-get-kernel, virt-resize, virt-sparsify, and virt-v2v (Pino
Toscano).
Virt-builder --uninstall option now works on SUSE (Sebastian Meyer).
Virt-builder now supports Windows. We are not able to ship Windows
templates in the public respository for obvious licensing reasons, but
if you are an MSDN subscriber you may build your own. See
https://rwmj.wordpress.com/2018/09/13/creating-windows-templates-for-virt...
Many tools now support a --key option allowing you to pass in
decryption keys for filesystems stored in local files on the host
rather than having to feed them in over stdin (Pino Toscano).
virt-v2v and virt-p2v
New -o rhv-upload mode for directly uploading images to RHV, bypassing
the Export Storage Domain (Tomáš Golembiovský, Nir Soffer, Daniel Erez,
Pino Toscano).
New -o openstack mode for directly uploading images to OpenStack and
Cinder using OpenStack APIs.
Virt-v2v now has a general mechanism for input and output options: -io
and -oo.
Virt-v2v can now install the RHV tools or QEMU GA in guests (Tomáš
Golembiovský).
The huge manual has now been split into several smaller documents and
is more focused on helping users to accomplish specific v2v tasks.
Multiple improvements to the OVF metadata when converting to RHV (Tomáš
Golembiovský, Pino Toscano, Arik Hadas).
Virt-v2v can now convert Linux guests with split kernel packages,
especially Ubuntu 18.04 (Pino Toscano).
Virt-v2v old --password-file option has been replaced by -ip (the old
option remains for backwards compatibility).
Virt-v2v now preserves the VM Generation ID.
Virt-v2v has a new --mac option allowing specific NICs to be mapped
precisely to networks or bridges on the target.
New virt-v2v --print-estimate option to estimate the size of data that
virt-v2v will copy.
Virt-v2v is now usually able to remove open-vm-tools and VMware Tools
from the Linux guest during conversion (Pino Toscano).
Virt-v2v can now support UEFI conversions to RHV (Tomáš Golembiovský).
Virt-p2v now prefers you to shut down instead of rebooting the machine
after conversion has finished (Pino Toscano).
Virt-v2v now writes the libosinfo short ID to the libvirt metadata when
using -o local and -o libvirt output modes (Martin Kletzander).
Language bindings
OpenJDK 10+ is supported (Pino Toscano).
Java bindings fixed for Gentoo host (Martin Kletzander).
Inspection
Support Kali Linux (Pino Toscano).
When inspecting mountpoints, look for /etc/mdadm/mdadm.conf as well as
/etc/mdadm.conf (Nikolay Ivanets).
Improved support for OpenSUSE Tumbleweed (Pino Toscano).
Architectures and platforms
Miscellaneous macOS build fixes (Adam Robinson).
Other
Multiple documentation typos fixed (Yuri Chornoivan).
Security
See also guestfs-security(1).
CVE-2018-11806
Qemu's slirp (userspace networking) had several buffer overflows which
could be triggered from the guest or network side.
API
New APIs
"f2fs_expand"
Expand an f2fs filesystem (Pino Toscano).
"inspect_get_osinfo"
Get the libosinfo short ID for the inspected guest (Pino Toscano).
"lvm_scan"
This rescans all PVs, VGs and LVs, optionally activating them.
Other API changes
"part_get_mbr_part_type" was reimplemented in OCaml (Nikolay Ivanets).
"list_filesystems" now filters out MBR extended partitions (Nikolay
Ivanets).
"vgscan" has been deprecated. Use the new "lvm_scan" API in
preference.
Build changes
The JSON library switched from yajl to Jansson ≥ 2.7 (Pino Toscano).
Support for The Sleuth Kit 4.5 (Pino Toscano).
Multiple improvements in the "./configure" script (Lin Ma).
More out-of-tree build fixes (Hilko Bengen).
Some work on reproducible builds (Bernhard M. Wiedemann).
Internals
lvmetad is now used unconditionally, and is started much earlier in the
appliance boot process. This fixes support for certain PV types.
On Debian, dash is installed inside the appliance and in virt-rescue
(Pino Toscano).
The amount of RAM assigned to the appliance has been increased from
500M to 768M (on x86_64, other architectures have different limits).
This enables use of up to 255 disks when using recent Linux kernels.
Virt-v2v now models the source machine type (eg. i440FX, Q35 or virt).
Virt-p2v now generates configuration code automatically, also code for
parsing the kernel command line.
Use "LT_INIT" instead of "AC_PROG_LIBTOOL".
The OCaml "JSON" code for parsing and serializing has been unified into
a single abstract data type.
Most OCaml tools are now built using the PIC runtime. This has a
performance penalty on i686, but is relatively free on other
architectures and has security benefits.
The direct backend now queries the qemu binary for availability of KVM,
instead of using a heuristic based on /dev/kvm (Andrea Bolognani).
Our "clever" libxml2 writer macros are now used consistently across all
parts of the code base.
Qemu dropped -nodefconfig without telling us. The equivalent
-no-user-config option is now used instead. Qemu also moved the
"serial" option from -drive to -device, again without any notice, and
this is also fixed.
Bugs fixed
https://bugzilla.redhat.com/1664310
[RHEL 7.6 LP] openstack output leaks passwords
https://bugzilla.redhat.com/1661038
virt-inspector fails with "error: int_of_string" on a Linux image
when /etc/fstab contains a partionless device
https://bugzilla.redhat.com/1651432
v2v - support for -insecure option to support OSP SSL connection
for VM migrations
https://bugzilla.redhat.com/1642044
[RFE] virt-p2v UI should give the option to shutdown after
conversion is finished
https://bugzilla.redhat.com/1634248
virt-v2v cannot convert opensuse15 guest
https://bugzilla.redhat.com/1624902
Fix rhev-apt command that virt-v2v runs in Windows guests on first
boot
https://bugzilla.redhat.com/1624878
Update v2v docs to describe support for SHA 2 certs required for
converting Windows 7 and 2008 R2 guests
https://bugzilla.redhat.com/1615885
Minor log issue of virt-v2v
https://bugzilla.redhat.com/1614276
VixDiskLib: VixDiskLib_Read: Read 4096 sectors at 57516160 failed.
Error 2 (Memory allocation failed. Out of memory.) (DiskLib error
802: NBD_ERR_INSUFFICIENT_RESOURCES) at 5240.
https://bugzilla.redhat.com/1612785
"warning: <target dev='sr0'> was ignored because the device name
could not be recognized" should be hidden since convert cdrom is
supported by virt-v2v
https://bugzilla.redhat.com/1611690
part_to_dev "/dev/sdp1" returns "/dev/sd" instead of "/dev/sdp"
https://bugzilla.redhat.com/1608131
inspection fails when swap partition in /etc/fstab has incorrect
UUID compared to actual swap partition
https://bugzilla.redhat.com/1605071
On machines where /dev/kvm exists but KVM doesn't work, libguestfs
will not fall back to TCG
https://bugzilla.redhat.com/1602353
virt-inspector can't inspect LUKS-encrypted RHEL7 guest image
https://bugzilla.redhat.com/1601943
Improve error "No module named ovirtsdk4" in v2v rhv-upload
conversion
https://bugzilla.redhat.com/1598715
Adding QXL device in OVF causes Cirrus Logic device to be added to
guest
https://bugzilla.redhat.com/1598350
RFE: virt-v2v should preserve <genid>
https://bugzilla.redhat.com/1596851
Transfer fails if local host is in maintenance mode
https://bugzilla.redhat.com/1596810
Transfer fails if local host belongs to another DC
https://bugzilla.redhat.com/1592468
v2v to RHV transfer fails with: error: [empty name]: cannot read
'//*/disksection' with value: null
https://bugzilla.redhat.com/1592061
virt-v2v convert rhel5.3 failure when executing rpm -ql
kernel-2.6.18-128.el5 command
https://bugzilla.redhat.com/1591789
p2v: error: XML error: CPU vendor specified without CPU model
https://bugzilla.redhat.com/1590220
Hide rhv-upload option in virt-p2v client
https://bugzilla.redhat.com/1588451
Don't use relative socket paths for NBD
https://bugzilla.redhat.com/1588088
RFE: Support for -o rhv-upload via Unix domain socket
https://bugzilla.redhat.com/1586198
ovirt-imageio-daemon times out during migration
https://bugzilla.redhat.com/1580309
virt-v2v rhel7.6 build can't convert guest to null with qemu-kvm
rhel7.5.z build
https://bugzilla.redhat.com/1580292
Virt-v2v rhel7.6 build can't convert guest with qemu-kvm rhel7.5.z
build
https://bugzilla.redhat.com/1579047
virt-builder: ubuntu-18.04 template has stray HTTP proxy configured
for apt
https://bugzilla.redhat.com/1575640
virt-builder: error: host cpu (x86_64) and guest arch (unknown) are
not compatible
https://bugzilla.redhat.com/1570407
virt-v2v -i ova gives checksum error when missing files are
mentioned in .mf
https://bugzilla.redhat.com/1567763
guestfsd: error: /Windows/Drivers/VirtIO: Read-only file system
https://bugzilla.redhat.com/1564983
The mount-vfs failed to mount the logical volume
https://bugzilla.redhat.com/1561828
RHV tools not properly installed in migrated Windows VM's causing
boot failure
https://bugzilla.redhat.com/1559027
virt-v2v does not honor --network with -o rhv-upload
https://bugzilla.redhat.com/1557273
[RFE] Upload images directly to oVirt (virt-v2v -o rhv-upload)
https://bugzilla.redhat.com/1544842
[RFE] Add libosinfo short-id to virt-inspector output
https://bugzilla.redhat.com/1544674
virt-inspector --help differs from manpage
https://bugzilla.redhat.com/1544227
RFE: recognize the Kali Linux distribution
https://bugzilla.redhat.com/1532224
Resume=/dev/sdaX can't be updated to resume=/dev/vdaX in rhel7
guest's grub file after v2v conversion
https://bugzilla.redhat.com/1530967
Change categories of "Guest Operating system management by VIX API"
in v2v man page
https://bugzilla.redhat.com/1527334
Various -it vddk -io vddk* options should be documented, removed or
fixed
https://bugzilla.redhat.com/1148012
Reverted: RFE: Allow qemu-bridge-helper to be used to implement
guestfs_set_network
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW
5 years, 10 months