[CRIU] [PATCH 03/21] parasite: Prepare structures for daemon mode

Pavel Emelyanov xemul at parallels.com
Fri May 24 12:10:02 EDT 2013


On 05/24/2013 04:20 PM, Andrey Vagin wrote:
> From: Cyrill Gorcunov <gorcunov at openvz.org>
> 
> Parasite daemon mode might be considered as a series
> of network messages sent from main crtools module to
> parasite daemon which spins on a socket waiting for
> command to handle.
> 
> Simple command handling session might look as
> 
>         crtools                     daemon
>         |                           |                           |
>         | ---> command message ---> |                           |
>         |                           | ---> receive command ---> |
>         |                           |           ....            |
>         |                           |       handle command      |
>         |                           |           ....            |
>         |                           | <--- send ack       <---  |
>         | <--- receive ack     <--- |                           |
>         |                           |                           |
>         v                           v                           v
>       time
> 
> where, in case of multithread application [handle command] stage
> includes waking up of children threads via futexes, wait until
> handling complete and only then send ack back to ctrools module.
> 
> This patch brings in description of command message as
> 
> struct ctl_msg {
>     unsigned int    id;     /* command recipient */
>     unsigned int    cmd;    /* command itself */
>     unsigned int    ack;    /* ack on command */
>     int             err;    /* error code on reply */
> };
> 
> For example, in case of dumpee being with pid 2 and acquiring
> to handle PARASITE_CMD_DUMP_MISC, the command/ack series will look
> as
> 
>     cmd-msg
>     -------
>     .id     = 2,
>     .cmd    = PARASITE_CMD_DUMP_MISC,
>     .ack    = 0,
>     .err    = 0,
> 
>     ack-msg
>     -------
>     .id     = 2,
>     .cmd    = PARASITE_CMD_DUMP_MISC,
>     .ack    = PARASITE_CMD_DUMP_MISC,
>     .err    = 0
> 
> in case if error happened in parasite, the @err field set accordingly.
> 
> For convenience ctl_msg_cmd()/ctl_msg_ack() macros are provided
> for control message generations.
> 
> v2: delete futex_t ack from tid_state_s
> 
> Fixed-by: Andrew Vagin <avagin at openvz.org>
> Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
> Signed-off-by: Andrey Vagin <avagin at openvz.org>

Applied


More information about the CRIU mailing list