[CRIU] Re: [PATCH 6/6] tty, restore: Migrate tty slave peer connection if --shell-job passed

Pavel Emelyanov xemul at parallels.com
Tue Oct 16 12:06:55 EDT 2012


On 10/16/2012 11:27 AM, Cyrill Gorcunov wrote:
> 
> In case if we've dumped a slave peer only (say a user dumped `top'
> application) we should migrate it on current active terminal, which
> barely an own standart stream prepared for us by the file engine.
> 
> Note only one external slave peer is allowed simply because
> otherwise we can't distinguish which indices should be used
> for each of them.
> 
> The patch basically does the following things
> 
>  - Check if the SID present on peer exist in current
>    process tree, we need to be sure that we can restore
>    peer parameters and controlling terminal if present
> 
>  - Rename pty_open_fake_ptmx to pty_open_unpaired_slave
>    because we might be inheriting SELF_STDIN_OFF instead
>    of opening fake master peer
> 
>  - Do inherit SELF_STDIN_OFF and restore tty group if
>    we are restoring external tty
> 
> Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
> ---
>  tty.c |  108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
>  1 files changed, 92 insertions(+), 16 deletions(-)
> 


> +	if (args->sid) {
> +		struct pstree_item *item = find_first_sid(args->sid);
> +		if (!item || item->pid.virt != args->sid) {

I would expect check for item->sid == INHERIT_SID here, not this.

> +			if (!opts.shell_job) {
> +				pr_err("Found sid %d pgid %d on slave peer fd %d. "
> +				       "Missing option?\n",
> +				       args->sid, args->pgrp, p->fd);
> +				return -1;
> +			}
> +
> +			args->sid = INHERIT_SID;
> +			args->pgrp = INHERIT_SID;
> +		}
> +	}



More information about the CRIU mailing list