Quoting Oren Laadan (orenl@xxxxxxxxxxx): > > > Serge E. Hallyn wrote: > > Quoting Oren Laadan (orenl@xxxxxxxxxxx): > >> 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 -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html