[lxc-devel] [PATCH] fix lxc-wait waiting forever for FREEZING, FROZEN, THAWED states
Stéphane Graber
stgraber at ubuntu.com
Thu Jan 3 23:15:08 UTC 2013
On 12/18/2012 07:15 PM, Dwight Engen wrote:
> These states are kept by the kernel in the freezer.state cgroup item, and
> are never set in handler->state with lxc_set_state(). If lxc transitions
> a container to/from the freezer after an lxc-wait for one of the above
> states has already started, the lxc-wait will never see the new state. This
> change has lxc send the new state to the lxc-monitor socket.
>
> Signed-off-by: Dwight Engen <dwight.engen at oracle.com>
Acked-by: Stéphane Graber <stgraber at ubuntu.com>
> ---
> src/lxc/freezer.c | 6 ++++++
> src/lxc/lxc_wait.c | 2 +-
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/src/lxc/freezer.c b/src/lxc/freezer.c
> index 2a6f0f5..3e4f55d 100644
> --- a/src/lxc/freezer.c
> +++ b/src/lxc/freezer.c
> @@ -32,6 +32,8 @@
> #include <sys/param.h>
>
> #include "error.h"
> +#include "state.h"
> +#include "monitor.h"
>
> #include <lxc/log.h>
> #include <lxc/cgroup.h>
> @@ -95,7 +97,10 @@ static int freeze_unfreeze(const char *name, int freeze)
>
> ret = strncmp(f, tmpf, strlen(f));
> if (!ret)
> + {
> + lxc_monitor_send_state(name, freeze ? FROZEN : THAWED);
> break; /* Success */
> + }
>
> sleep(1);
>
> @@ -119,6 +124,7 @@ out:
>
> int lxc_freeze(const char *name)
> {
> + lxc_monitor_send_state(name, FREEZING);
> return freeze_unfreeze(name, 1);
> }
>
> diff --git a/src/lxc/lxc_wait.c b/src/lxc/lxc_wait.c
> index de1163e..799225d 100644
> --- a/src/lxc/lxc_wait.c
> +++ b/src/lxc/lxc_wait.c
> @@ -70,7 +70,7 @@ Options :\n\
> -n, --name=NAME NAME for name of the container\n\
> -s, --state=STATE ORed states to wait for\n\
> STOPPED, STARTING, RUNNING, STOPPING,\n\
> - ABORTING, FREEZING, FROZEN\n\
> + ABORTING, FREEZING, FROZEN, THAWED\n\
> -t, --timeout=TMO Seconds to wait for state changes\n",
> .options = my_longopts,
> .parser = my_parser,
--
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 899 bytes
Desc: OpenPGP digital signature
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20130103/63691868/attachment.pgp>
More information about the lxc-devel
mailing list