From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Serge E. Hallyn" Subject: Re: [RFC v17][PATCH 22/60] c/r: external checkpoint of a task other than ourself Date: Thu, 23 Jul 2009 08:12:50 -0500 Message-ID: <20090723131250.GA9535@us.ibm.com> References: <1248256822-23416-1-git-send-email-orenl@librato.com> <1248256822-23416-23-git-send-email-orenl@librato.com> <20090722175223.GA19389@us.ibm.com> <4A67E7D7.9060800@librato.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <4A67E7D7.9060800-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Oren Laadan Cc: Alexey Dobriyan , linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Dave Hansen , linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org, Linus Torvalds , Alexander Viro , "H. Peter Anvin" , Andrew Morton , Ingo Molnar , Pavel Emelyanov List-Id: linux-api@vger.kernel.org Quoting Oren Laadan (orenl-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org): > > > Serge E. Hallyn wrote: > > Quoting Oren Laadan (orenl-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org): > >> Now we can do "external" checkpoint, i.e. act on another task. > > > > ... > > > >> long do_checkpoint(struct ckpt_ctx *ctx, pid_t pid) > >> { > >> long ret; > >> > >> + ret = init_checkpoint_ctx(ctx, pid); > >> + if (ret < 0) > >> + return ret; > >> + > >> + if (ctx->root_freezer) { > >> + ret = cgroup_freezer_begin_checkpoint(ctx->root_freezer); > >> + if (ret < 0) > >> + return ret; > >> + } > > > > Self-checkpoint of a task in root freezer is now denied, though. > > > > Was that intentional? > > Yes. > > "root freezer" is an arbitrary task in the checkpoint subtree or > container. It is used to verify that all checkpointed tasks - except > for current, if doing self-checkpoint - belong to the same freezer > group. > > Since current is busy calling checkpoint(2), and since we only permit > checkpoint of (cgroup-) frozen tasks, then - by definition - it cannot > possibly belong to the same group. If it did, it would itself be frozen > like its fellows and unable to call checkpoint(2). So then you're saying that regular self-checkpoint no longer works, but the documentation still shows self.c and claims it should just work. Mind you I prefer this as it is more consistent, but I thought it was something you wanted to support. -serge