[libvirt] How do I import an old VM image to a new Install
by Michael N. Moran
First, I am a casual VM user. I have been using
Fedora Core 7 on my Dell laptop for a couple of
years with a single QEMU/KVM guest running Windoze XP.
I recently installed Fedora 12 on a new hard disk
and would like to use my old Windows VM image
on the new install.
Is there an easy way to do this?
I tried copying the image itself (WindozeXpDisk.raw)
to the new install and then (naively) looked for an
import on the Virtual Machine Manager GUI. The closest
that I found was the File->Restore saved machine.
I tried that on my WindozeXpDisk.raw image and it
failed as follows:
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/manager.py",
line 461, in restore_saved_callback
newconn.restore(file_to_load)
File "/usr/share/virt-manager/virtManager/connection.py",
line 649, in restore
self.vmm.restore(frm)
File "/usr/lib64/python2.6/site-packages/libvirt.py",
line 1420, in restore
if ret == -1: raise libvirtError ('virDomainRestore()
failed', conn=self)
libvirtError: operation failed: image magic is incorrect
I *can* mount the image using kpartx et. al like this;
sudo kpartx -av /var/virt/WindozeXpDisk.raw
add map loop1p1 (253:2): 0 31101777 linear /dev/loop1 63
sudo mount -t ntfs /dev/mapper/loop0p1 ./mnt
Any clues would be helpful.
thank you,
mike
15 years, 1 month
[libvirt] crash in libvirtd when assigning PCI device (storage controller)
by Terje Marthinussen
Compiled libvirt and friends from todays sources on ubuntu 9.10. Was playing around with vt-d and while my MB works fine with ESXi 4, I got some permission issues when I tried the KVM and virt-manager included from ubuntu so I just gambled and compiled everything from latest sources.
Things seems to work fine in a normal use case, but if I a PCI device such as a storage controller, libvirtd will get a sigsev.
I got the onboard Intel Sata, a PCI Sil Sata card as well as an Areca Raid controller in this machine. I have not tried the Intel Sata device as I am booting from that, but both the other devices causes sigsev.
I am sure assigned an intel network card a bit earlier and it actually worked (well, the VM started to boot at least and entered win7 installation without libvirtd crashing), but when I tested that again now, seems like the ethernet card causes the same problem.
It is 6AM so will not do a serious attempt at debugging this, just wanted to check if anyone had an idea before I spent more time potentially debugging stuff that is know to not work.
>From dmesg:
[ 986.341633] device vnet0 entered promiscuous mode
[ 986.342897] virbr0: topology change detected, propagating
[ 986.342902] virbr0: port 1(vnet0) entering forwarding state
[ 986.380733] pci-stub 0000:09:01.0: enabling device (0000 -> 0003)
[ 986.380786] pci-stub 0000:09:01.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[ 986.422128] pci-stub 0000:09:01.0: restoring config space at offset 0x9 (was 0x0, writing 0xe3c04000)
[ 986.422141] pci-stub 0000:09:01.0: restoring config space at offset 0x8 (was 0x1, writing 0x1041)
[ 986.422152] pci-stub 0000:09:01.0: restoring config space at offset 0x7 (was 0x1, writing 0x1061)
[ 986.422163] pci-stub 0000:09:01.0: restoring config space at offset 0x6 (was 0x1, writing 0x1051)
[ 986.422174] pci-stub 0000:09:01.0: restoring config space at offset 0x5 (was 0x1, writing 0x1065)
[ 986.422185] pci-stub 0000:09:01.0: restoring config space at offset 0x4 (was 0x1, writing 0x1059)
[ 986.422199] pci-stub 0000:09:01.0: restoring config space at offset 0x1 (was 0x2b00000, writing 0x2b00003)
[ 987.172975] assign device: host bdf = 9:1:0
[ 987.173054] deassign device: host bdf = 9:1:0
[ 987.206121] pci-stub 0000:09:01.0: restoring config space at offset 0x9 (was 0x0, writing 0xe3c04000)
[ 987.206134] pci-stub 0000:09:01.0: restoring config space at offset 0x8 (was 0x1, writing 0x1041)
[ 987.206146] pci-stub 0000:09:01.0: restoring config space at offset 0x7 (was 0x1, writing 0x1061)
[ 987.206157] pci-stub 0000:09:01.0: restoring config space at offset 0x6 (was 0x1, writing 0x1051)
[ 987.206167] pci-stub 0000:09:01.0: restoring config space at offset 0x5 (was 0x1, writing 0x1065)
[ 987.206178] pci-stub 0000:09:01.0: restoring config space at offset 0x4 (was 0x1, writing 0x1059)
[ 987.206192] pci-stub 0000:09:01.0: restoring config space at offset 0x1 (was 0x2b00000, writing 0x2b00003)
[ 987.206225] pci-stub 0000:09:01.0: PCI INT A disabled
[ 987.286791] libvirtd[3193]: segfault at 10 ip 00007f921b4546b4 sp 00007f9216e165e0 error 4 in libpthread-2.10.1.so[7f921b44a000+17000]
>From GDB
06:45:32.434: error : qemuMonitorCommandWithHandler:290 : cannot send monitor command 'info cpus': Connection reset by peer
06:45:32.434: error : qemuMonitorTextGetCPUInfo:436 : internal error cannot run monitor command to fetch CPU thread info
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f485bfff910 (LWP 18120)]
0x00007f48657fb6b4 in pthread_mutex_unlock () from /lib/libpthread.so.0
(gdb) bt
#0 0x00007f48657fb6b4 in pthread_mutex_unlock () from /lib/libpthread.so.0
#1 0x0000000000431101 in qemuDomainObjExitMonitorWithDriver (driver=0x11f0110, obj=0x12114f0) at qemu/qemu_driver.c:318
#2 0x000000000043f436 in qemudStartVMDaemon (conn=<value optimized out>, driver=0x11f0110, vm=0x12114f0,
migrateFrom=<value optimized out>, stdin_fd=<value optimized out>) at qemu/qemu_driver.c:2320
#3 0x00000000004407c4 in qemudDomainStart (dom=0x11f0330) at qemu/qemu_driver.c:4370
#4 0x00007f4865a621e7 in virDomainCreate (domain=0x11f0330) at libvirt.c:4509
#5 0x0000000000420d68 in remoteDispatchDomainCreate (server=<value optimized out>, client=<value optimized out>, conn=0x1219da0,
hdr=<value optimized out>, rerr=0x7f485bffedf0, args=<value optimized out>, ret=0x7f485bffeed0) at remote.c:853
#6 0x00000000004228e1 in remoteDispatchClientCall (server=<value optimized out>, client=0x7f485c000d30, msg=0x7f485c080f00)
at dispatch.c:506
#7 0x0000000000422c93 in remoteDispatchClientRequest (server=0x11e2790, client=0x7f485c000d30, msg=0x7f485c080f00) at dispatch.c:388
#8 0x000000000041625c in qemudWorker (data=<value optimized out>) at libvirtd.c:1518
#9 0x00007f48657f7a04 in start_thread () from /lib/libpthread.so.0
#10 0x00007f48655617bd in clone () from /lib/libc.so.6
#11 0x0000000000000000 in ?? ()
(gdb) select 2
(gdb) info locals
argv = 0x0
tmp = <value optimized out>
progenv = 0x0
i = 1
ret = 1
sb = {st_dev = 64512, st_ino = 140307, st_nlink = 1, st_mode = 33261, st_uid = 0, st_gid = 0, __pad0 = 0, st_rdev = 0,
st_size = 2293664, st_blksize = 4096, st_blocks = 4480, st_atim = {tv_sec = 1258937087, tv_nsec = 967226499}, st_mtim = {
tv_sec = 1257180462, tv_nsec = 0}, st_ctim = {tv_sec = 1258886336, tv_nsec = 104908677}, __unused = {0, 0, 0}}
tapfds = 0x0
ntapfds = 1
qemuCmdFlags = 9436542
keepfd = {fds_bits = {262144, 0 <repeats 15 times>}}
emulator = <value optimized out>
child = 18145
pos = <value optimized out>
ebuf = "\220v\036\001\000\000\000\000\060|WeH\177\000\000(\000\000\000\060\000\000\000\000\354\377[H\177\000\000@\353\377[H\177\000\000`\351\377[H\177\000\000\377\377\377\377H\177\000\000\233\017\037\001\000\000\000\000\326\063G\000\000\000\000\000@\247~eH\177\000\000\200\307OeH\177\000\000\240\306OeH\177\000\000JST\000\071\000\000\000\300\352\377[H\177\000\000\342\000\000\000\000\000\000\000\342\000\000\000\000\000\000\000\273\340G\000\000\000\000\000\300\352\377[H\177\000\000K\000\000\000\000\000\000\000`\351\377[H\177\000\000@\354\377[H\177\000\000P\352\377[H\177\000\000\001\000\000\000\000\000\000\000\320\352\377[H\177\000\000$\000\000\000\000\000\000\000py\255eH\177\000\000@\354\377[H\177\000\000\060|WeH\177\000\000\001\200\255\373\000\000\000\000\260\351\377[H\177\000\000\220\354\377[H\177\000\000\240\352\377["...
pidfile = 0x0
logfile = 15
hookData = {conn = 0x1219da0, vm = 0x12114f0, driver = 0x11f0110}
__FUNCTION__ = "qemudStartVMDaemon"
__func__ = "qemudStartVMDaemon"
line 318 is
static void qemuDomainObjExitMonitorWithDriver(struct qemud_driver *driver, virDomainObjPtr obj)
{
qemuDomainObjPrivatePtr priv = obj->privateData;
qemuMonitorUnlock(priv->mon); <---- 318
qemuDriverLock(driver);
virDomainObjLock(obj);
}
Yep, not a very good attempt at debugging, but this is the first time I look at this code and I am overdue for Zzzzz :)
Regards,
Terje
_________________________________________________________________
Windows Live: Keep your friends up to date with what you do online.
http://www.microsoft.com/middleeast/windows/windowslive/see-it-in-action/...
15 years, 1 month
[libvirt] [PATCH] Add test for legacy <console ... tty=""> syntax
by Matthew Booth
* tests/qemuxml2argvtest.c: Test legacy syntax for QEMU argument generation
* tests/qemuxml2argvdata/qemuxml2argv-console-legacy.(xml|args): Add test data
---
.../qemuxml2argv-console-legacy.args | 1 +
.../qemuxml2argv-console-legacy.xml | 29 ++++++++++++++++++++
tests/qemuxml2argvtest.c | 1 +
3 files changed, 31 insertions(+), 0 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-console-legacy.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-console-legacy.xml
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-console-legacy.args b/tests/qemuxml2argvdata/qemuxml2argv-console-legacy.args
new file mode 100644
index 0000000..fd42462
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-console-legacy.args
@@ -0,0 +1 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial pty -parallel none -usb
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-console-legacy.xml b/tests/qemuxml2argvdata/qemuxml2argv-console-legacy.xml
new file mode 100644
index 0000000..68d86ba
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-console-legacy.xml
@@ -0,0 +1,29 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory>219200</memory>
+ <currentMemory>219200</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu</emulator>
+ <disk type='block' device='disk'>
+ <source dev='/dev/HostVG/QEMUGuest1'/>
+ <target dev='hda' bus='ide'/>
+ </disk>
+ <serial type='pty'>
+ <target port='0'/>
+ </serial>
+ <console type='pty' tty='/dev/pts/8'>
+ <source path='/dev/pts/8'/>
+ <target port='0'/>
+ </console>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index c948379..233b3ae 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -268,6 +268,7 @@ mymain(int argc, char **argv)
DO_TEST("serial-many", 0);
DO_TEST("parallel-tcp", 0);
DO_TEST("console-compat", 0);
+ DO_TEST("console-legacy", 0);
DO_TEST("channel-guestfwd", QEMUD_CMD_FLAG_CHARDEV);
--
1.6.5.2
15 years, 1 month
[libvirt] [PATCH] remove ebtables rules at qemud shutdown
by Gerhard Stenzel
This patch removes ebtables rules at qemud shutdown time
Signed-off-by: Gerhard Stenzel <gerhard.stenzel(a)de.ibm.com>
Index: libvirt/src/qemu/qemu_bridge_filter.c
===================================================================
--- libvirt.orig/src/qemu/qemu_bridge_filter.c
+++ libvirt/src/qemu/qemu_bridge_filter.c
@@ -48,6 +48,35 @@ networkAddEbtablesRules(struct qemud_dri
return 0;
}
+int
+networkRemoveEbtablesRules(struct qemud_driver *driver) {
+ int err;
+
+ /* Set forward policy to DROP */
+ if ((err = ebtablesRemoveForwardPolicyReject(driver->ebtables))) {
+ virReportSystemError(NULL, err,
+ _("failed to remove ebtables rule to set default policy to
drop on '%s'"),
+ __FILE__);
+ return err;
+ }
+
+ return 0;
+}
+
+int
+networkEnableAllFrames(struct qemud_driver *driver) {
+ int err;
+
+ /* add default rules */
+ if ((err = networkRemoveEbtablesRules(driver))) {
+ virReportSystemError(NULL, err,
+ _("cannot remove filter on bridge '%s'"),
+ __FILE__);
+ return err;
+ }
+ return 0;
+}
+
int
networkDisableAllFrames(struct qemud_driver *driver) {
Index: libvirt/src/util/ebtables.c
===================================================================
--- libvirt.orig/src/util/ebtables.c
+++ libvirt/src/util/ebtables.c
@@ -60,6 +60,7 @@ enum {
ADD = 0,
REMOVE,
CREATE,
+ DELETE,
POLICY,
INSERT
};
@@ -336,12 +337,28 @@ ebtablesForwardPolicyReject(ebtablesCont
INSERT,
"--insert", "FORWARD", "--jump",
ctx->forward_filter->chain, NULL);
- }
-
- return ebtablesAddRemoveRule(ctx->forward_filter,
+ return ebtablesAddRemoveRule(ctx->forward_filter,
POLICY,
"-P", ctx->forward_filter->chain,
"DROP",
NULL);
+ }
+ if (action == REMOVE) {
+ ebtablesAddRemoveRule(ctx->forward_filter,
+ POLICY,
+ "-P", ctx->forward_filter->chain,
"ACCEPT",
+ NULL);
+
+ ebtablesAddRemoveRule(ctx->forward_filter,
+ INSERT,
+ "--delete", "FORWARD", "--jump",
+ ctx->forward_filter->chain, NULL);
+
+ return ebtablesAddRemoveRule(ctx->forward_filter,
+ DELETE,
+ "--delete-chain",
ctx->forward_filter->chain, NULL,
+ NULL);
+ }
+
}
/*
Index: libvirt/src/libvirt_private.syms
===================================================================
--- libvirt.orig/src/libvirt_private.syms
+++ libvirt/src/libvirt_private.syms
@@ -179,6 +179,7 @@ virDomainEventQueueDispatch;
# ebtables.h
ebtablesAddForwardAllowIn;
ebtablesAddForwardPolicyReject;
+ebtablesRemoveForwardPolicyReject;
ebtablesContextNew;
ebtablesRemoveForwardAllowIn;
Index: libvirt/src/qemu/qemu_driver.c
===================================================================
--- libvirt.orig/src/qemu/qemu_driver.c
+++ libvirt/src/qemu/qemu_driver.c
@@ -1081,6 +1081,14 @@ qemudShutdown(void) {
virDomainObjListDeinit(&qemu_driver->domains);
+ if (qemu_driver->macFilter) {
+ if ((errno = networkEnableAllFrames(qemu_driver))) {
+ virReportSystemError(NULL, errno,
+ _("failed to add rule to allow all
frames in '%s'"),
+ __FILE__);
+ }
+ }
+
VIR_FREE(qemu_driver->securityDriverName);
VIR_FREE(qemu_driver->logDir);
VIR_FREE(qemu_driver->configDir);
--
Best regards,
Gerhard Stenzel,
-----------------------------------------------------------------------------------------------------------------------------------
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
15 years, 1 month
[libvirt] libvir: QEMU error : remoteDomainProcessEvent: unmarshalling msg
by ajia
Hi all,
I create successfully a vm, then opening one terminal to run example
event-python.py from libvirt-0.7.4
source code package with qemu:///system parameter.in another opening
terminal,running basic domain
operation, such as undefine/define/start/destroy.but original terminal
display information
"libvir: QEMU error : remoteDomainProcessEvent: unmarshalling msg" .
test environment details is
as following:
[root@localhost events-python]# uname -a
Linux localhost.localdomain 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7
21:25:57 EST 2009 i686 i686 i386 GNU/Linux
[root@localhost events-python]# lsmod|grep kvm
kvm_intel 39856 0
kvm 140260 1 kvm_intel
[root@localhost events-python]# rpm -qa|grep virt
virt-v2v-0.2.0-1.fc12.noarch
virtuoso-opensource-conductor-5.0.12-1.fc12.noarch
libvirt-python-0.7.1-15.fc12.i686
virtuoso-opensource-apps-5.0.12-1.fc12.i686
virtuoso-opensource-doc-5.0.12-1.fc12.noarch
virtuoso-opensource-5.0.12-1.fc12.i686
virt-manager-0.8.0-7.fc12.noarch
virtuoso-opensource-utils-5.0.12-1.fc12.i686
virt-ctrl-1.0.1-4.fc12.i686
virt-top-1.0.4-1.fc12.1.i686
virt-viewer-0.2.0-1.fc12.i686
virtaal-0.4.1-1.fc12.noarch
libvirt-client-0.7.1-15.fc12.i686
python-virtinst-0.500.0-5.fc12.noarch
virt-mem-0.3.1-9.fc12.i686
libvirt-0.7.1-15.fc12.i686
1. open one terminal and run event-test.py
[root@localhost events-python]# python event-test.py qemu:///system
Using uri:qemu:///system
libvir: QEMU error : remoteDomainProcessEvent: unmarshalling msg
libvir: Remote error : unknown program (received 77696e78, expected
20008086)
libvir: Remote error : unknown program (received 77696e78, expected
20008086)
libvir: Remote error : unknown program (received 77696e78, expected
20008086)
2.open another termial and run basic domain operation
[root@localhost ajia]# virsh list --all
Id Name State
----------------------------------
- winxp shut off
[root@localhost ajia]# virsh undefine winxp
Domain winxp has been undefined
[root@localhost ajia]# virsh define winxp.xml
Domain winxp defined from winxp.xml
[root@localhost ajia]# virsh start winxp
Domain winxp started
[root@localhost ajia]# virsh destroy winxp
Domain winxp destroyed
I am puzzled to domain event handler,and I don't clear if is libvirt
version different problem or I miss some stuff.
I would be most grateful for any response .
Best Regards,
Alex Jia
15 years, 1 month
[libvirt] [PATCH] fix xenDaemonListDefinedDomains
by Jim Fehlig
Commit 790f0b3057787bb64da8c46c111ff8d3eff7b2af causes contents of names
array to be freed even on success, resulting in no listing of defined
but inactive Xen domains. Patch below fixes it.
Regards,
Jim
15 years, 1 month
[libvirt] [PATCH 0/2] Add MAC filtering to qemu
by Gerhard Stenzel
The following series of patches is a prototype implementation of a ebtables based MAC address filter. I hope to have addressed all the previous comments.
At the moment, some defaults are set when libvirtd starts and when a domain is started or destroyed. The plan is to extend this filter capability to the API level and virsh command level. The plan is also to add more filtering features like VLAN filtering and QoS filtering.
Thanks, Gerhard
---
Gerhard Stenzel (2):
add MAC address based port filtering to qemu
add ebtables wrapper
configure.in | 3
po/POTFILES.in | 1
src/Makefile.am | 5
src/libvirt_private.syms | 7 +
src/qemu/qemu.conf | 2
src/qemu/qemu_bridge_filter.c | 108 ++++++++++
src/qemu/qemu_bridge_filter.h | 39 ++++
src/qemu/qemu_conf.c | 25 ++
src/qemu/qemu_conf.h | 4
src/qemu/qemu_driver.c | 16 +
src/util/ebtables.c | 441 +++++++++++++++++++++++++++++++++++++++++
src/util/ebtables.h | 65 ++++++
12 files changed, 715 insertions(+), 1 deletions(-)
create mode 100644 src/qemu/qemu_bridge_filter.c
create mode 100644 src/qemu/qemu_bridge_filter.h
create mode 100644 src/util/ebtables.c
create mode 100644 src/util/ebtables.h
--
Best regards,
Gerhard Stenzel,
-----------------------------------------------------------------------------------------------------------------------------------
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschäftsführung: Erich Baier
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
15 years, 1 month
[libvirt] virt-manager and messages in /var/log/messages
by Chandru
Apologies if this has been already discussed.
While using virt-manager to create a vm-guest we see the following errors being logged in /var/log/messages.
libvirtd: 22:40:57.675: error : Domain not found: no domain with matching name 'guest1'
libvirtd: 22:42:22.039: error : invalid storage volume pointer in no storage vol with matching path
libvirtd: 22:44:55.530: error : Domain not found: no domain with matching uuid
While these errors are indeed harmless and we are able to create and use a vm-guest, why log them as error messages. Could we convert them into informational messages. Though they could mean errors in other scenarios, but could we tweak or change them in a way that they could be logged in as informational messages and not as error messages. A end user would not know what to do with them.
Thanks,
Chandru
15 years, 1 month
[libvirt] [PATCH] fix html validation
by Dan Kenigsberg
---
docs/news.html.in | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/news.html.in b/docs/news.html.in
index d69348c..83f0461 100644
--- a/docs/news.html.in
+++ b/docs/news.html.in
@@ -21,11 +21,11 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
Fix typo in error message (Matthew Booth)
esx: Add documentation to the website (Matthias Bolte)
AppArmor updates of examples (Jamie Strandboge)
- Add documentation for <channel> domain element (Matthew Booth)
+ Add documentation for <channel> domain element (Matthew Booth)
Separate character device doc guest and host parts (Matthew Booth)
Add a Python example that lists active ESX domains (Matthias Bolte)
LXC fix wrong or out-of-date function descriptions (Ryota Ozaki)
- docs: <clock> property is 'offset', not 'sync' (Cole Robinson)
+ docs: <clock> property is 'offset', not 'sync' (Cole Robinson)
Update the documentation for virDomainMigrateToURI (Chris Lalancette)
fix virDomainMigrateToURI doc (Dan Kenigsberg)
</li>
@@ -118,7 +118,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
test: Add testDomainShutdownState helper (Cole Robinson)
Properly convert port numbers to/from network byte order (Matthew Booth)
phyp add create() and destroy() support (Eduardo Otubo)
- Support for <channel> in domain and QEmu backend (Matthew Booth)
+ Support for <channel> in domain and QEmu backend (Matthew Booth)
Detect availability of QEMU -chardev CLI option (Matthew Booth)
Allow character devices to have different target types (Matthew Booth)
LXC allow container to have ethN interfaces (Ryota Ozaki)
--
1.6.5.2
15 years, 1 month