[CRIU] [PATCH 5/7] tty: Save mount ids for terminals into image

Pavel Emelyanov xemul at virtuozzo.com
Tue Jan 31 09:38:48 PST 2017


On 01/31/2017 03:04 PM, Cyrill Gorcunov wrote:
> On Tue, Jan 31, 2017 at 02:32:55PM +0300, Pavel Emelyanov wrote:
>>>  
>>> +static struct mount_info *lookup_mnt_sdev_on_root(unsigned int s_dev)
>>> +{
>>> +	struct mount_info *m;
>>> +
>>> +	for (m = mntinfo; m != NULL; m = m->next)
>>> +		if (m->s_dev == s_dev &&
>>> +		    is_root(m->root))
>>
>> Why is is_root() check needed?
> 
> To skip bindmounts.
> 
>>> @@ -289,7 +301,7 @@ int mount_resolve_devpts_mnt_id(int s_dev)
>>>  	} else if (mi->fstype->code == FSTYPE__DEVTMPFS) {
>>>  		char path[PATH_MAX];
>>>  
>>> -		snprintf(path, sizeof(path), "%s/pts", mi->mountpoint + 1);
>>> +		snprintf(path, sizeof(path), "%s/pts/ptmx", mi->mountpoint + 1);
>>
>> Runaway from patch #4?
> 
> yup

Plz, return it there.

>>> +	if (is_pty(driver)) {
>>> +		mnt_id = mount_resolve_devpts_mnt_id(p->stat.st_dev);
>>> +		if (mnt_id < 0) {
>>> +			pr_info("Can't obtain mnt_id on tty %d id %#x\n", lfd, id);
>>> +			return -1;
>>> +		}
>>> +	} else
>>> +		mnt_id = p->mnt_id;
>>
>> Is it needed for non-ptys?
> 
> Well, I think better to carry this info for _any_ type of terminal.
> Maybe it won't be needed for non-ptys but wont hurt.

No no. "Wont hurt" is bad argument. Plz, leave this empty for non-ptys.

>>>  
>>>  message tty_file_entry {
>>> @@ -81,4 +85,6 @@ message tty_file_entry {
>>>  
>>>  	required uint32			flags		= 3 [(criu).hex = true];
>>>  	required fown_entry		fown		= 4;
>>> +
>>> +	optional sint32			mnt_id		= 5 [default = 0];
>>
>> O_o  do we _really_ need mnt_id for all three?
>>
> 
> Yes, one tty-info may belong to several tty-file (say
> tty opened more than once)
> 
> 	Cyrill
> .
> 



More information about the CRIU mailing list