[CRIU] [PATCH v2 3/5] mount: save ext_real_root for external mounts

Pavel Emelyanov xemul at virtuozzo.com
Thu Mar 23 01:36:02 PDT 2017


On 03/21/2017 10:53 AM, Pavel Tikhomirov wrote:
> 
> 
> On 03/20/2017 10:03 PM, Andrew Vagin wrote:
>> On Mon, Mar 20, 2017 at 12:45:42PM +0300, Pavel Tikhomirov wrote:
>>> need it to check if we can bindmount from external mount
>>>
>>> https://jira.sw.ru/browse/PSBM-46753
>>>
>>> v2: s/real_root/ext_real_root/
>>> Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
>>> ---
>>>  criu/mount.c     | 3 ++-
>>>  images/mnt.proto | 1 +
>>>  2 files changed, 3 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/criu/mount.c b/criu/mount.c
>>> index 6e5a4c6..ef5c1ec 100644
>>> --- a/criu/mount.c
>>> +++ b/criu/mount.c
>>> @@ -1335,6 +1335,7 @@ static int dump_one_mountpoint(struct mount_info *pm, struct cr_img *img)
>>>  		 * for reverse mapping details.
>>>  		 */
>>>  		me.root	= pm->external;
>>> +		me.ext_real_root = pm->root;
>>>  		me.has_ext_mount = true;
>>>  		me.ext_mount = true;
>>>  	} else
>>> @@ -2445,7 +2446,7 @@ static int get_mp_root(MntEntry *me, struct mount_info *mi)
>>>  {
>>>  	char *ext = NULL;
>>>
>>> -	mi->root = xstrdup(me->root);
>>> +	mi->root = xstrdup(me->ext_real_root ? : me->root);
>>>  	if (!mi->root)
>>>  		return -1;
>>>
>>> diff --git a/images/mnt.proto b/images/mnt.proto
>>> index 50cd8af..3294319 100644
>>> --- a/images/mnt.proto
>>> +++ b/images/mnt.proto
>>> @@ -53,4 +53,5 @@ message mnt_entry {
>>>
>>>  	optional bool		deleted			= 16;
>>>  	optional uint32		sb_flags		= 17 [(criu).hex = true];
>>> +	optional string		ext_real_root		= 18;
>>
>> We need a comment here what this means. What do you think if we add
>> ext_key instead of ext_real_root, for me it looks more understandable.
> 
> If we use me->root for real root, and me->ext_key for the key of the 
> mount, that would surely break backward compatibility, as old criu will 
> still want the key in me->root.

There's no need in letting older criu restore stuff from newer images.
If we think that the existing field should be used the other way, then
rename it to ${old_name}_deprecated in the image, introduce the new one
and always use it.

> Thus we should leave the key of the mount in me->root. And naming the 
> field in which I want to save the real root(path in the file system to 
> the root of these mount) as me->ext_key is counterintuitive to me.
> 
>>>  }
>>> --
>>> 2.9.3
>>>
> 



More information about the CRIU mailing list