Re: [PATCH 2/4] xen/manage: Poweroff forcefully if user-space is not yet up.

From: Konrad Rzeszutek Wilk
Date: Tue Apr 01 2014 - 11:43:50 EST


On Thu, Nov 21, 2013 at 11:33:49AM +0000, David Vrabel wrote:
> On 08/11/13 17:38, Konrad Rzeszutek Wilk wrote:
> > The user can launch the guest in this sequence:
> >
> > xl create -p /vm.cfg [launch, but pause it]
> > xl shutdown latest [sets control/shutdown=poweroff]
> > xl unpause latest
> > xl console latest [and see that the guest has completely
> > ignored the shutdown request]
> >
> > In reality the guest hasn't ignored it. It registers a watch
> > and gets a notification that there is value. It then calls
> > the shutdown_handler which ends up calling orderly_shutdown.
>
> Is this really a bug?.
>
> >From the xl(1) man page.
>
> shutdown [OPTIONS] -a|domain-id
> Gracefully shuts down a domain. This coordinates with the
> domain OS to perform graceful shutdown, so there is no guarantee
> that it will succeed, and may take a variable length of time
> depending on what services must be shutdown in the domain.
>
> Seems like ignoring a shutdown request when the guest cannot yet
> shutdown gracefully is the expected behaviour.
>
> This also doesn't seem sufficient. SYSTEM_RUNNING is set prior to
> starting init in an initramfs and orderly_power_off(false) will still
> likely fail at this point.

And I found out that there is not much I can do about it. I tried
setting up workqueues, using usermodehelper_read_trylock - none
of those helped when SYSTEM_RUNNING is set and prior to /sbin/init
being started.

The best I could do was relax the gate - meaning that the
system_state = SYSTEM_RUNNING

we set unconditionally is removed. Instead we only set that when
the shutdown process is actually in progress.

This patch does this: