On 01/23/2012 07:48 AM, Michal Privoznik wrote: > There is now a standard QEMU guest agent that can be installed > and given a virtio serial channel > > <channel type='unix'> > <source mode='bind' path='/var/lib/libvirt/qemu/f16x86_64.agent'/> > <target type='virtio' name='org.qemu.guest_agent.0'/> > </channel> You also need to update docs/formatdomain.html.in to include this specific example. May I propose that you squash in this: diff --git i/docs/formatdomain.html.in w/docs/formatdomain.html.in index de9b480..6667bed 100644 --- i/docs/formatdomain.html.in +++ w/docs/formatdomain.html.in @@ -3017,6 +3017,10 @@ qemu-kvm -net nic,model=? /dev/null <channel type='pty'> <target type='virtio' name='arbitrary.virtio.serial.port.name'/> </channel> + <channel type='unix'> + <source mode='bind' path='/var/lib/libvirt/qemu/f16x86_64.agent'/> + <target type='virtio' name='org.qemu.guest_agent.0'/> + </channel> <channel type='spicevmc'> <target type='virtio' name='com.redhat.spice.0'/> </channel> @@ -3045,7 +3049,11 @@ qemu-kvm -net nic,model=? /dev/null optional element <code>address</code> can tie the channel to a particular <code>type='virtio-serial'</code> controller, <a href="#elementsAddress">documented above</a>. - <span class="since">Since 0.7.7</span></dd> + With qemu, if <code>name</code> is "org.qemu.guest_agent.0", + then libvirt can interact with a guest agent installed in the + guest, for actions such as guest shutdown or file system quiescing. + <span class="since">Since 0.7.7, guest agent interaction + since 0.9.10</span></dd> <dt><code>spicevmc</code></dt> <dd>Paravirtualized SPICE channel. The domain must also have a I think the RNG already covers the addition, though, so we are good there, and that means that we can get by without any tests/ additions (we already have tests for virtio <channel> parsing), although it wouldn't hurt if you wanted to add some tests. > +struct _qemuAgent { > + virMutex lock; /* also used to protect fd */ > + virCond notify; > + > + int refs; > + > + int fd; > + int watch; > + > + bool connectPending; > + > + virDomainObjPtr vm; > + > + qemuAgentCallbacksPtr cb; > + > + /* If there's a command being processed this will be > + * non-NULL */ > + qemuAgentMessagePtr msg; > + > + /* Buffer incoming data ready for Text/QMP monitor > + * code to process & find message boundaries */ s,Text/QMP,Agent, > + switch (config->type) { > + case VIR_DOMAIN_CHR_TYPE_UNIX: > + mon->fd = qemuAgentOpenUnix(config->data.nix.path, vm->pid, > + &mon->connectPending); > + break; > + > + case VIR_DOMAIN_CHR_TYPE_PTY: > + mon->fd = qemuAgentOpenPty(config->data.file.path); > + break; Do we really want to support <channel type='pty'> for agent interaction, or just mandate that the guest agent must use <channel type='unix'>? I guess we support both for the monitor as well, in case we ever use qemu-attach to convert a running guest that used a pty monitor into a libvirt-managed guest. ACK with above fixes included. -- Eric Blake eblake@xxxxxxxxxx +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list