lkml.org 
[lkml]   [2009]   [Jul]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC v17][PATCH 22/60] c/r: external checkpoint of a task other than ourself


    Serge E. Hallyn wrote:
    > Quoting Oren Laadan (orenl@librato.com):
    >> 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).

    Oren.



    \
     
     \ /
      Last update: 2009-07-23 06:35    [W:0.037 / U:1.252 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site