[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH v2] Make LXC container startup/shutdown/I/O more robust



On Thu, Mar 10, 2011 at 13:46:13 +0000, Daniel P. Berrange wrote:
> On Wed, Mar 09, 2011 at 05:02:24PM +0100, Jiri Denemark wrote:
> > > @@ -447,7 +459,13 @@ static int lxcControllerMain(int monitor,
> > >                          ++numActive;
> > >                      }
> > >                  } else if (epollEvent.events & EPOLLHUP) {
> > > -                    VIR_DEBUG("EPOLLHUP from fd %d", epollEvent.data.fd);
> > > +                    if (lxcPidGone(container))
> > > +                        goto cleanup;
> > > +                    curFdOff = epollEvent.data.fd == appPty ? 0 : 1;
> > > +                    if (fdArray[curFdOff].active) {
> > > +                        fdArray[curFdOff].active = 0;
> > > +                        --numActive;
> > > +                    }
> > >                      continue;
> > 
> > Heh, thanks for the opportunity to learn about epoll. This might be a trivial
> > question but... what if we get EPOLLIN event immediately followed by EPOLLHUP
> > on the same fd? Do we end up leaving the data unread until another EPOLLIN
> > arrives? Although it shouldn't be a big deal since we will just read the data
> > from init after the console gets reopened by mingetty.
> 
> The previous branch in this 'if' will have handled the EPOLLIN event
> so we shouldn't delay data.

Ah, right, I misread the long if statement and somehow thought we are first
reading out all the event and only when there are none are we actually copying
data over.

Jirka


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]