<div dir="ltr">1. Does not happen on native.<div>2. My non-global zones are under /tank/zones/</div><div>3. It uses python - but the calls are all stdlib calls, no magic they are going directly to C.  You can reproduce with same calls on C the system will eventually return ENOENT/ERRNO=2.</div><div>4. Looks to be LX specific.  I also tested in global zone with LOFS.  No issue.</div><div><br></div><div>Thanks!</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 16, 2017 at 12:13 PM, Dan McDonald <span dir="ltr"><<a href="mailto:danmcd@omniti.com" target="_blank">danmcd@omniti.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thank you for doing this!  Some questions in-line:<br>
<span class=""><br>
> On Jan 16, 2017, at 10:40 AM, Mini Trader <<a href="mailto:miniflowtrader@gmail.com">miniflowtrader@gmail.com</a>> wrote:<br>
><br>
> I spent a bit of time yesterday using dtrace and looking at the source.  I believe I found why the system is falsely reporting that the current directory does not exist and have created a simple program to reproduce the problem.  The problem seems to be related to when v_path in the vnode struct goes above a certain number of characters.  This will only break on LOFS if inside the LX zone.  Every time a program performs a chdir('..') and up to another dir the system stored working directory is falsely growing.<br>
<br>
</span>Have you tried this on a native zone (just to make sure) as well?<br>
<span class=""><br>
> Here are the steps to reproduce.<br>
><br>
> 1. Mount a ZFS dataset via LOFS for your LX zone.<br>
> 2. Create a directory in the dataset called test<br>
> 3. In the test directory create another directory called 'Chdir Test'<br>
<br>
</span>Does it matter where (global zone, inside LX zone) these directories gets created?<br>
<span class=""><br>
> 4. Run the program below.  All this is doing is going up a directory and dropping down a directory.  We want to fill up v_path.<br>
<br>
</span>Python...<br>
<span class=""><br>
> 5. The program will bomb before iteration 1000.  Really there should be no limit.<br>
><br>
> import os<br>
> import time<br>
><br>
> #time.sleep(15)<br>
> os.chdir('/tank/bigtest/test')<br>
> for i in xrange(1000):<br>
>     print i<br>
>     os.chdir('Chdir Test')<br>
>     os.getcwd()<br>
>     os.chdir('..')<br>
><br>
> I used the following dtrace to get insight into what was happening (ran it from global zone).<br>
><br>
> dtrace -n 'fbt:genunix:vnodetopath_<wbr>common:entry /pid == $target/ { printf("%s\n",stringof(args[1]<wbr>->v_path)) }' -q -x strsize=4k -p 22482<br>
><br>
> Uncomment the sleep line so that you can determine the PID when running dtrace.<br>
<br>
</span>I'm forwarding this note on to Joyent, so they can see what's going on.  I think this may be an LX bug, but I'm not sure.<br>
<br>
Thanks,<br>
Dan<br>
<br>
</blockquote></div><br></div>