[libvirt] [PATCH 6/7] Re-write virsh console to use streams

Daniel P. Berrange berrange at redhat.com
Fri Aug 20 09:10:47 UTC 2010


On Thu, Aug 19, 2010 at 03:09:45PM -0600, Eric Blake wrote:
> On 08/17/2010 11:02 AM, Daniel P. Berrange wrote:
> > This re-writes the 'virsh console' command so that it uses
> > the new streams API. This lets it run remotely and/or as a
> > non-root user. This requires that virsh be linked against
> > the simple event loop from libvirtd in daemon/event.c
> > As an added bonus, it can now connect to any console device,
> > not just the first one.
> > 
> > * tools/Makefile.am: Link to event.c
> > * tools/console.c, tools/console.h: Rewrite to use the
> >   virDomainOpenConsole() APIs with streams
> > * tools/virsh.c: Support choosing the console name
> >   via --devname $NAME


> > +static void
> > +virConsoleEventOnStdout(int watch ATTRIBUTE_UNUSED,
> > +                        int fd,
> > +                        int events,
> > +                        void *opaque)
> > +{
> > +    virConsolePtr con = opaque;
> > +
> > +    if (events & VIR_EVENT_HANDLE_WRITABLE &&
> > +        con->streamToTerminal.offset) {
> > +        ssize_t done;
> > +        size_t avail;
> > +        done = write(fd,
> > +                     con->streamToTerminal.data,
> > +                     con->streamToTerminal.offset);
> 
> Do we want to use safewrite here?

All I/O in this is now done non-blocking, so don't actually want to
block on writing the entire buffer. The code expect to see partial
writes & will handle those in a suitable manner, going back to sleep
in the event loop

Regards,
Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list