<br><br><div class="gmail_quote">On Fri, Jul 29, 2011 at 10:59 AM, Emmanuel Dreyfus <span dir="ltr">&lt;<a href="mailto:manu@netbsd.org">manu@netbsd.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On Fri, Jul 29, 2011 at 05:15:10AM +0000, Emmanuel Dreyfus wrote:<br>
&gt;  CALL  symlink(0xbfbff990,0xbfbfc91c)<br>
&gt;  MISC  link-target: &quot;i386&quot;<br>
&gt;  NAMI  &quot;inst.04684a&quot;<br>
&gt;  RET   symlink 0<br>
&gt;  CALL  __posix_rename(0xbfbfc91c,0xbfbff995)<br>
&gt;  NAMI  &quot;inst.04684a&quot;<br>
&gt;  NAMI  &quot;machine&quot;<br>
&gt;  RET   __posix_rename -1 errno 1 Operation not permitted<br>
<br>
</div>I found a possible cause. dht code ineed takes care of the directory case:<br>
        if (IA_ISDIR (oldloc-&gt;inode-&gt;ia_type)) {<br>
                dht_rename_dir (frame, this);<br>
        } else {<br>
                local-&gt;op_ret = 0;<br>
                dht_rename_create_links (frame);<br>
        }<br>
<br>
But if I add a log for oldloc-&gt;inode-&gt;ia_type, I can see it is IA_IFLNK<br>
and not IA_IFDIR: this checks for the symlink instead of checking the<br>
symlink target, therefore it fails to correctly detect it is a directory.<br>
<br>
Opinions?<br>
<div><div></div><div class="h5"><br></div></div></blockquote><div><br></div><div>rename(2) can be performed on a symlink too. Hence, I guess what distribute is doing is valid here.</div><div><br></div><div>Regards,<br>Amar</div>
<div><br></div><div><br></div></div>