<div dir="ltr">OK, I reworked fixup_aufs_vma_fd() to let core CRIU logic handle entries that do not point inside AUFS branches.  You should have already received the patch in a separate email already.  Please ignore this one.<div><br></div><div>--Saied</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 20, 2015 at 11:58 AM, Pavel Emelyanov <span dir="ltr">&lt;<a href="mailto:xemul@parallels.com" target="_blank">xemul@parallels.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 01/20/2015 10:17 PM, Saied Kazemi wrote:<br>
&gt; It&#39;s in read_fd_link() called by fixup_aufs_vma_fd() called by vma_get_mapfile().<br>
&gt;<br>
&gt; I could not use strip_deleted() because its argument is a pointer to struct fd_link.<br>
&gt;<br>
&gt; Below is a snippet listing of /proc/&lt;pid&gt;map_files for Nginx-streaming.  You see the AUFS<br>
&gt; branch names exposed (which we handle) and then you see &quot;/dev/zero (deleted)&quot;.<br>
&gt;<br>
&gt; By the way, /dev/zero isn&#39;t really deleted but I think because it&#39;s mmap()&#39;ed as both shared<br>
&gt; and writable (a strange combination), we get &quot; (deleted)&quot; appended to it by the kernel.<br>
<br>
</span>Ah, I see. The &quot;/dev/zero (deleted)&quot; is most likely the MAP_SHARED | MAP_ANONYMOUS mapping.<br>
It has nothing to do with files, just kernel manages shared anon mappings with such fake<br>
files.<br>
<br>
We detect such beasts with the is_anon_shmem_map() call further in the parse_smaps() and<br>
stripping of the &quot;(deleted)&quot; is typically not required there.<br>
<br>
It looks like we need to check for the file being such _before_ trying to fixup aufs path,<br>
not after as we do now.<br>
<br>
&gt; ...<br>
&gt; lr-------- 1 root root 64 Jan 20 11:07 7fc5c5840000-7fc5c5863000 -&gt; /var/lib/docker/aufs/diff/3b363fd9d7dab4db9591058a3f43e806f6fa6f7e2744b63b2df4b84eadb0685a/lib/x86_64-linux-gnu/<a href="http://ld-2.19.so" target="_blank">ld-2.19.so</a> &lt;<a href="http://ld-2.19.so" target="_blank">http://ld-2.19.so</a>&gt;<br>
<span class="">&gt; lrw------- 1 root root 64 Jan 20 11:07 7fc5c5a5f000-7fc5c5a60000 -&gt; /dev/zero (deleted)<br>
</span>&gt; lr-------- 1 root root 64 Jan 20 11:07 7fc5c5a62000-7fc5c5a63000 -&gt; /var/lib/docker/aufs/diff/3b363fd9d7dab4db9591058a3f43e806f6fa6f7e2744b63b2df4b84eadb0685a/lib/x86_64-linux-gnu/<a href="http://ld-2.19.so" target="_blank">ld-2.19.so</a> &lt;<a href="http://ld-2.19.so" target="_blank">http://ld-2.19.so</a>&gt;<br>
&gt; ...<br>
&gt;<br>
&gt; --Saied<br>
<span class="">&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Mon, Jan 19, 2015 at 2:04 AM, Pavel Emelyanov &lt;<a href="mailto:xemul@parallels.com">xemul@parallels.com</a> &lt;mailto:<a href="mailto:xemul@parallels.com">xemul@parallels.com</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;     On 01/16/2015 11:45 PM, Saied Kazemi wrote:<br>
&gt;     &gt; The kernel (see fs/dcache.c) appends the string &quot; (deleted)&quot; to a deleted<br>
&gt;     &gt; dentry pathname.  We need to remove the string when reading a symlink<br>
&gt;     &gt; that contains it (e.g., symlinks in /proc/&lt;pid&gt;/map_files).<br>
&gt;<br>
&gt;     Saied, in which function (or calltrace) do you see the &quot;(deleted)&quot; suffix?<br>
&gt;     We tried to address this, we have a function called strip_deleted() which<br>
&gt;     does exactly this, but it looks like we haven&#39;t fixed all the cases where<br>
&gt;     this suffix appears.<br>
&gt;<br>
</span>&gt;     &gt; Signed-off-by: Saied Kazemi &lt;<a href="mailto:saied@google.com">saied@google.com</a> &lt;mailto:<a href="mailto:saied@google.com">saied@google.com</a>&gt;&gt;<br>
&gt;<br>
&gt;     Thanks,<br>
&gt;     Pavel<br>
&gt;<br>
&gt;<br>
<br>
</blockquote></div><br></div>