<div dir="ltr"><div class="gmail_extra"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>2015-12-22 11:56 GMT+01:00 Cyrill Gorcunov <span dir="ltr">&lt;<a href="mailto:gorcunov@gmail.com" target="_blank">gorcunov@gmail.com</a>&gt;</span>:<br></div></div></div></div></div></div></div></div><div class="gmail_quote"><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"><span class="">On Tue, Dec 22, 2015 at 11:37:55AM +0100, Federico Reghenzani wrote:<br>
&gt; Ok, I&#39;m trying to restore in a new namespace (I would prefer this solution<br>
&gt; to start the orted directly in a dedicated namespace), but I can&#39;t do it<br>
&gt; with C API. From command line via ssh:<br>
&gt;<br>
&gt; ssh <a href="mailto:root@10.10.1.2">root@10.10.1.2</a> unshare -p --fork criu restore -D /tmp/ckpt_B2BLJ<br>
&gt;<br>
&gt; it works (even if it provides some error messages), but using orted-restore<br>
&gt; in C API:<br>
&gt;<br>
&gt;     unshare(CLONE_NEWPID);<br>
</span>        fork();<br>
<br>
After unshare you need to call a fork as far as I remember<br>
and continue inside child.<br>
<span class=""><br></span></blockquote><div><br></div><div>Yes sorry, the fork is there, it&#39;s a copy-and-paste error.</div><div> </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"><span class="">
&gt;     if (pid != 0) {<br>
&gt;          ...<br>
&gt;     }<br>
&gt;     // getpid == 1 now<br>
&gt;     dir = ...<br>
&gt;     criu_init_opts();<br>
&gt;     criu_set_images_dir_fd(dir);<br>
&gt;     criu_set_log_file(&quot;criu_restore.log&quot;);<br>
&gt;     criu_set_log_level(4);<br>
&gt;     int status = criu_restore_child();<br>
&gt; //or int status = criu_restore();<br>
&gt;<br>
&gt; I obtain:<br>
&gt;<br>
&gt;     Error (image.c:405): Can&#39;t open dir /proc/1/fd/11: No such device or<br>
&gt; address<br>
&gt;     Error (cr-service.c:254): Can&#39;t open images directory: No such device<br>
&gt; or address<br>
&gt;<br>
&gt; I&#39;ve never used unshare, so I probably missed something ;-)<br>
&gt;<br>
&gt; ----<br>
&gt;<br>
&gt; P.S. the tty problem happens only when I open an ssh session and then<br>
&gt; execute the command (sshd: root@pts/0), no problem if I call criu restore<br>
&gt; directly from ssh command (sshd: root@notty).<br>
<br>
</span>So you borrow the 0 index for sshd itself I guess, that;s why criu<br>
is complaining. I think you shouldn&#39;t do that (but I&#39;m not sure<br>
how internally sshd operates with pty devices)<br>
</blockquote></div><br></div><div class="gmail_extra">Ok, anyway it&#39;s not currently a problem.</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div><div class="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr">2015-12-22 11:52 GMT+01:00 Pavel Emelyanov <span dir="ltr">&lt;<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>&gt;</span>:<br></div></div></div></div></div><div class="gmail_quote"><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"><span class="">On 12/22/2015 01:37 PM, Federico Reghenzani wrote:<br>&gt; Ok, I&#39;m trying to restore in a new namespace (I would prefer this solution to start the<br>&gt; orted directly in a dedicated namespace), but I can&#39;t do it with C API.<br><br></span>Well, yes, the C API is not yet up to this.<br><br>You can try to call unshare() glibc function by hands before fork()-ing and<br>exec()-ing criu. This would be good approximation of what my --unshare patchset<br>does. Or pick one up and add respective calls to lib/criu.c, this contribution<br>will be accepted with gratitude :)<br></blockquote><div> </div><div>Ok, I guess I can try to add them :)</div><div><br></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"><span class="">&gt; From command line via ssh:<br>&gt;<br></span>&gt; ssh <a href="mailto:root@10.10.1.2">root@10.10.1.2</a> &lt;mailto:<a href="mailto:root@10.10.1.2">root@10.10.1.2</a>&gt; unshare -p --fork criu restore -D /tmp/ckpt_B2BLJ<br><span class="">&gt;<br>&gt; it works (even if it provides some error messages), but using orted-restore in C API:<br>&gt;<br>&gt;     unshare(CLONE_NEWPID);<br>&gt;     if (pid != 0) {<br>&gt;          ...<br>&gt;     }<br>&gt;     // getpid == 1 now<br>&gt;     dir = ...<br>&gt;     criu_init_opts();<br>&gt;     criu_set_images_dir_fd(dir);<br>&gt;     criu_set_log_file(&quot;criu_restore.log&quot;);<br>&gt;     criu_set_log_level(4);<br>&gt;     int status = criu_restore_child();<br>&gt; //or int status = criu_restore();<br>&gt;<br>&gt; I obtain:<br>&gt;<br>&gt;     Error (image.c:405): Can&#39;t open dir /proc/1/fd/11: No such device or address<br><br></span>That&#39;s because you only spawned new pid namespace, but the /proc remained the same<br>showing pids from wrong (previous) namespace. If you use -m and --mount-proc that<br>would help.<br></blockquote><div><br></div><div>Thanks I will try it in a few hours.</div><div> </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"><div class=""><div class="h5"><br>&gt;     Error (cr-service.c:254): Can&#39;t open images directory: No such device or address<br>&gt;<br>&gt; I&#39;ve never used unshare, so I probably missed something ;-)<br>&gt;<br>&gt; ----<br>&gt;<br>&gt; P.S. the tty problem happens only when I open an ssh session and then execute the command (sshd: root@pts/0), no problem if I call criu restore directly from ssh command (sshd: root@notty).<br>&gt;<br>&gt; Cheers,<br>&gt; Federico<br>&gt; __<br>&gt; Federico Reghenzani<br>&gt; M.Eng. Student @ Politecnico di Milano<br>&gt; Computer Science and Engineering<br><br></div></div><span class=""><font color="#888888">-- Pavel</font></span></blockquote><div><br></div><div>Cheers,</div><div>Federico </div></div></div></div>