[libvirt] [PATCH 1/1] lxc: handle shutdown (and detect, but mis-handle reboot)

Serge Hallyn serge.hallyn at canonical.com
Thu Mar 1 15:11:52 UTC 2012


Quoting Daniel P. Berrange (berrange at redhat.com):
> On Mon, Feb 27, 2012 at 01:56:48PM -0600, Serge Hallyn wrote:
> > The -mm tree has Daniel Lezcano's patch changing the handling of
> > sys_reboot in a non-init pidns.  That means that, with that
> > support, (a) it is safe to grant CAP_SYS_BOOT to a container, and
> > (b) it's possible to distinguish between reboot and shutdown.
> > 
> > I've implemented partial support of this for libvirt in the patch
> > below.  If Daniel's patch is not in the running kernel, then
> > CAP_SYS_BOOT will be dropped for the container.  Otherwise, it will
> > be kept in.  When the container exits, if it was determined to
> > be a shutdown, the container will terminate.
> > 
> > However, I didn't know how to properly do the reboot part.
> > The patch below shows how to detect it (and sets the static bool
> > wantreboot to true in that case), but I didn't know quite what to
> > do with that.  It looks like the code flow between lxcControllerRun
> > and lxcControllerMain would need to be changed a bit so that we
> > could re-run the lxcContainerStart() without causing the
> > monitor.serverFD (or whichever pipe sends monitor events to
> > lxc_driver.c to trigger autodestroy) to be closed.
> > 	
> > So for now I'm sending this patch, and hoping the sorcerers on this
> > list can hook reboot up as well, or show the best way how.
> 
> Thanks for sending this. I've got another outstanding patch that
> does quite abit of change to the controller code, so I can
> likely wire up the reboot hook as part of that work.

Awesome!  thanks, Daniel.

-serge




More information about the libvir-list mailing list