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.en...@oracle.com>

Acked-by: Stéphane Graber <stgra...@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

Attachment: signature.asc
Description: OpenPGP digital signature

------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122712
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to