[libvirt] [PATCH 7/7] kvmtool: Implementation for kvm tool driver

Daniel P. Berrange berrange at redhat.com
Tue Dec 6 14:55:38 UTC 2011


On Fri, Nov 11, 2011 at 07:57:06PM +0800, Osier Yang wrote:
> Basically, the drivers is implemented by using kvm tool binary
> currently, (see ./kvm help for more info).
> 
> Current implementation supports define/undefine, start/destroy/,
> suspend/resume, connect to guest console via "virsh console",
> and balloon memory with with "virsh setmem" (using ./kvm balloon
> command). Also as it supports cgroup controllers "cpuacct", and
> "memory", so some other commands like "schedinfo", "memtune" can
> also work. Some other commands such as "domid", "domname", "dumpxml"
> ,"autostart", etc. are supported, as the driver is designed
> as a "stateful" driver, those APIs just need to talk with libvirtd
> simply.
> 
> As Native Linux KVM Tool is designed for both non-root and root users,
> the driver is designed just like QEMU, supports two modes of the
> connection:
> 
>     kvmtool:///system
>     kvmtool+unix:///system
> 
>     kvmtool:///session
>     kvmtool+unix:///session
> 
> An example of the domain XML (all the XMLs supported currently are
> listed):
> 
> % virsh -c kvm:///system dumpxml kvm_test
> <domain type='kvmtool'>
>   <name>kvm_test</name>
>   <uuid>88bf38f1-b6ab-cfa6-ab53-4b4c0993d894</uuid>
>   <memory>524288</memory>
>   <currentMemory>524288</currentMemory>
>   <vcpu>1</vcpu>
>   <os>
>     <type arch='x86_64'>hvm</type>
>     <kernel>/boot/bzImage</kernel>
>     <boot dev='hd'/>
>   </os>
>   <clock offset='utc'/>
>   <on_poweroff>destroy</on_poweroff>
>   <on_reboot>restart</on_reboot>
>   <on_crash>restart</on_crash>
>   <devices>
>     <emulator>/usr/bin/kvmtool</emulator>
>     <disk type='file' device='disk'>
>       <source file='/var/lib/libvirt/images/linux-0.2.img'/>
>       <target dev='vda' bus='virtio'/>
>     </disk>
>     <filesystem type='mount' accessmode='passthrough'>
>       <source dir='/tmp'/>
>       <target dir='/mnt'/>
>     </filesystem>
>     <console type='pty'>
>       <target type='serial' port='0'/>
>     </console>
>     <memballoon model='virtio'/>
>   </devices>
> </domain>
> ---
>  cfg.mk                       |    1 +
>  daemon/Makefile.am           |    4 +
>  daemon/libvirtd.c            |    7 +
>  po/POTFILES.in               |    2 +
>  src/Makefile.am              |   36 +-
>  src/kvmtool/kvmtool_conf.c   |  130 ++
>  src/kvmtool/kvmtool_conf.h   |   66 +
>  src/kvmtool/kvmtool_driver.c | 3079 ++++++++++++++++++++++++++++++++++++++++++
>  src/kvmtool/kvmtool_driver.h |   29 +

My main suggestion here would be to split up the kvmtool_driver.c
file into 3 parts as we did with the QEMU driver.

  kvmtool_driver.c   -> Basic libvirt API glue
  kvmtool_command.c  -> ARGV generation
  kvmtool_process.c  -> KVMtool process start/stop/autostart/autodestroy

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list