<div dir="ltr"><div><span style="font-size:12.8px">Conceptually we&#39;re able to get the same state in criu gc as criu restore gets.</span></div><span style="font-size:12.8px"><div><span style="font-size:12.8px"><br></span></div>I am agree about namespaces and network unlock. Our folk has missed this.</span><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">About link remaps and namespaces. This thing from patch looks like it should working:</span></div><div><blockquote 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" class="gmail_quote"><span style="font-size:12.8px">+<span class="" style="white-space:pre">        </span>if (rfe-&gt;remap_type == REMAP_TYPE__LINKED) {<br></span><span style="font-size:12.8px"> +<span class="" style="white-space:pre">                </span>if (open_remap_linked(rfi, rfe))<br></span><span style="font-size:12.8px"> +<span class="" style="white-space:pre">                </span>{<br></span><span style="font-size:12.8px"> +<span class="" style="white-space:pre">                        </span>pr_err(&quot;open_remap_linked failed&quot;);<br></span><span style="font-size:12.8px"> +<span class="" style="white-space:pre">                        </span>return -1;<br></span><span style="font-size:12.8px"> +<span class="" style="white-space:pre">                </span>}<br></span><span style="font-size:12.8px"> +<br></span><span style="font-size:12.8px"> +<span class="" style="white-space:pre">                </span>int mntns_root = mntns_get_root_by_mnt_id(rfi-&gt;remap-&gt;rmnt_id);<br></span><span style="font-size:12.8px"> +<span class="" style="white-space:pre">                </span>if (!unlinkat(mntns_root, rfi-&gt;remap-&gt;rpath, rfi-&gt;remap-&gt;is_dir ? AT_REMOVEDIR : 0))</span></blockquote></div><div style=""><span style="font-size:12.8px"><br></span></div><div style=""><span style="font-size:12.8px"><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-05-16 20:35 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 04:00:41PM +0300, Batalov Eugene wrote:<br>
</span><span class="">&gt; Hello.<br>
&gt;<br>
&gt; The idea of Pavel to reuse part of &quot;restore: restore freezer cgroup state&quot;<br>
&gt; patch looks good and simple.<br>
&gt;<br>
&gt; About networking unlock. Yes. There is a work in progress on new criu gc<br>
&gt; command.<br>
&gt; You can find patch commit here:<br>
&gt; <a href="https://github.com/AuthenticEshkinKot/criu/commit/2ab52fec7a05f9792c871709758d14137fe9f379" rel="noreferrer" target="_blank">https://github.com/AuthenticEshkinKot/criu/commit/2ab52fec7a05f9792c871709758d14137fe9f379</a><br>
&gt;<br>
&gt; The main problem with it is the fact that network unlock and link remaps<br>
&gt; cleanup logic<br>
&gt; is coupled with logic of criu restore command. And criu restore logic is<br>
&gt; not trivial.<br>
&gt; So we&#39;re trying to carefully reduce the amount of code in CRIU gc. We need<br>
&gt; to reuse CRIU restore command code and need not to introduce ugly hacks and<br>
&gt; excessive CRIU restore code dependencies (this dependence would limit CRIU<br>
&gt; restore code changes at the same time).<br>
<br>
</span>Hm. Actually I wonder if this approach will work entirely.<br>
gc_prepare_namespace() just calls prepare_pstree() and<br>
prepare_mnt_ns(), which won&#39;t attach to the namespaces of the dumped<br>
(or restored) tasks, but instead creates entirely new namespaces and<br>
removes the files from there. It also doesn&#39;t (I don&#39;t think) setns to<br>
the right place when it does network_unlock, because nothing sets up<br>
the right network namespace.<br>
<br>
It seems like this mode also needs a -t option to attach to the right<br>
task that it should clean up, as well as the images directory. Does<br>
that make sense?<br>
<span class="HOEnZb"><font color="#888888"><br>
Tycho<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
&gt; GRIU gc both able print what&#39;s left in the system after dump (iptables,<br>
&gt; link remaps) and to cleanup this stuff too.<br>
&gt;<br>
&gt;<br>
&gt; 2016-05-16 15:31 GMT+03:00 Pavel Emelyanov &lt;<a href="mailto:xemul@virtuozzo.com">xemul@virtuozzo.com</a>&gt;:<br>
&gt;<br>
&gt; &gt; On 05/10/2016 08:04 PM, Tycho Andersen wrote:<br>
&gt; &gt; &gt; Hi guys,<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; I&#39;m looking at implementing some kind of --leave-frozen option in<br>
&gt; &gt; &gt; CRIU, so that we can have a basic UX in LXD where we can wait for the<br>
&gt; &gt; &gt; restore to be successful before we kill the checkpointed container. I<br>
&gt; &gt; &gt; know p.haul does this by just using a callback, but it would be sort<br>
&gt; &gt; &gt; of painful to absorb just the callback part without doing a lot of<br>
&gt; &gt; &gt; extra engineering. We&#39;ll get LXD using p.haul someday, though :)<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; The actual --leave-frozen patch is not so bad (see attached), but I&#39;m<br>
&gt; &gt; &gt; not sure what to do about the network locking/unlocking bits.<br>
&gt; &gt;<br>
&gt; &gt; There was a patch 8b04551c (restore: restore freezer cgroup state) in 2.0<br>
&gt; &gt; that turned cgroup into whatever state it was before dump. Can it be fixed<br>
&gt; &gt; to make &#39;--leave-frozen&#39; alter the behavior of<br>
&gt; &gt; add_freezer_state_for_restore()<br>
&gt; &gt; and set it to &#39;frozen&#39; always?<br>
&gt; &gt;<br>
&gt; &gt; &gt; It seems like it is always safe to do the bits in<br>
&gt; &gt; &gt; cpt_unlock_tcp_connections() since that&#39;s just disabling tcp repair<br>
&gt; &gt; &gt; mode, but all of the iptables rules seem necessary in order to keep<br>
&gt; &gt; &gt; the network locked.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; So my question is: is there a nice way we can &quot;tag&quot; these rules so<br>
&gt; &gt; &gt; that something can come by and delete them later? I was thinking about<br>
&gt; &gt; &gt; having criu add a comment (via -m comment --comment &quot;CRIU-LOCK-RULE&quot;)<br>
&gt; &gt; &gt; to each rule it adds, but I&#39;m not sure if there&#39;s a better way, or if<br>
&gt; &gt; &gt; I&#39;ve missed something entirely.<br>
&gt; &gt;<br>
&gt; &gt; Yes, there&#39;s an issue #45 -- show what&#39;s left in the system after dump.<br>
&gt; &gt; Iptables<br>
&gt; &gt; rules are in the list :) I know that some gentlemen (Cc) from<br>
&gt; &gt; Saint-Petersburg were<br>
&gt; &gt; interested in implementing it in form of &#39;criu gc&#39; action, so probably<br>
&gt; &gt; tuning this<br>
&gt; &gt; option to support &#39;--show-only&#39; would help you?<br>
&gt; &gt;<br>
&gt; &gt; &gt; Thanks!<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Tycho<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; CRIU mailing list<br>
&gt; &gt; &gt; <a href="mailto:CRIU@openvz.org">CRIU@openvz.org</a><br>
&gt; &gt; &gt; <a href="https://lists.openvz.org/mailman/listinfo/criu" rel="noreferrer" target="_blank">https://lists.openvz.org/mailman/listinfo/criu</a><br>
&gt; &gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Best regards,<br>
&gt; Eugene Batalov.<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Best regards,<br>Eugene Batalov.</div>
</div>