[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