[CRIU] [PATCH v7 11/15] mount: copy private field to "bind mount" mount_info structure

Stanislav Kinsburskiy skinsbursky at virtuozzo.com
Wed Mar 16 05:12:17 PDT 2016



16.03.2016 11:24, Pavel Emelyanov пишет:
> On 03/14/2016 05:59 PM, Stanislav Kinsburskiy wrote:
>> Mount private field can be initialized on actual mount operation, and then
>> used later with a bind-mount.
>> Thus, if have to be copied.
> I guess, I've asked this before, but this thing is still unclear.
>
> If we have an autofs mount and bind mount of this mount. How would this
> thing get restored? First mount will be mount-ed as autofs and the
> 2nd mountpoint will be mount --bind? Or will they both be mount-ed as
> autofs mounts?

The former.
In do_mount_one() actual mount is node only for one mountinfo 
(do_new_mount call). All the bind mounts are mounted via 
mount(...MS_BIND...) (do_bind_mount).

>> Signed-off-by: Stanislav Kinsburskiy <skinsbursky at virtuozzo.com>
>> ---
>>   criu/mount.c |    7 +++++++
>>   1 file changed, 7 insertions(+)
>>
>> diff --git a/criu/mount.c b/criu/mount.c
>> index ea5aae7..51af24a 100644
>> --- a/criu/mount.c
>> +++ b/criu/mount.c
>> @@ -2368,6 +2368,13 @@ static int do_bind_mount(struct mount_info *mi)
>>   	private = !mi->master_id && !shared;
>>   	cut_root = cut_root_for_bind(mi->root, mi->bind->root);
>>   
>> +	/* Mount private can be initialized on mount() callback, which is
>> +	 * called only once.
>> +	 * It have to be copied to all it's sibling structures to provide users
>> +	 * of it with actual data.
>> +	 */
>> +	mi->private = mi->bind->private;
>> +
>>   	if (list_empty(&mi->bind->children))
>>   		mnt_path = mi->bind->mountpoint;
>>   	else {
>>
>> _______________________________________________
>> CRIU mailing list
>> CRIU at openvz.org
>> https://lists.openvz.org/mailman/listinfo/criu
>> .
>>



More information about the CRIU mailing list