<div dir="ltr"><div>About mnt namespaces. We call prepare_mnt_ns(). This does a bunch of things and gets to mount.c:</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">3185     ret = mnt_tree_for_each(pms, do_mount_one);</blockquote><div>I haven&#39;t implemented criu restore ever but one of the ways to implement mount namespace restore is to create its whole fs tree (with root mount point and all the submounts) then create new mnt ns, then enter it. then pivot root in it, then exit from ns. It looks like CRIU restore and particularly prepare_mnt_ns()  does the same thing.</div><div><br></div><div>About networking. Look inside network_unlock_internal(). Our folk has missed its call and we&#39;ll add it to into our patch. This network_unlock_internal() calls switch_ns and restore_ns back with iptables manipulation between them.</div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-05-16 20:55 GMT+03:00 Tycho Andersen <span dir="ltr">&lt;<a href="mailto:tycho.andersen@canonical.com" target="_blank">tycho.andersen@canonical.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Mon, May 16, 2016 at 08:47:26PM +0300, Batalov Eugene wrote:<br>
&gt; Conceptually we&#39;re able to get the same state in criu gc as criu restore<br>
&gt; gets.<br>
&gt;<br>
&gt; I am agree about namespaces and network unlock. Our folk has missed this.<br>
&gt;<br>
&gt; About link remaps and namespaces. This thing from patch looks like it<br>
&gt; should working:<br>
&gt;<br>
&gt; &gt; + if (rfe-&gt;remap_type == REMAP_TYPE__LINKED) {<br>
&gt; &gt;  + if (open_remap_linked(rfi, rfe))<br>
&gt; &gt;  + {<br>
&gt; &gt;  + pr_err(&quot;open_remap_linked failed&quot;);<br>
&gt; &gt;  + return -1;<br>
&gt; &gt;  + }<br>
&gt; &gt;  +<br>
&gt; &gt;  + int mntns_root = mntns_get_root_by_mnt_id(rfi-&gt;remap-&gt;rmnt_id);<br>
<br>
</span>Perhaps I&#39;m missing something, but why is this mntns the same one as<br>
the task whose mount ns we&#39;re trying to clean?<br>
<br>
I can see that it might work because you pivot_root() into the same<br>
--root as the dump/restore is in, but if the container&#39;s root isn&#39;t<br>
mounted on the host won&#39;t that fail?<br>
<span class="HOEnZb"><font color="#888888"><br>
Tycho<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Best regards,<br>Eugene Batalov.</div>
</div>