On Wed, Dec 16, 2015 at 07:13:08PM +0100, Paolo Bonzini wrote:
> 
> 
> On 16/12/2015 18:56, Daniel P. Berrange wrote:
> > Introduce a new QEMU chardev backend called "overlay" which
> > allows you to splice together a pair of chardev backends into
> > one combined backend. The master backend permits full input/output
> > but the slave backend is output only.
> > 
> > The primary use case for this is to allow arbitrary backends to
> > have their data logged to a file, eg a 'file' backend would be
> > setup as the slave.
> > 
> >  $ qemu-system-x86_64 \
> >      -chardev 
> > socket,host=localhost,port=9000,server=on,nowait,id=char0master \
> >      -chardev file,path=/some/log/file.log,id=char0slave \
> >      -chardev overlay,id=char0,master=char0master,slave=char0slave  \
> >      -device isa-serial,chardev=char0 \
> >      ...other args...
> > ---
> > 
> > This idea was suggsted in
> > 
> >   https://lists.gnu.org/archive/html/qemu-devel/2015-12/msg01256.html
> > 
> > this patch is a very quick proof of concept impl to illustrate the
> > idea.
> 
> Hmm, I was a fan of the "do it outside QEMU" idea... It would also fix
> the issue you have with qemu_chr_fe_write_all...

I did more work on the "do it outside QEMU" idea in libvirt, but it
quickly became apparent that I'd basically end up re-implementing
all the QEMU chardev backends in libvirt, which seems sub-optimal
to me, when all I really want is a logfile added :-(

At the same time I'm also not a huge fan of this overlay backend
now that I've thought about this overnight. Aside from the issue
mentioned in the code, the other downside of this proposed patch
is that it makes life significantly more complicated for libvirt,
as when configuring QEMU we now have to create 3 chardevs instead
of just one. THis is quite alot of extra pain just for the goal
of supporting. I think this also opens a can of worms, because
I realized this allows us to stack up chardevs arbitrarily deep
by creating an overlay on an overlay on an overlay on an overlay....
which will probably come back to bite us later.

So I've sent another alternative, which simply directly adds a
"logfile" parameter to the "socket" backend, which is directly
addressing the core need that OpenStack has here (they want to
have TCP / UNIX socket for interactive console + a logfile to
capture all output on the same serial port concurrently).

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 :|

Reply via email to