[libvirt] [PATCH 0/2] Xen: Add support for interface model='netfront'
by Jiri Denemark
Xen HVM guests with PV drivers end up with two network interfaces for
each configured interface. One of them being emulated by qemu and the
other one paravirtual. As this might not be desirable, the attached
patch provides a way for users to specify that only paravirtual network
interface should be presented to the guest.
The configuration was inspired by qemu/kvm driver, for which users can
specify model='virtio' to use paravirtual network interface.
The patch adds support for model='netfront' which results in
type=netfront instead of type=ioemu (or nothing for newer xen versions)
in guests native configuration. Xen's qemu ignores interfaces with
type != ioemu and only paravirtual network device will be seen in the
guest.
Four possible configuration scenarios follow:
- no model specified in domain's XML
- libvirt will behave like before this change; it will set
type=ioemu for HVM guests on xen host which is not newer than
XEND_CONFIG_MAX_VERS_NET_TYPE_IOEMU
- covered by existing tests
- PV guest, any model
- no functional change, model is passed as is (and ignored by the
hypervisor)
- covered by existing tests (e.g., *-net-e1000.*)
- HVM guest, model=netfront
- type is set to "netfront", model is not specified
- covered by new *-net-netfront.* tests
- HVM guest, model != netfront
- type is set to "ioemu", model is passed as is
- covered by new *-net-ioemu.* tests
The fourth scenario feels like a regression for xen newer than
XEND_CONFIG_MAX_VERS_NET_TYPE_IOEMU as users who had a model specified
in their guest's configuration won't see a paravirtual interface in
their guests any more. On the other hand, the reason for specifying a
model is most likely the fact that they want to use such model which
implies emulated interface. Users of older xen won't be affected at all
as their xen provides paravirtual interface regardless of the type used.
In previous version of this patch, I used "xenpv" instead of "netfront"
as it looked more like kvm/qemu's virtio. However, you can find several
tips how to force PV network interface for HVM guest by using
type="netfront" so I changed it to conform with those tips. It also
matches guest's driver name used for that device.
Jiri Denemark (2):
Support for interface model='netfront'
Tests for interface type/model configuration
src/xen/xend_internal.c | 32 +++++++++++----
src/xen/xm_internal.c | 38 +++++++++++++++--
tests/sexpr2xmldata/sexpr2xml-fv-net-ioemu.sexpr | 1 +
tests/sexpr2xmldata/sexpr2xml-fv-net-ioemu.xml | 42 +++++++++++++++++++
.../sexpr2xmldata/sexpr2xml-fv-net-netfront.sexpr | 1 +
tests/sexpr2xmldata/sexpr2xml-fv-net-netfront.xml | 42 +++++++++++++++++++
tests/sexpr2xmltest.c | 3 +
tests/xmconfigdata/test-fullvirt-net-ioemu.cfg | 25 +++++++++++
tests/xmconfigdata/test-fullvirt-net-ioemu.xml | 43 ++++++++++++++++++++
tests/xmconfigdata/test-fullvirt-net-netfront.cfg | 25 +++++++++++
tests/xmconfigdata/test-fullvirt-net-netfront.xml | 43 ++++++++++++++++++++
tests/xmconfigtest.c | 3 +
tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.sexpr | 1 +
tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.xml | 31 ++++++++++++++
.../xml2sexprdata/xml2sexpr-fv-net-netfront.sexpr | 1 +
tests/xml2sexprdata/xml2sexpr-fv-net-netfront.xml | 31 ++++++++++++++
tests/xml2sexprtest.c | 3 +
17 files changed, 352 insertions(+), 13 deletions(-)
create mode 100644 tests/sexpr2xmldata/sexpr2xml-fv-net-ioemu.sexpr
create mode 100644 tests/sexpr2xmldata/sexpr2xml-fv-net-ioemu.xml
create mode 100644 tests/sexpr2xmldata/sexpr2xml-fv-net-netfront.sexpr
create mode 100644 tests/sexpr2xmldata/sexpr2xml-fv-net-netfront.xml
create mode 100644 tests/xmconfigdata/test-fullvirt-net-ioemu.cfg
create mode 100644 tests/xmconfigdata/test-fullvirt-net-ioemu.xml
create mode 100644 tests/xmconfigdata/test-fullvirt-net-netfront.cfg
create mode 100644 tests/xmconfigdata/test-fullvirt-net-netfront.xml
create mode 100644 tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.sexpr
create mode 100644 tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.xml
create mode 100644 tests/xml2sexprdata/xml2sexpr-fv-net-netfront.sexpr
create mode 100644 tests/xml2sexprdata/xml2sexpr-fv-net-netfront.xml
15 years, 5 months
[libvirt] libvirtd crashes
by Shi Jin
Hi there,
My libvirtd built from the latest git code keeps on crashing on all machines.
I turned on debugging and this is the information I have in the log file before crashing:
14:31:50.828: debug : virEventUpdateHandleImpl:146 : Update handle w=110 e=12
14:31:50.828: debug : virEventInterruptLocked:662 : Interrupting
14:31:50.828: debug : qemuMonitorCommandWithHandler:271 : Receive command reply ret=-1 errno=104 0 bytes '(null)'
14:31:50.828: error : qemuMonitorCommandWithHandler:290 : cannot send monitor command 'info cpus': Connection reset by peer
14:31:50.828: error : qemuMonitorTextGetCPUInfo:436 : internal error cannot run monitor command to fetch CPU thread info
I am not sure if there is any other information needed to help identify the problem. My building options are:
./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var --without-xen --with-qemu --with-qemu-user=oneadmin --with-qemu-group=oneadmin --without-uml --without-vbox --without-openvz --without-lxc
Please help me here. I can accept the service failing queries from time to time since I have error handling written so that they can be re-tried. But a crashing libvirtd takes the whole thing down.
Thanks a lot.
Shi
--
Shi Jin, PhD
15 years, 5 months
[libvirt] ANNOUNCE: New releases virt-manager 0.8.1 and virtinst 0.500.1
by Cole Robinson
I'm happy to announce two new releases:
virt-manager 0.8.1: virt-manager is a desktop application for managing
KVM and Xen virtual machines via libvirt.
virtinst 0.500.1: virtinst is a collection of command line tools for
provisioning libvirt virtual machines, including virt-install and
virt-clone.
The releases can be downloaded from:
http://virt-manager.org/download.html
The direct download links are:
http://virt-manager.org/download/sources/virt-manager/virt-manager-0.8.1....
http://virt-manager.org/download/sources/virtinst/virtinst-0.500.1.tar.gz
The virt-manager release includes:
- VM Migration wizard, exposing various migration options
- Enumerate CDROM and bridge devices on remote connections
- Can once again list multiple graphs in the manager window (Jon Nordby)
- Support disabling dhcp (Michal Novotny), and specifying 'routed'
type for new virtual networks
- Support storage pool source enumeration for LVM, NFS, and SCSI
- Allow changing VM ACPI, APIC, clock offset, individual vcpu pinning,
and video model (vga, cirrus, etc.)
- Many improvements and bugfixes
The virtinst release includes:
- virt-install now attempts --os-variant detection by default. This can
be disabled with '--os-variant none' (distro detection currently
only works for URL installs)
- New --disk option 'format', for creating image disks formats such as
qcow2 or vmdk
- Many improvements and bugfixes
Thanks to everyone who has contributed to this release through testing,
bug reporting, submitting patches, and otherwise sending in feedback!
Thanks,
Cole
15 years, 5 months
[libvirt] both libvirt 0.7.4 and latest git crashing
by Nikola Ciprich
Hi,
few days ago, I've reported problem with libvirt getting stuck while saving kvm.
Today, I tried latest git and it seems the problem is solved which is great.
Unfortunately, there seems to be another problem (which I noticed even for 0.7.4 although
haven't reported yet) is that libvirtd sometimes crashes.
I'm not 100% sure which action causes it to crash as it's being executed
by cluster resource manager, but the backtrace might help those familiar
with it's internals. (I think it's domain start)
(gdb) bt
#0 0x00007f4f46d03cd0 in pthread_mutex_unlock () from /lib64/libpthread.so.0
#1 0x000000000042da91 in qemuDomainObjExitMonitor (obj=0x980a80) at qemu/qemu_driver.c:287
#2 0x000000000043ca84 in qemudDomainGetInfo (dom=0x978d50, info=0x42690de0) at qemu/qemu_driver.c:3294
#3 0x00007f4f47ddf3fb in virDomainGetInfo (domain=0x978d50, info=0x42690de0) at libvirt.c:2786
#4 0x000000000041d79e in remoteDispatchDomainGetInfo (server=<value optimized out>, client=<value optimized out>, conn=0x961840,
hdr=<value optimized out>, rerr=0x42690e70, args=<value optimized out>, ret=0x42690f50) at remote.c:1076
#5 0x000000000041f35c in remoteDispatchClientCall (server=0x95b780, client=0x97e310, msg=0x980b00) at dispatch.c:506
#6 0x000000000041f712 in remoteDispatchClientRequest (server=0x95b780, client=0x97e310, msg=0x980b00) at dispatch.c:388
#7 0x00000000004147e2 in qemudWorker (data=<value optimized out>) at libvirtd.c:1518
#8 0x00007f4f46d004a7 in start_thread () from /lib64/libpthread.so.0
#9 0x00007f4f46a76c2d in clone () from /lib64/libc.so.6
Could anyone please have a look at it?
thanks a lot in advance
nik
--
-------------------------------------
Nikola CIPRICH
LinuxBox.cz, s.r.o.
28. rijna 168, 709 01 Ostrava
tel.: +420 596 603 142
fax: +420 596 621 273
mobil: +420 777 093 799
www.linuxbox.cz
mobil servis: +420 737 238 656
email servis: servis(a)linuxbox.cz
-------------------------------------
15 years, 5 months
[libvirt] cannot read libvirt.org website...
by Matthew Woehlke
...because of this (in http://libvirt.org/generic.css):
body {
margin: 0em;
padding: 0px;
color: rgb(0,0,0);
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 80%;
// font-size: 83%;
}
Black text on unspecified background is not legible on my setup. A
background color *must* be specified when a foreground color is
specified. Please fix this.
(Apologies if this is not the right spot, but alas there is no webmaster
AT libvirt.org, and I did not find anything obvious on who is the
webmaster. If I should send this elsewhere, please let me know where.)
--
Matthew
Please do not quote my e-mail address unobfuscated in message bodies.
--
Obscurity: +5
15 years, 5 months
[libvirt] Move esxVMX_IndexToDiskName to util.c
by Matthias Bolte
I needed the inverse function to virDiskNameToIndex() for the ESX
driver and added it to esx_vmx.c. The pending VirtualBox 3.1 patch
needs disk index to disk name mapping too. So I want to move
esxVMX_IndexToDiskName() to util.c.
esxVMX_IndexToDiskName() handles indices up to 701. This limit comes
from a gap in the disk name to disk index mapping of
virDiskNameToIndex():
sdzy -> 700
sdzz -> 701
sdaaa -> 728
sdaab -> 729
This line in virDiskNameToIndex() causes this gap:
idx = (idx + i) * 26;
It can be fixed by altering this line to:
idx = (idx + (i < 1 ? 0 : 1)) * 26;
But this change breaks compatibility for indices > 701.
So, I made two patches for either option and ask you for comments.
Matthias
15 years, 5 months
[libvirt] About libvirt API Support event notification mechanism problem
by ajia
Dear Daniel,
Recently, I am writing test plan about libvirt asynchronous event
mechanism,
refering to the following bugs from the bugzilla:
spice/vnc: https://bugzilla.redhat.com/show_bug.cgi?id=515268
disk error: https://bugzilla.redhat.com/show_bug.cgi?id=515270
I know libvirt can communicate with qemu monitor by QMP at present, can
I use libvirt API to test it now?libvirt-0.7.4-1is ok?
In addition,In qemu monitor with rhel6(2.6.31-31.el6.x86_64),"notify"
command
is nonexistent (Fedora12 is existent),if current qemu can't support
event notification
mechanism in rhel6,from libvirt point of view,I don't clear libvirt how
to get asyns
event notification?so I don't know how to test it.and I see qemu monitor
protocol
being patched,I am not sure current QMP status. I would be most
grateful for any
response . thank you very much.
Best Regards,
Alex Jia
15 years, 5 months
[libvirt] [PATCH] Fix some locking issues
by Matthias Bolte
* src/conf/domain_conf.c: don't call virDomainObjUnlock twice
* src/qemu/qemu_driver.c: relock driver lock if an error occurs in
qemuDomainObjBeginJobWithDriver, enter/exit monitor with driver
in qemudDomainSave
---
src/conf/domain_conf.c | 1 -
src/qemu/qemu_driver.c | 9 +++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index e9f79b7..21d509d 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -5230,7 +5230,6 @@ virDomainObjIsDuplicate(virDomainObjListPtr doms,
}
dupVM = 1;
- virDomainObjUnlock(vm);
} else {
/* UUID does not match, but if a name matches, refuse it */
vm = virDomainFindByName(doms, def->name);
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index bf4557e..2a63de9 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -353,6 +353,7 @@ static int qemuDomainObjBeginJobWithDriver(struct qemud_driver *driver,
else
virReportSystemError(NULL, errno,
"%s", _("cannot acquire job mutex"));
+ qemuDriverLock(driver);
return -1;
}
}
@@ -3612,9 +3613,9 @@ static int qemudDomainSave(virDomainPtr dom,
if (header.compressed == QEMUD_SAVE_FORMAT_RAW) {
const char *args[] = { "cat", NULL };
qemuDomainObjPrivatePtr priv = vm->privateData;
- qemuDomainObjEnterMonitor(vm);
+ qemuDomainObjEnterMonitorWithDriver(driver, vm);
rc = qemuMonitorMigrateToCommand(priv->mon, 0, args, path);
- qemuDomainObjExitMonitor(vm);
+ qemuDomainObjExitMonitorWithDriver(driver, vm);
} else {
const char *prog = qemudSaveCompressionTypeToString(header.compressed);
qemuDomainObjPrivatePtr priv = vm->privateData;
@@ -3623,9 +3624,9 @@ static int qemudDomainSave(virDomainPtr dom,
"-c",
NULL
};
- qemuDomainObjEnterMonitor(vm);
+ qemuDomainObjEnterMonitorWithDriver(driver, vm);
rc = qemuMonitorMigrateToCommand(priv->mon, 0, args, path);
- qemuDomainObjExitMonitor(vm);
+ qemuDomainObjExitMonitorWithDriver(driver, vm);
}
if (rc < 0)
--
1.6.0.4
15 years, 5 months
Re: [libvirt] [PATCH v2] Disk- and Controller Hotplug
by Wolfgang Mauerer
Hi,
Some time ago, Daniel P. Berrange wrote:
> On Tue, Nov 24, 2009 at 02:15:58PM +0100, Wolfgang Mauerer wrote:
>> Daniel P. Berrange wrote:
>>> On Mon, Nov 23, 2009 at 02:15:06PM +0100, Wolfgang Mauerer wrote:
>>>> Daniel P. Berrange wrote:
>>>>> Wolfgang Mauerer wrote:
>> okay, to avoid flooding the mailing list with nearly identical
>> patches, I've put the rebased versions into a repository at
>> git://git.kiszka.org/libvirt.git queue
>
> I've been taking a closer look at this, and I think the final state
> of patch series as a whole looks good. The minor issue is that the
> intermediate patches don't compile, since they rely on compile fixes
> at the end of the series. Rather than ask you to re-format the
> patches yet again, I'm going to just merge the patches into a smaller
> set myself.
yes, I've sacrificed individual compilability when I did the forward
porting because I the amount of time I can dedicate to this right
now is a bit restricted for various reasons. Thanks for doing the
missing cleanups!
> I've got just one question I'd like to understand before doing this.
> On the <disk> element's new <controller> element, you are allowing
> two mutually exclusive ways of specifying the controller
>
> <disk> ... <controller name="<identifier>" bus="<number>"
> unit="<number>"/> </disk>
>
> and
>
> <disk> ... <controller pci_addr="<addr>" bus="<number>"
> unit="<number>"/> </disk>
>
> I think it is going to cause unneccessary pain for applications to
> have to cope with two different ways of specifying the same
> relationship. So my intention is to remove the 'pci_addr' variant,
> since that information can easily be got directly from the separate
> top level <controller> device itself
Getting rid of pci_addr is perfectly okay. I've kept it in the current
series for setups that don't provide <controller>s, but it's supposed
to be eliminated by design. Just go ahead if you want to do this
it already now ;-)
> On a side note, once we've applied this initial series, I think we'll
> also need to be automatically adding a <controller> element in all
> guest domains which have IDE or SCSI controllers present by default.
> This is going to also force us to hook into QEMU's 'info pci' monitor
> command to figure out their PCI address. This is long overdue though
> and needed for NIC & Disk devices added at startup too, so this is
> good motivation :-)
agreed. I can try to address this when I bring back hot-removal.
Best regards,
Wolfgang
--
Siemens AG, Corporate Technology CT T DE IT 1
Corporate Competence Centre Embedded Linux
15 years, 5 months