[libvirt] Re: [Libvir] [PATCH] lxc: loop in tty forwarding process
Daniel Veillard
veillard at redhat.com
Wed May 7 12:25:58 UTC 2008
On Tue, May 06, 2008 at 12:51:08AM -0700, Dave Leskovec wrote:
> This patch changes the lxc tty forwarding process to use epoll instead of poll.
> This is done to avoid a cpu consuming loop when a user disconnects from the
> container console.
>
> During some testing, we found that when the slave end of a tty is closed, calls
> to poll() on the master end will return immediately with POLLHUP until the slave
> end is opened again. The result of this is that if you connect to the container
> console using virsh and then ctrl-] out of it, the container tty process will
> chew up the processor handling POLLHUP. This event can't be disabled regardless
> of what is set in the events field.
>
> This can be avoided by using epoll. When used in edge triggered mode, you see
> the initial EPOLLHUP but will not see another one until someone connects and
> then disconnects from the console again. This also drove some changes into how
> the regular input data is handled. Once an EPOLLIN is seen from an fd, another
> one will not be surfaced until all data has been read from the file (EAGAIN is
> returned by read).
Sounds fine in principle but i have a couple of questions with the patch
> +#include <stdbool.h>
err ... what is that ? looks like a linux specific header, do we really
need this ? epoll is linux specific I think but #include <sys/epoll.h>
should be sufficient no ?
[...]
>
> - close(vm->parentTty);
> + //close(vm->parentTty);
> close(vm->containerTtyFd);
if we really don't need this anymore just remove it, if you have doubts then
maybe this should be clarified. In any case let's stick to old style comments
/* ... */
Daniel
--
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard | virtualization library http://libvirt.org/
veillard at redhat.com | libxml GNOME XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/
More information about the libvir-list
mailing list