All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oren Laadan <orenl@cs.columbia.edu>
To: Andrey Mirkin <major@openvz.org>
Cc: containers@lists.linux-foundation.org,
	linux-kernel@vger.kernel.org, Pavel Emelyanov <xemul@openvz.org>
Subject: Re: [PATCH 10/10] Add support for multiple processes
Date: Mon, 27 Oct 2008 11:58:04 -0400	[thread overview]
Message-ID: <4905E50C.8020803@cs.columbia.edu> (raw)
In-Reply-To: <1224285098-573-11-git-send-email-major@openvz.org>



Andrey Mirkin wrote:
> The whole tree of processes can be checkpointed and restarted now.
> Shared objects are not supported yet.
> 
> Signed-off-by: Andrey Mirkin <major@openvz.org>
> ---
>  checkpoint/cpt_image.h   |    2 +
>  checkpoint/cpt_process.c |   24 +++++++++++++
>  checkpoint/rst_process.c |   85 +++++++++++++++++++++++++++-------------------
>  3 files changed, 76 insertions(+), 35 deletions(-)
> 
> diff --git a/checkpoint/cpt_image.h b/checkpoint/cpt_image.h
> index e1fb483..f370df2 100644
> --- a/checkpoint/cpt_image.h
> +++ b/checkpoint/cpt_image.h
> @@ -128,6 +128,8 @@ struct cpt_task_image {
>  	__u64	cpt_nivcsw;
>  	__u64	cpt_min_flt;
>  	__u64	cpt_maj_flt;
> +	__u32	cpt_children_num;
> +	__u32	cpt_pad;
>  } __attribute__ ((aligned (8)));
>  
>  struct cpt_mm_image {
> diff --git a/checkpoint/cpt_process.c b/checkpoint/cpt_process.c
> index 1f7a54b..d73ec3c 100644
> --- a/checkpoint/cpt_process.c
> +++ b/checkpoint/cpt_process.c
> @@ -40,6 +40,19 @@ static unsigned int encode_task_flags(unsigned int task_flags)
>  		
>  }
>  
> +static int cpt_count_children(struct task_struct *tsk, struct cpt_context *ctx)
> +{
> +	int num = 0;
> +	struct task_struct *child;
> +
> +	list_for_each_entry(child, &tsk->children, sibling) {
> +		if (child->parent != tsk)
> +			continue;
> +		num++;
> +	}
> +	return num;
> +}
> +

I noticed that don't take the appropriate locks when browsing through
tasks lists (siblings, children, global list). Although I realize that
the container should be frozen at this time, I keep wondering if this
is indeed always safe.

For instance, are you protected against an OOM killer that might just
occur uninvited and kill one of those tasks ?

Can the administrator force an un-freeze of the container ?  Or perhaps
some error condition if the kernel cause that ?

>  int cpt_dump_task_struct(struct task_struct *tsk, struct cpt_context *ctx)
>  {
>  	struct cpt_task_image *t;
> @@ -102,6 +115,7 @@ int cpt_dump_task_struct(struct task_struct *tsk, struct cpt_context *ctx)
>  	t->cpt_egid = tsk->egid;
>  	t->cpt_sgid = tsk->sgid;
>  	t->cpt_fsgid = tsk->fsgid;
> +	t->cpt_children_num = cpt_count_children(tsk, ctx);
>  
>  	err = ctx->write(t, sizeof(*t), ctx);
>  
> @@ -231,6 +245,16 @@ int cpt_dump_task(struct task_struct *tsk, struct cpt_context *ctx)
>  		err = cpt_dump_fpustate(tsk, ctx);
>  	if (!err)
>  		err = cpt_dump_registers(tsk, ctx);
> +	if (!err) {
> +		struct task_struct *child;
> +		list_for_each_entry(child, &tsk->children, sibling) {
> +			if (child->parent != tsk)
> +				continue;
> +			err = cpt_dump_task(child, ctx);
> +			if (err)
> +				break;

Here too.

[...]

Oren.


  parent reply	other threads:[~2008-10-27 15:58 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-17 23:11 [PATCH 0/10] OpenVZ kernel based checkpointing/restart (v2) Andrey Mirkin
2008-10-17 23:11 ` Andrey Mirkin
2008-10-17 23:11 ` [PATCH 01/10] Introduce trivial sys_checkpoint and sys_restore system calls Andrey Mirkin
     [not found]   ` <1224285098-573-2-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-17 23:11     ` [PATCH 02/10] Make checkpoint/restart functionality modular Andrey Mirkin
2008-10-17 23:11       ` Andrey Mirkin
     [not found]       ` <1224285098-573-3-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-17 23:11         ` [PATCH 03/10] Introduce context structure needed during checkpointing/restart Andrey Mirkin
2008-10-17 23:11           ` Andrey Mirkin
     [not found]           ` <1224285098-573-4-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-17 23:11             ` [PATCH 04/10] Introduce container dump function Andrey Mirkin
2008-10-17 23:11               ` Andrey Mirkin
     [not found]               ` <1224285098-573-5-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-17 23:11                 ` [PATCH 05/10] Introduce function to dump process Andrey Mirkin
2008-10-17 23:11                   ` Andrey Mirkin
2008-10-20 11:02                   ` Louis Rilling
2008-10-24  4:15                     ` [Devel] " Andrey Mirkin
     [not found]                     ` <20081020110226.GP15171-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-10-24  4:15                       ` Andrey Mirkin
2008-10-20 17:48                   ` Serge E. Hallyn
     [not found]                     ` <20081020174801.GB29092-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-10-24  4:40                       ` [Devel] " Andrey Mirkin
2008-10-24  4:40                         ` Andrey Mirkin
     [not found]                   ` <1224285098-573-6-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-17 23:11                     ` [PATCH 06/10] Introduce functions to dump mm Andrey Mirkin
2008-10-17 23:11                       ` Andrey Mirkin
     [not found]                       ` <1224285098-573-7-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-17 23:11                         ` [PATCH 07/10] Introduce function for restarting a container Andrey Mirkin
2008-10-17 23:11                           ` Andrey Mirkin
     [not found]                           ` <1224285098-573-8-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-17 23:11                             ` [PATCH 08/10] Introduce functions to restart a process Andrey Mirkin
2008-10-17 23:11                           ` Andrey Mirkin
2008-10-17 23:11                             ` [PATCH 09/10] Introduce functions to restore mm Andrey Mirkin
     [not found]                               ` <1224285098-573-10-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-17 23:11                                 ` [PATCH 10/10] Add support for multiple processes Andrey Mirkin
2008-10-17 23:11                               ` Andrey Mirkin
     [not found]                                 ` <1224285098-573-11-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-27 15:58                                   ` Oren Laadan
2008-10-27 15:58                                 ` Oren Laadan [this message]
     [not found]                                   ` <4905E50C.8020803-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-10-30  4:55                                     ` [Devel] " Andrey Mirkin
2008-10-30  4:55                                   ` Andrey Mirkin
     [not found]                             ` <1224285098-573-9-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-17 23:11                               ` [PATCH 09/10] Introduce functions to restore mm Andrey Mirkin
2008-10-20  9:23                               ` [PATCH 08/10] Introduce functions to restart a process Cedric Le Goater
2008-10-20  9:23                                 ` Cedric Le Goater
2008-10-22  8:49                                 ` [Devel] " Andrey Mirkin
2008-10-22  9:25                                   ` Louis Rilling
2008-10-22 10:06                                     ` Greg Kurz
2008-10-22 10:44                                       ` Louis Rilling
     [not found]                                         ` <20081022104448.GX15171-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-10-22 12:44                                           ` Greg Kurz
2008-10-22 12:44                                         ` Greg Kurz
     [not found]                                       ` <1224669979.4210.15.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-10-22 10:44                                         ` Louis Rilling
     [not found]                                     ` <20081022092502.GW15171-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-10-22 10:06                                       ` Greg Kurz
2008-10-22 10:12                                       ` Andrey Mirkin
2008-10-22 10:12                                         ` Andrey Mirkin
2008-10-22 10:46                                         ` Louis Rilling
     [not found]                                           ` <20081022104630.GY15171-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-10-23  8:53                                             ` Andrey Mirkin
2008-10-23  8:53                                           ` Andrey Mirkin
     [not found]                                         ` <200810221412.14174.major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-22 10:46                                           ` Louis Rilling
2008-10-22 15:25                                           ` Oren Laadan
2008-10-22 15:25                                             ` Oren Laadan
2008-10-23  9:00                                             ` Andrey Mirkin
2008-10-23 13:57                                               ` Dave Hansen
2008-10-24  3:57                                                 ` Andrey Mirkin
     [not found]                                                   ` <200810240757.38012.major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-25 21:10                                                     ` Oren Laadan
2008-10-25 21:10                                                   ` Oren Laadan
2008-10-29 14:52                                                     ` Andrey Mirkin
2008-10-30 15:59                                                       ` Oren Laadan
     [not found]                                                       ` <200810291752.19281.major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-30 15:59                                                         ` Oren Laadan
     [not found]                                                     ` <49038B4C.2010009-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-10-29 14:52                                                       ` Andrey Mirkin
2008-10-24  3:57                                                 ` Andrey Mirkin
     [not found]                                               ` <200810231300.50628.amirkin-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2008-10-23 13:57                                                 ` Dave Hansen
     [not found]                                             ` <48FF45CF.5000306-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-10-23  9:00                                               ` Andrey Mirkin
     [not found]                                   ` <200810221249.55600.major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-22  9:25                                     ` Louis Rilling
2008-10-22 12:47                                     ` Cedric Le Goater
2008-10-22 12:47                                   ` Cedric Le Goater
     [not found]                                     ` <48FF20F6.1040505-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-10-23  9:54                                       ` Andrey Mirkin
2008-10-23  9:54                                     ` Andrey Mirkin
     [not found]                                       ` <200810231354.47033.major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-23 13:49                                         ` Dave Hansen
2008-10-23 13:49                                       ` Dave Hansen
2008-10-24  4:04                                         ` Andrey Mirkin
2008-10-24  4:04                                         ` Andrey Mirkin
     [not found]                                 ` <48FC4E0C.7050008-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-10-22  8:49                                   ` Andrey Mirkin
2008-10-20 13:25                               ` Louis Rilling
2008-10-20 13:25                                 ` Louis Rilling
2008-10-23 10:56                                 ` [Devel] " Andrey Mirkin
     [not found]                                 ` <20081020132536.GS15171-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-10-23 10:56                                   ` Andrey Mirkin
2008-10-20 12:25                         ` [PATCH 06/10] Introduce functions to dump mm Louis Rilling
2008-10-20 12:25                           ` Louis Rilling
2008-10-22  8:58                           ` [Devel] " Andrey Mirkin
     [not found]                           ` <20081020122514.GR15171-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-10-22  8:58                             ` Andrey Mirkin
2008-10-20 17:21                         ` Dave Hansen
2008-10-20 17:21                       ` Dave Hansen
2008-10-23  8:43                         ` [Devel] " Andrey Mirkin
     [not found]                           ` <200810231243.42181.major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-23 13:51                             ` Dave Hansen
2008-10-23 13:51                           ` Dave Hansen
2008-10-24  4:07                             ` Andrey Mirkin
2008-10-24  4:07                             ` Andrey Mirkin
2008-10-23  8:43                         ` Andrey Mirkin
2008-10-20 11:02                     ` [PATCH 05/10] Introduce function to dump process Louis Rilling
2008-10-20 17:48                     ` Serge E. Hallyn
2008-10-20 17:02             ` [PATCH 03/10] Introduce context structure needed during checkpointing/restart Dave Hansen
2008-10-20 17:02               ` Dave Hansen
2008-10-29 15:30               ` [Devel] " Andrey Mirkin
2008-10-29 15:30               ` Andrey Mirkin
2008-10-20 16:51         ` [PATCH 02/10] Make checkpoint/restart functionality modular Dave Hansen
2008-10-20 16:59         ` Serge E. Hallyn
2008-10-20 16:51       ` Dave Hansen
2008-10-20 16:59       ` Serge E. Hallyn
     [not found] ` <1224285098-573-1-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-17 23:11   ` [PATCH 01/10] Introduce trivial sys_checkpoint and sys_restore system calls Andrey Mirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4905E50C.8020803@cs.columbia.edu \
    --to=orenl@cs.columbia.edu \
    --cc=containers@lists.linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=major@openvz.org \
    --cc=xemul@openvz.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.