[libvirt] [PATCH] virsh: clarify snapshot --live
by Chen Hanxiao
From: Chen Hanxiao <chenhanxiao(a)gmail.com>
In libvirt, snapshot means disk snapshot.
snapshot --live is more like VM checkpoint.
Make it clear in virsh.pod.
Signed-off-by: Chen Hanxiao <chenhanxiao(a)gmail.com>
---
tools/virsh.pod | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/tools/virsh.pod b/tools/virsh.pod
index fc6a680..30e6bf3 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -3896,8 +3896,9 @@ this. If this flag is not specified, then some hypervisors may fail
after partially performing the action, and B<dumpxml> must be used to
see whether any partial changes occurred.
-If I<--live> is specified, libvirt takes the snapshot while the guest is
-running. This increases the size of the memory image of the external
+If I<--live> is specified, libvirt takes the snapshot(checkpoint) while
+the guest is running. Both disk snapshot and VM memory snapshot will be took.
+This increases the size of the memory image of the external
checkpoint. This is currently supported only for external checkpoints.
Existence of snapshot metadata will prevent attempts to B<undefine>
--
1.8.3.1
8 years, 3 months
[libvirt] [RFC] Design executing commands from within domains
by Michal Privoznik
Dear list,
while wiring qemu-ga into libvirt I've noticed that it has ability to
spawn commands inside guest. I haven't paid much attention to it then as
implementing libvirt <-> qemu-ga communication was more important. But
lately couple of requests on the list showed up where ability to spawn
various commands inside guests would be much appreciated (e.g. when
fetching some stats that HV can't know or has no support for yet -
free/df/..).
When it comes to spawning commands we distinguish two modes: sync and
async. I think we should stick to this on the public API level too. Yet
better, we can have async APIs and the sync API would just be a wrapper
around async then.
One picture instead of thousand words:
/* obtain conn and dom somehow */
const char argv[] = {"argv1", "argv2", "argv3", ...}
size_t argc = ARRAY_CARDINALITY(argv);
unsigned int flags = 0;
virDomainCommandPtr cmd = virDomainCommandNew("/path/to/binary", argv,
argc, flags);
/* Should we care about env too? */
virStreamPtr st = virSreamNew(conn, VIR_STREAM_NONBLOCK);
virDomainCommandRun(dom, cmd, st, VIR_COMMAND_STRING_IO);
virStreamEventAddCallback(st, VIR_STREAM_EVENT_READABLE,
domainCommandCallback, ...);
/* ... */
virDomainCommandJoin(dom, cmd);
virStreamEventRemoveCallback(con->st)
virDomainCommandFree(cmd);
While qemu-ga can handle input for a binary its executing, this must be
put right into JSON when constructing the qemu-ga command. It's not
common that by that time users know the input they want to enter. So I
have to figure out something.
Opinions?
Michal
8 years, 3 months
[libvirt] [PATCH 0/3] Adjust device compat. rules for dmi-to-pci-bridge and pcie-bus-expander
by Laine Stump
I got a few things wrong in the original implementation. Details in
the individual patches.
Laine Stump (3):
conf: improve error log when PCI devices don't match requested
controller
conf: don't allow connecting upstream-port directly to
pce-expander-bus
conf: restrict where dmi-to-pci-bridge can be connected
docs/formatdomain.html.in | 24 ++++---
src/conf/domain_addr.c | 79 ++++++++++++----------
src/conf/domain_addr.h | 4 +-
.../qemuxml2argv-q35-dmi-bad-address1.xml | 39 +++++++++++
.../qemuxml2argv-q35-dmi-bad-address2.xml | 39 +++++++++++
tests/qemuxml2argvtest.c | 16 +++++
6 files changed, 155 insertions(+), 46 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-dmi-bad-address1.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-dmi-bad-address2.xml
--
2.7.4
8 years, 3 months
[libvirt] [PATCH v3] virsh: Introduce nodedev-event command
by Jovanka Gulicoska
Add nodedev-event support for node device lifecycle events
---
tools/virsh-nodedev.c | 187 ++++++++++++++++++++++++++++++++++++++++++++++++++
tools/virsh.pod | 18 +++++
2 files changed, 205 insertions(+)
diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c
index a715b61..d3d3fc1 100644
--- a/tools/virsh-nodedev.c
+++ b/tools/virsh-nodedev.c
@@ -31,6 +31,7 @@
#include "viralloc.h"
#include "virfile.h"
#include "virstring.h"
+#include "virtime.h"
#include "conf/node_device_conf.h"
/*
@@ -739,6 +740,186 @@ cmdNodeDeviceReset(vshControl *ctl, const vshCmd *cmd)
return ret;
}
+/*
+ * "nodedev-event" command
+ */
+VIR_ENUM_DECL(virshNodeDeviceEvent)
+VIR_ENUM_IMPL(virshNodeDeviceEvent,
+ VIR_NODE_DEVICE_EVENT_LAST,
+ N_("Created"),
+ N_("Deleted"))
+
+static const char *
+virshNodeDeviceEventToString(int event)
+{
+ const char *str = virshNodeDeviceEventTypeToString(event);
+ return str ? _(str) : _("unknown");
+}
+
+struct virshNodeDeviceEventData {
+ vshControl *ctl;
+ bool loop;
+ bool timestamp;
+ int count;
+};
+typedef struct virshNodeDeviceEventData virshNodeDeviceEventData;
+
+VIR_ENUM_DECL(virshNodeDeviceEventId)
+VIR_ENUM_IMPL(virshNodeDeviceEventId,
+ VIR_NODE_DEVICE_EVENT_ID_LAST,
+ "lifecycle")
+
+static void
+vshEventLifecyclePrint(virConnectPtr conn ATTRIBUTE_UNUSED,
+ virNodeDevicePtr dev,
+ int event,
+ int detail ATTRIBUTE_UNUSED,
+ void *opaque)
+{
+ virshNodeDeviceEventData *data = opaque;
+
+ if (!data->loop && data->count)
+ return;
+
+ if (data->timestamp) {
+ char timestamp[VIR_TIME_STRING_BUFLEN];
+
+ if (virTimeStringNowRaw(timestamp) < 0)
+ timestamp[0] = '\0';
+
+ vshPrint(data->ctl, _("%s: event 'lifecycle' for node device %s: %s\n"),
+ timestamp,
+ virNodeDeviceGetName(dev), virshNodeDeviceEventToString(event));
+ } else {
+ vshPrint(data->ctl, _("event 'lifecycle' for node device %s: %s\n"),
+ virNodeDeviceGetName(dev), virshNodeDeviceEventToString(event));
+ }
+
+ data->count++;
+ if (!data->loop)
+ vshEventDone(data->ctl);
+}
+
+static const vshCmdInfo info_node_device_event[] = {
+ {.name = "help",
+ .data = N_("Node Device Events")
+ },
+ {.name = "desc",
+ .data = N_("List event types, or wait for node device events to occur")
+ },
+ {.name = NULL}
+};
+
+static const vshCmdOptDef opts_node_device_event[] = {
+ {.name = "device",
+ .type = VSH_OT_STRING,
+ .help = N_("filter by node device name")
+ },
+ {.name = "event",
+ .type = VSH_OT_STRING,
+ .help = N_("which event type to wait for")
+ },
+ {.name = "loop",
+ .type = VSH_OT_BOOL,
+ .help = N_("loop until timeout or interrupt, rather than one-shot")
+ },
+ {.name = "timeout",
+ .type = VSH_OT_INT,
+ .help = N_("timeout seconds")
+ },
+ {.name = "list",
+ .type = VSH_OT_BOOL,
+ .help = N_("list valid event types")
+ },
+ {.name = "timestamp",
+ .type = VSH_OT_BOOL,
+ .help = N_("show timestamp for each printed event")
+ },
+ {.name = NULL}
+};
+
+static bool
+cmdNodeDeviceEvent(vshControl *ctl, const vshCmd *cmd)
+{
+ virNodeDevicePtr dev = NULL;
+ bool ret = false;
+ int eventId = -1;
+ int timeout = 0;
+ virshNodeDeviceEventData data;
+ const char *eventName = NULL;
+ const char *device_value = NULL;
+ int event;
+ virshControlPtr priv = ctl->privData;
+
+ if (vshCommandOptBool(cmd, "list")) {
+ size_t i;
+
+ for (i = 0; i < VIR_NODE_DEVICE_EVENT_ID_LAST; i++)
+ vshPrint(ctl, "%s\n", virshNodeDeviceEventIdTypeToString(i));
+ return true;
+ }
+
+ if (vshCommandOptStringReq(ctl, cmd, "event", &eventName) < 0)
+ return false;
+ if (!eventName) {
+ vshError(ctl, "%s", _("either --list or event type is required"));
+ return false;
+ }
+ if ((event = virshNodeDeviceEventIdTypeFromString(eventName)) < 0) {
+ vshError(ctl, _("unknown event type %s"), eventName);
+ return false;
+ }
+
+ data.ctl = ctl;
+ data.loop = vshCommandOptBool(cmd, "loop");
+ data.timestamp = vshCommandOptBool(cmd, "timestamp");
+ data.count = 0;
+ if (vshCommandOptTimeoutToMs(ctl, cmd, &timeout) < 0)
+ return false;
+ if (vshCommandOptStringReq(ctl, cmd, "device", &device_value) < 0)
+ return false;
+
+ if (device_value) {
+ if (!(dev = virNodeDeviceLookupByName(priv->conn, device_value))) {
+ vshError(ctl, "%s '%s'",
+ _("Could not find matching device"), device_value);
+ goto cleanup;
+ }
+ }
+ if (vshEventStart(ctl, timeout) < 0)
+ goto cleanup;
+
+ if ((eventId = virConnectNodeDeviceEventRegisterAny(priv->conn, dev, event,
+ VIR_NODE_DEVICE_EVENT_CALLBACK(vshEventLifecyclePrint),
+ &data, NULL)) < 0)
+ goto cleanup;
+ switch (vshEventWait(ctl)) {
+ case VSH_EVENT_INTERRUPT:
+ vshPrint(ctl, "%s", _("event loop interrupted\n"));
+ break;
+ case VSH_EVENT_TIMEOUT:
+ vshPrint(ctl, "%s", _("event loop timed out\n"));
+ break;
+ case VSH_EVENT_DONE:
+ break;
+ default:
+ goto cleanup;
+ }
+ vshPrint(ctl, _("events received: %d\n"), data.count);
+ if (data.count)
+ ret = true;
+
+ cleanup:
+ vshEventCleanup(ctl);
+ if (eventId >= 0 &&
+ virConnectNodeDeviceEventDeregisterAny(priv->conn, eventId) < 0)
+ ret = false;
+ if (dev)
+ virNodeDeviceFree(dev);
+ return ret;
+}
+
+
const vshCmdDef nodedevCmds[] = {
{.name = "nodedev-create",
.handler = cmdNodeDeviceCreate,
@@ -788,5 +969,11 @@ const vshCmdDef nodedevCmds[] = {
.info = info_node_device_reset,
.flags = 0
},
+ {.name = "nodedev-event",
+ .handler = cmdNodeDeviceEvent,
+ .opts = opts_node_device_event,
+ .info = info_node_device_event,
+ .flags = 0
+ },
{.name = NULL}
};
diff --git a/tools/virsh.pod b/tools/virsh.pod
index 97d16c5..a6e9516 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -2958,6 +2958,24 @@ a node device between guest passthrough or the host. Libvirt will
often do this action implicitly when required, but this command
allows an explicit reset when needed.
+=item B<nodedev-event> {[I<nodedev>] I<event> [I<--loop>] [I<--timeout>
+I<seconds>] [I<--timestamp>] | I<--list>}
+
+Wait for a class of node device events to occur, and print appropriate
+details of events as they happen. The events can optionally be filtered
+by I<nodedev>. Using I<--list> as the only argument will provide a list
+of possible I<event> values known by this client, although the connection
+might not allow registering for all these events.
+
+By default, this command is one-shot, and returns success once an event
+occurs; you can send SIGINT (usually via C<Ctrl-C>) to quit immediately.
+If I<--timeout> is specified, the command gives up waiting for events
+after I<seconds> have elapsed. With I<--loop>, the command prints all
+events until a timeout or interrupt key.
+
+When I<--timestamp> is used, a human-readable timestamp will be printed
+before the event.
+
=back
=head1 VIRTUAL NETWORK COMMANDS
--
2.7.4
8 years, 3 months
[libvirt] [PATCH] virt-admin: Properly fix the default session daemon URI to admin server
by Erik Skultety
Commit 30ce2f0e tried to fix the issue with an incorrect session URI to admin
server but it messed up the checks:
if (geteuid == 0 && VIR_STRDUP(*uristr, "libvirtd:///system") < 0)
return -1;
else if (VIR_STRDUP(*uristr, "libvirtd:///session") < 0)
return -1;
So if a client executed with root privileges tries to connect, its euid is
checked (true) and the correct URI is successfully copied to @uristr (false),
therefore the 'else' branch is taken and @uristr is replaced by the session URI
which for root results in:
Failed to connect socket to '/root/.cache/libvirt/libvirt-admin-sock':
No such file or directory
Signed-off-by: Erik Skultety <eskultet(a)redhat.com>
---
src/libvirt-admin.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/libvirt-admin.c b/src/libvirt-admin.c
index 4552e84..03245b6 100644
--- a/src/libvirt-admin.c
+++ b/src/libvirt-admin.c
@@ -179,11 +179,13 @@ virAdmGetDefaultURI(virConfPtr conf, char **uristr)
* we set the default admin server URI to 'libvirtd:///system' or
* 'libvirtd:///session' depending on the process's EUID.
*/
- if (geteuid() == 0 &&
- VIR_STRDUP(*uristr, "libvirtd:///system") < 0)
+ if (geteuid() == 0) {
+ if (VIR_STRDUP(*uristr, "libvirtd:///system") < 0)
return -1;
- else if (VIR_STRDUP(*uristr, "libvirtd:///session") < 0)
+ } else {
+ if (VIR_STRDUP(*uristr, "libvirtd:///session") < 0)
return -1;
+ }
}
}
--
2.5.5
8 years, 3 months
[libvirt] [PATCH] admin: Fix the default uri for session daemon to libvirtd:///session
by Erik Skultety
Just like we decide on which URI we go with based on EUID for qemu in remote
driver, do a similar thing for admin except we do not spawn a daemon in this
case.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1356858
Signed-off-by: Erik Skultety <eskultet(a)redhat.com>
---
src/libvirt-admin.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/libvirt-admin.c b/src/libvirt-admin.c
index 4bf29b1..4552e84 100644
--- a/src/libvirt-admin.c
+++ b/src/libvirt-admin.c
@@ -176,10 +176,14 @@ virAdmGetDefaultURI(virConfPtr conf, char **uristr)
/* Since we can't probe connecting via any hypervisor driver as libvirt
* does, if no explicit URI was given and neither the environment
* variable, nor the configuration parameter had previously been set,
- * we set the default admin server URI to 'libvirtd://system'.
+ * we set the default admin server URI to 'libvirtd:///system' or
+ * 'libvirtd:///session' depending on the process's EUID.
*/
- if (VIR_STRDUP(*uristr, "libvirtd:///system") < 0)
- return -1;
+ if (geteuid() == 0 &&
+ VIR_STRDUP(*uristr, "libvirtd:///system") < 0)
+ return -1;
+ else if (VIR_STRDUP(*uristr, "libvirtd:///session") < 0)
+ return -1;
}
}
--
2.5.5
8 years, 3 months
[libvirt] vfio: Error: Failed to setup INTx fd: Device or resource busy when PF pass-thought duel port NIC
by Moshe Levi
Hi,
I am trying to PF pass-thought with Mellanox NIC CX4 with duel port card.
I know the currently it doesn't support ACS, therefore we can't allocate 2 PF to 2 guest. (both pci device are in the same IOMMU group)
But if I understand accoriding to [1] this currently there should be a problem to pass-thought both PFs to the same guest.
before we boot the guest I unbind the pci device with the following commands.
echo 0000:03:00.00> /sys/bus/pci/devices/0000:03:00.00/driver/unbind
echo 0000:03:00.01 > /sys/bus/pci/devices/0000:03:00.1/driver/unbind
I tried it worked and it was working on one environment , but on other environment we are getting the
following error vfio: Error: Failed to setup INTx fd: Device or resource busy. See detail error [2].
Can anyone explain when/why this error occurs? And how can we fix it?
[1] - http://vfio.blogspot.co.il/2014/08/iommu-groups-inside-and-out.html
[2] - Nova-compute.log error:
2016-08-08 21:20:14.213 20236 ERROR nova.virt.libvirt.guest [req-5a6532d4-317f-4165-855e-37d8b36c71ec 295fe519b3864de5894fa0219362c26f 2e4cb36a0a3645e7b924deecea3bd210 - - -] Error launching a defined domain with XML: <domain type='kvm'>
<name>instance-00000040</name>
<uuid>74abfd25-aab6-4362-ab28-49c3bbd5e508</uuid>
<metadata>
<nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0">
<nova:package version="12.0.3-1.el7ost"/>
<nova:name>Test</nova:name>
<nova:creationTime>2016-08-08 21:20:08</nova:creationTime>
<nova:flavor name="Mellanox_PT_2">
<nova:memory>16384</nova:memory>
<nova:disk>0</nova:disk>
<nova:swap>0</nova:swap>
<nova:ephemeral>0</nova:ephemeral>
<nova:vcpus>16</nova:vcpus>
</nova:flavor>
<nova:owner>
<nova:user uuid="295fe519b3864de5894fa0219362c26f">admin</nova:user>
<nova:project uuid="2e4cb36a0a3645e7b924deecea3bd210">openstack</nova:project>
</nova:owner>
<nova:root type="image" uuid="49d20d6e-e247-43ff-aeec-84ba53d6b439"/>
</nova:instance>
</metadata>
<memory unit='KiB'>16777216</memory>
<currentMemory unit='KiB'>16777216</currentMemory>
<vcpu placement='static' cpuset='3-23,27-47'>16</vcpu>
<cputune>
<shares>16384</shares>
</cputune>
<sysinfo type='smbios'>
<system>
<entry name='manufacturer'>Red Hat</entry>
<entry name='product'>OpenStack Compute</entry>
<entry name='version'>12.0.3-1.el7ost</entry>
<entry name='serial'>d336b2a1-4abd-4602-9bc4-4aeb20f778e7</entry>
<entry name='uuid'>74abfd25-aab6-4362-ab28-49c3bbd5e508</entry>
<entry name='family'>Virtual Machine</entry>
</system>
</sysinfo>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.2.0'>hvm</type>
<boot dev='hd'/>
<smbios mode='sysinfo'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='host-model'>
<model fallback='allow'/>
<topology sockets='16' cores='1' threads='1'/>
</cpu>
<clock offset='utc'>
<timer name='pit' tickpolicy='delay'/>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/var/lib/nova/instances/74abfd25-aab6-4362-ab28-49c3bbd5e508/disk'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<interface type='bridge'>
<mac address='fa:16:3e:14:ec:96'/>
<source bridge='qbre5243bb0-8e'/>
<target dev='tape5243bb0-8e'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='file'>
<source path='/var/lib/nova/instances/74abfd25-aab6-4362-ab28-49c3bbd5e508/console.log'/>
<target port='0'/>
</serial>
<serial type='pty'>
<target port='1'/>
</serial>
<console type='file'>
<source path='/var/lib/nova/instances/74abfd25-aab6-4362-ab28-49c3bbd5e508/console.log'/>
<target type='serial' port='0'/>
</console>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' keymap='en-us'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='cirrus' vram='16384' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x03' slot='0x00' function='0x1'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</hostdev>
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</hostdev>
<memballoon model='virtio'>
<stats period='10'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</memballoon>
</devices>
</domain>
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [req-5a6532d4-317f-4165-855e-37d8b36c71ec 295fe519b3864de5894fa0219362c26f 2e4cb36a0a3645e7b924deecea3bd210 - - -] [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] Instance failed to spawn
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] Traceback (most recent call last):
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2156, in _build_resources
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] yield resources
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2009, in _build_and_run_instance
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] block_device_info=block_device_info)
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 2585, in spawn
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] block_device_info=block_device_info)
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 4699, in _create_domain_and_network
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] xml, pause=pause, power_on=power_on)
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 4629, in _create_domain
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] guest.launch(pause=pause)
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 142, in launch
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] self._encoded_xml, errors='ignore')
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 204, in __exit__
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] six.reraise(self.type_, self.value, self.tb)
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 137, in launch
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] return self._domain.createWithFlags(flags)
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 183, in doit
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] result = proxy_call(self._autowrap, f, *args, **kwargs)
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 141, in proxy_call
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] rv = execute(f, *args, **kwargs)
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 122, in execute
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] six.reraise(c, e, tb)
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 80, in tworker
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] rv = meth(*args, **kwargs)
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1059, in createWithFlags
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] if ret == -1: raise libvirtError ('virDomainCreateWithFlags() failed', dom=self)
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] libvirtError: internal error: early end of file from monitor: possible problem:
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] 2016-08-08T21:20:13.577395Z qemu-kvm: -device vfio-pci,host=03:00.0,id=hostdev1,bus=pci.0,addr=0x6: vfio: Error: Failed to setup INTx fd: Device or resource busy
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] 2016-08-08T21:20:13.578216Z qemu-kvm: -device vfio-pci,host=03:00.0,id=hostdev1,bus=pci.0,addr=0x6: Device initialization failed
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508] 2016-08-08T21:20:13.578231Z qemu-kvm: -device vfio-pci,host=03:00.0,id=hostdev1,bus=pci.0,addr=0x6: Device 'vfio-pci' could not be initialized
2016-08-08 21:20:14.214 20236 ERROR nova.compute.manager [instance: 74abfd25-aab6-4362-ab28-49c3bbd5e508]
2016-08-08 21:20:54.118 20236 WARNING nova.compute.manager [req-d1bd757e-ab71-472b-8555-935bfbecbe89 - - - - -] Bandwidth usage not supported by hypervisor.
8 years, 3 months
[libvirt] ANNOUNCE: libguestfs 1.34 released
by Richard W.M. Jones
I'm pleased to announce libguestfs 1.34, a library and set of tools
for accessing and modifying virtual machine disk images.
This release took about 8 months of work by many contributors.
Amongst the new features are large performance improvements,
substantial enhancements to virt-p2v & virt-v2v, better SELinux
support, and APIs for doing forensic analysis of disk images. See the
release notes below for full details.
You can get libguestfs 1.34 here:
Main website: http://libguestfs.org/
Source: http://libguestfs.org/download/1.34-stable/
Fedora 24: http://koji.fedoraproject.org/koji/packageinfo?packageID=8391
It will appear as an update for F24 in about a week.
Fedora 25: (blocked on RHBZ#1365270)
Debian/experimental: https://packages.debian.org/libguestfs0
Rich.
Release notes (also available online at
http://libguestfs.org/guestfs-release-notes.1.html ):
New features
Multiple performance enhancements were made in libguestfs. The "hot
cache" time to launch to appliance should be under 1 second assuming
recent qemu and kernel are installed. There are also new utilities for
precisely benchmarking libguestfs (utils/boot-benchmark and
utils/boot-analysis in the source tree).
The virt-p2v tool for converting physical machines to virtual machines
was substantially improved. This includes: clearer, coloured output
during conversions, support for Gtk 3, more detailed information about
hardware, click to identify network interfaces, more debugging tools
included with the ISO, and many bug fixes.
f2fs (Flash Friendly File System) is now supported (Pino Toscano).
New tools
virt-p2v-make-kiwi(1) can be used to build the virt-p2v ISO based on
SLES and openSUSE, using the kiwi utility (Cédric Bosdonnat).
New features in existing tools
virt-resize will now preserve the GPT GUID. This was required for
Windows Server 2012 R2, where the bootloader would become confused if
the GUID changed (Maxim Perevedentsev).
virt-resize will use sparse copying for (old MBR-style) extended
partitions. This makes resizing of guests that use extended partitions
much faster (Maxim Perevedentsev).
virt-p2v kernel command line options can now be used to set defaults
for GUI configuration.
The virt-p2v debugging options have been completely removed,
simplifying the interface and documentation. Debugging information is
now captured fully automatically.
virt-p2v-make-disk lets you specify an --arch option, allowing you to
build a 32 bit virt-p2v, for compatibility with older systems.
virt-p2v-make-disk no longer requires that you specify an "os-version"
for the virt-p2v disk. If omitted it will try to choose a suitable
"os-version" depending on your host system.
virt-p2v-make-disk and virt-p2v-make-kickstart both gain a new
--install option that allows you to add arbitrary extra packages to the
virt-p2v ISO, for customization, additional debugging tools and so on.
virt-v2v will now uninstall Parallels Tools (or the equivalent
Virtuozzo Tools) from Linux guests. Also stop the Windows drivers from
loading at boot. (Roman Kagan and Pavel Butsykin)
virt-v2v --in-place mode has been enhanced to allow the caller to
choose whether or not to install certain virtio drivers in the guest
(Roman Kagan).
virt-v2v conversion of Windows guests was substantially rewritten and
simplified (Roman Kagan).
virt-v2v --in-place mode now supports installing virtio-scsi drivers in
guests (Roman Kagan).
virt-v2v can now convert SUSE guests and SUSE guests using UEFI (Cédric
Bosdonnat and Jim Fehlig).
virt-v2v can now convert guests to Glance that have multiple disks.
Previously it would fail on such guests.
The virt-v2v --no-trim and --vmtype options are now no-ops. They will
print a warning but are otherwise ignored. virt-v2v can now generate
the OVF vmtype correctly without user intervention.
virt-v2v has now been tested against Citrix Xen as a source hypervisor
(Cédric Bosdonnat).
virt-v2v adds support for SUSE VMDP drivers (Cédric Bosdonnat).
virt-v2v can convert OVA files containing subfolders, as produced by
SUSE Studio (Cédric Bosdonnat).
virt-v2v sets the OVF "<Origin>" element correctly. oVirt has been
extended to support more source hypervisors (Shahar Havivi).
virt-v2v now supports Windows Server 2016 (Tomáš Golembiovský).
The virt-builder --list option can now be used to show all templates or
a single template (Pino Toscano).
All OCaml-based tools now use getopt_long(3) for option parsing, and
--help output has been improved (Pino Toscano).
virt-builder and virt-customize --selinux-relabel option can now fully
relabel the guest filesystem at build time, without requiring a lengthy
autorelabel at first boot.
virt-customize --delete now accepts globs.
New virt-customize --uninstall option lets you uninstall packages.
virt-customize can now use "pvvxsvc" as an alternative to "rhsrvany"
for running firstboot scripts in Windows guests (Cédric Bosdonnat).
virt-customize now uses the strongest hashing scheme for passwords on
Arch and Void Linux (Pino Toscano).
virt-customize --install now works correctly on Arch (Pino Toscano).
virt-inspector has new options --no-applications and --no-icon to
prevent the list of applications and icon from being included in the
XML output (Pino Toscano).
New virt-sysprep --network option has been added, allowing you to
actually use the --install etc options which were present in virt-
sysprep before but did not usually work. Note that the network is
still disabled by default.
virt-sysprep "fs-uuids" operation no longer fails on btrfs guests
(Maxim Perevedentsev).
virt-dib can output Docker images (Pino Toscano).
virt-dib has a new --drive-format option to allow the user to specify
the format of the helper drive (Pino Toscano).
All OCaml virt tools now have a --colors/--colours option which enables
coloured output (using ANSI escape sequences) even if the output is not
a tty. The default is to check if the output is a tty and disable
coloured output if not. This allows coloured output to be consumed by
other tools.
Language bindings
PHP test coverage has been enhanced (Pino Toscano).
PHP 7 is now supported (Pino Toscano).
Python bindings are now compliant with PEP 8 (Pino Toscano).
A Python pip package is available in
http://libguestfs.org/download/python/
The Ruby bindings now print the full exception if one is thrown by the
event callback. Note this is still incorrect behaviour as event
callbacks should not throw exceptions, but it aids debugging.
All OCaml libraries and programs are now compiled with -safe-string, if
supported by the OCaml compiler.
Inspection
Alpine Linux using busybox can now be inspected. Also the APK package
manager is supported in virt-customize (Pino Toscano).
We now handle inspection of Mageia 4 (Pino Toscano).
Void Linux and the Void Linux xbps package manager are fully supported
(Pino Toscano).
Parsing of CoreOS version information has been enhanced (Pino Toscano).
It is now possible to get an icon from ALT Linux (Pino Toscano).
PLD Linux versions < 3 are now recognized (Pino Toscano).
Windows drive letters are now returned for guests using GPT partitions
(Dawid Zamirski).
We can now correctly inspect Unix guests that do not have an /etc/fstab
file (Pino Toscano).
Added another source for the Ubuntu icon which doesn't rely on GNOME
having been installed in the guest.
We can now get an icon for Windows 7 64 bit guests.
Libosinfo integration was rewritten to deal with the new database
format used by osinfo (Pino Toscano).
Documentation
New manual page guestfs-building(1) describes how to build libguestfs
from source.
The man pages, tools and tool --help output is now automatically
checked to ensure that all tool options are properly documented, that
warning sections are included where necessary, and that every page has
a description section.
The guestfs-testing(1) man page has been refreshed and based on a newer
libguestfs.
Architectures and platforms
virt-customize now works on POWER7 and POWER8 platforms, both big
endian and little endian (Xianghua Chen and Hu Zhang).
Security
See also guestfs-security(1).
CVE-2015-8869
https://bugzilla.redhat.com/CVE-2015-8869
This vulnerability in OCaml might affect virt tools written in the
OCaml programming language. It affects only 64 bit platforms. Because
this bug affects code generation it is difficult to predict which
precise software could be affected, and therefore our recommendation is
that you recompile libguestfs using a version of the OCaml compiler
where this bug has been fixed (or ask your Linux distro to do the
same).
virt-customize ownership of .ssh, .ssh/authorized_keys
https://bugzilla.redhat.com/1337561
Previously when virt-customize injected an SSH key into a guest, when
it created the ~/.ssh and ~/.ssh/authorized_keys directory and file (in
case they were missing) it created them with owner and group
"root.root". This has been fixed so the correct user is used. This is
not thought to have been exploitable.
Windows "%systemroot%"
The inspection code has been made more robust against guests which
might use very long "%systemroot%" (derived from the guest-controlled
Windows Registry). This is not thought to have been exploitable.
Virtio-rng is now available in the appliance
virtio-rng (the virtual Random Number Generator device) is now passed
to the appliance, which should improve the quality random numbers
generated for GUIDs and cryptographic key generation.
API
New APIs
"btrfs_filesystem_show"
List all devices where a btrfs filesystem is spanned (Pino
Toscano).
"download_blocks"
"download_inode"
"filesystem_walk"
Download filesystem data blocks from a given partition. Download
arbitrary files by inode number. Retrieve all files from a
filesystem including deleted files.
Note these require optional dependency The Sleuth Kit. (Matteo
Cafasso)
"get_sockdir"
Read the path where temporary sockets are stored (Pino Toscano).
"mountable_device"
"mountable_subvolume"
Split a Mountable into device name and subvolume (Cédric
Bosdonnat).
"ntfscat_i"
Download NTFS file by inode number (Matteo Cafasso).
"part_expand_gpt"
Allow in-place expanding of GPT partitions by moving the second
(backup) partition table to the end of the disk (Maxim
Perevedentsev).
"part_get_disk_guid"
"part_set_disk_guid"
"part_set_disk_guid_random"
Get and set the GPT disk GUID, or set it to a fresh random value
(Maxim Perevedentsev).
"selinux_relabel"
SELinux-relabel part or all of the guest filesystem.
Other API changes
"guestfs_set_selinux", "guestfs_get_selinux", "guestfs_setcon",
"guestfs_getcon" and "guestfs_llz" have been deprecated. Use the new
API "guestfs_selinux_relabel" to relabel filesystems. Use
"guestfs_lgetxattrs" to list the "security.selinux" extended attributes
of existing files.
"guestfs_vfs_minimum_size" can now be used on dirty filesystems (Maxim
Perevedentsev).
"guestfs_ll" now works on paths which contain absolute symlinks (Pino
Toscano).
"guestfs_glob_expand" now has an optional "directoryslash" boolean
parameter which controls whether trailing slashes are returned for
directory names (Pino Toscano).
"guestfs_lvs" will no longer return LVs which have the "activationskip"
flag set. The reason is that such LVs have no "/dev/VG/LV" device node
and so code which read the list of LVs and then probed the devices
themselves would immediately fail. You can use "guestfs_lvs_full" if
you want to read all LVs. (Pino Toscano).
"guestfs_list_disk_labels" now no longer fails if no disks with labels
were added. Instead it now returns an empty list (Pino Toscano).
"guestfs_is_lv" no longer fails if passed a btrfs subvolume, it returns
false instead (Maxim Perevedentsev).
Build changes
qemu ≥ 1.3.0 is required.
yajl (a JSON parsing library) is required to build libguestfs.
You can now build with GCC 6.
"make check-valgrind" now has substantially better coverage.
"make check-slow" now works again.
Use "make -C appliance clean-supermin-appliance" to clean the supermin
appliance (it will be rebuilt on next "make").
There are a variety of new rules for running virt-p2v from the source
directory: "make -C p2v run-virt-p2v-directly" | "run-virt-p2v-in-a-vm"
| "run-virt-p2v-non-gui-conversion". These are documented further in
guestfs-hacking(1).
virt-p2v may be built using either Gtk 2 or Gtk 3. To force a
particular version of Gtk to be used, "./configure --with-gtk=2|3"
The "./configure" options are now mostly documented in
guestfs-building(1).
Internals
In git, versions are now tagged with "v1.XX.YY" (previously they were
tagged with "1.XX.YY"). Using the "v-" prefix is more common in git
repositories.
When using the libvirt backend, we now wait for qemu to exit gracefully
instead of killing it after 15 seconds. This helps when writing to
slow devices (especially cheap USB keys).
Error messages from libvirt now include the "err->int1" field which
usually contains the "errno".
On ARM, all DTB (device tree) code has been removed. qemu creates the
right device tree on the fly, we do not need to specify one.
The C API tests now use larger test disks, allowing BTRFS to be tested
properly (Pino Toscano).
The tests should now work on a pure Python 3 host (Pino Toscano).
In C bindings, internal functions are now (mostly) consistently named
"guestfs_int_*" whereas previously there was no consistent scheme.
The old "safe_malloc" etc functions are now no longer exported by the
library, nor used in language bindings.
Setting TMPDIR to a path longer than ~ 100 characters will no longer
cause libguestfs to fail silently and randomly when creating Unix
domain sockets (Pino Toscano).
The "COMPILE_REGEXP" macro can now be used in the daemon.
When tracing, results containing structs are now printed in full (Pino
Toscano).
The Perl "Sys::Guestfs" module now no longer embeds an incrementing API
"version number". This module is now always at phony version "1.0".
To find the real version of libguestfs from Perl you must call
"$g->version".
All code is compiled with "-Wstack-usage=10000" and multiple changes
have been made to remove stack allocation of large strings and buffers.
The error(3) function is now used everywhere, replacing most previous
uses of perror(3) + exit(3), and fprintf(3) + exit.
In C code, "/**" comments are turned into documentation which is
automatically added to the guestfs-hacking(1) manual page.
A safe "getumask" function has been added. For recent Linux kernels
this uses the newly added "Umask" field in /proc/self/status. For
older Linux and other Unix, this uses a thread-safe technique involving
fork(2) (thanks: Josh Stone, Jiri Jaburek, Eric Blake).
Safe posix_fadvise(2) wrappers have been added, and more hints have
been added to the code which may make a minor difference to
performance.
A safe wrapper around waitpid(2) has been added which handles "INTR"
properly.
"podwrapper.pl" (used to generate the manual pages) now stops if any
POD error is found. A new script called "podcheck.pl" does cross-
checking of --help output, tool options and manual pages.
All version numbers in the library (eg. versions of qemu, versions of
libvirt, versions of guest operating systems) are unified in a single
file src/version.c (Pino Toscano).
On Windows guests, virt-customize will use the vendor-neutral path
"C:\Program Files\Guestfs\Firstboot" to store firstboot scripts.
Previously it used "C:\Program Files\Red Hat\Firstboot". This change
should be invisible to the scripts themselves. (Cédric Bosdonnat)
On Linux guests, the firstboot services generated by virt-builder
--firstboot etc have been renamed to "guestfs-firstboot" (Pino
Toscano).
There is now a common "debug" function used by all OCaml tools,
replacing previous code which did "if verbose () then printf ...".
virt-p2v copies files it needs over to the virt-v2v conversion server
using scp(1), instead of trying to send them via the shell session.
This should improve reliability and should be a completely transparent
to end users.
All code in mllib is now built into a single "mllib.cma" or
"mllib.cmxa" library. All code in customize is now built into a single
"customize.cma" or "customize.cmxa" library. This simplifies the build
of the OCaml tools.
lvmetad(8) is now used in the appliance when available (Pino Toscano).
"Silent rules" are used for OCaml, Java, Erlang and POD. Use "make
V=1" to see the full command lines again (Pino Toscano).
Bugs fixed
https://bugzilla.redhat.com/1364347
virt-sparsify --in-place failed with UEFI system
https://bugzilla.redhat.com/1362357
run_command runs exit handlers when execve fails (e.g. due to
missing executable)
https://bugzilla.redhat.com/1362354
virt-dib failed to create image using DIB_YUM_REPO_CONF
https://bugzilla.redhat.com/1359652
Fail to inspect Windows ISO file
https://bugzilla.redhat.com/1358142
Some info will show when convert guest to libvirt by virt-v2v with
parameter --quiet
https://bugzilla.redhat.com/1354335
overlay of disk images does not specify the format of the backing
file
https://bugzilla.redhat.com/1352761
Virt-manager can't show OS icons of win7/win8/ubuntu guest.
https://bugzilla.redhat.com/1350363
Improve error info "remote server timeout unexpectedly waiting for
password prompt" when connect to a bogus server at p2v client
https://bugzilla.redhat.com/1348900
virt-p2v should update error prompt when 'Test connection' with a
non-existing user in conversion server
https://bugzilla.redhat.com/1345813
virt-sysprep --install always failed to install the packages
specified
https://bugzilla.redhat.com/1345809
virt-customize --truncate-recursive should give an error message
when specifying a no-existing path
https://bugzilla.redhat.com/1343423
[RFE]Should give a better description about 'curl error 22' when
failed using ssh identity http url at p2v client
https://bugzilla.redhat.com/1343414
Failed SSH to conversion server by ssh identity http url at p2v
client
https://bugzilla.redhat.com/1343375
[RFE] uninstall packages inside the VM
https://bugzilla.redhat.com/1342447
Ifconfig command is not supported on p2v client
https://bugzilla.redhat.com/1342398
Convert a guest from RHEL by virt-v2v but its origin info shows
RHEV at rhevm
https://bugzilla.redhat.com/1342337
Should remind a warning about disk image has a partition when using
virt-p2v-make-disk
https://bugzilla.redhat.com/1341984
virt-get-kernel prompts an 'invalid value' error when using
--format auto
https://bugzilla.redhat.com/1341564
virt-p2v spinner should be hidden when it stops spinning
https://bugzilla.redhat.com/1340809
Testing connection timeout when input regular user of conversion
server with checked "use sudo......"button
https://bugzilla.redhat.com/1340464
[RFE] Suggestion give user a reminder for "Cancel conversion"
button
https://bugzilla.redhat.com/1340407
Multiple network ports will not be aligned at p2v client
https://bugzilla.redhat.com/1338083
Update UEFI whitelist for official fedora packages
https://bugzilla.redhat.com/1337561
virt-customize --ssh-inject not applying correct file permission
https://bugzilla.redhat.com/1335671
extra quotes around UUID confuses findfs in RHEL (but not in
Fedora)
https://bugzilla.redhat.com/1332025
Inspection does not parse /etc/redhat-release containing "Derived
from Red Hat Enterprise Linux 7.1 (Source)"
https://bugzilla.redhat.com/1327488
RFE: Allow p2v kernel options without p2v.server to set defaults
https://bugzilla.redhat.com/1325825
virt-v2v should prevent using multiple '-b' and '-n' option appears
on the command line
https://bugzilla.redhat.com/1321620
libguestfs: error: could not parse integer in version number: 7"
https://bugzilla.redhat.com/1321338
[1.33.16] Compilation Error: Unbound value List.sort_uniq in v2v.ml
line 988, characters 10-24:
https://bugzilla.redhat.com/1317843
`virt-builder --update` fails with: "dnf -y --best upgrade: command
exited with an error"
https://bugzilla.redhat.com/1316479
v2v cmd cannot exit and "block I/O error in device 'appliance': No
space left on device (28)" is printed when specified "-v -x"
https://bugzilla.redhat.com/1316041
virt-rescue fails, but missing error message
https://bugzilla.redhat.com/1314244
RFE: virt-p2v log window should process colour escapes and
backspaces
https://bugzilla.redhat.com/1312254
virt-v2v -o libvirt doesn't preserve or use correct <graphics
type="vnc|spice">
https://bugzilla.redhat.com/1309706
error: internal error: Invalid floppy device name: hdb
https://bugzilla.redhat.com/1309619
Wrong warning info "use standard VGA" shows when converting windows
> 7 by virt-v2v
https://bugzilla.redhat.com/1309580
OS name of win8.1 x64 guest shows incorrect in rhevm3.6 general
info
https://bugzilla.redhat.com/1308769
virt-v2v does not copy additional disks to Glance
https://bugzilla.redhat.com/1306666
Failure when disk contains an LV with activationskip=y
https://bugzilla.redhat.com/1296606
virt-v2v doesn't remove VirtualBox additions correctly because of
file quoting
https://bugzilla.redhat.com/1293527
There should be a reminder to avoid user to edit a guest image by
multiple tools at the same time in guestfish man page
https://bugzilla.redhat.com/1293276
guestfish can not ll a symbolic link dir or edit a file in it
https://bugzilla.redhat.com/1278878
guestfish should be able to handle LVM thin layouts
https://bugzilla.redhat.com/1264835
ppc64le: virt-customize --install fail to detect the guest arch
https://bugzilla.redhat.com/1264332
Test that trimming in virt-v2v doesn't regress
https://bugzilla.redhat.com/1232192
Virt-v2v gives an error on a blank disk: part_get_parttype: unknown
signature, of the output: BYT;
https://bugzilla.redhat.com/1229386
virt-p2v in non-GUI mode doesn't show any conversion progress or
status
https://bugzilla.redhat.com/1227599
P2V invalid password prints unexpected end of file waiting for
command prompt.
https://bugzilla.redhat.com/1224795
On Ubuntu, virt-builder --install and --update cannot use the
network
https://bugzilla.redhat.com/1213324
virt-v2v: warning: unknown guest operating system: windows windows
6.3 when converting win8,win8.1,win2012,win2012R2,win10 to rhev
https://bugzilla.redhat.com/1203898
Support inspecting docker images without /etc/fstab
https://bugzilla.redhat.com/1186935
libguestfs cannot inspect recent Fedora / RHEL >= 7 when /usr is a
separate partition
https://bugzilla.redhat.com/1167916
P2V: invalid conversion server prints unexpected end of file
waiting for password prompt.
https://bugzilla.redhat.com/1152825
virt-rescue --selinux can not work well, when enable selinux in the
command line the value of 'getenforce' is still Disabled in virt-
rescue appliance
https://bugzilla.redhat.com/1150298
ARM 32 bit on Ubuntu: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
https://bugzilla.redhat.com/1089100
NetworkManager avc unlink denied for resolv.conf after using
--selinux-relabel
https://bugzilla.redhat.com/983969
RFE: virt-sysprep should be SELinux-aware
https://bugzilla.redhat.com/855058
RFE: virt-p2v: display more information about storage devices
https://bugzilla.redhat.com/554829
SELinux handling could be done better.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v
8 years, 3 months
[libvirt] [PATCH] docs: Distribute subsite.xsl
by Michal Privoznik
So, I've ran into very interesting problem lately. When doing the
following, I've encountered an error:
libvirt.git $ make dist && tar -xJf libvirt-2.2.0.tar.xz && \
cd libvirt-2.2.0 && ./configure && \
rm docs/formatdomain.html && make -C docs
make: Entering directory 'docs'
make: *** No rule to make target 'formatdomain.html', needed by 'web'. Stop.
make: Leaving directory 'docs'
I had no idea what was going on, so I've nailed down the commit
that "broke it" via running git-bisect. It was this one:
7659bd9221b9dd1cdf. But that shed no more light until I realized
that the commit might actually just exposed a problem we had. And
guess what - I've nailed it down. Of course we are not
distributing subsite.xsl that's why make prints error message.
Very misleading one I must say.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
docs/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/Makefile.am b/docs/Makefile.am
index 206ef3b..14aad83 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -152,7 +152,7 @@ schema_DATA = $(wildcard $(srcdir)/schemas/*.rng)
EXTRA_DIST= \
apibuild.py genaclperms.pl \
- site.xsl newapi.xsl news.xsl page.xsl \
+ site.xsl subsite.xsl newapi.xsl news.xsl page.xsl \
hacking1.xsl hacking2.xsl wrapstring.xsl \
$(dot_html) $(dot_html_in) $(gif) $(apihtml) $(apipng) \
$(devhelphtml) $(devhelppng) $(devhelpcss) $(devhelpxsl) \
--
2.8.4
8 years, 3 months