Hynek Schlawack <h...@ox.cx> added the comment:

>> Charles, I don't think you can blame autofs here. The problem at hand is 
>> that makedirs() never checks whether the directory exists (that would 
>> trigger the mount too I presume).
> 
> Yes, it does. Have a look at line 148:
> """
>      if head and tail and not path.exists(head):
> """

Now that's embarrassing. I take everything back and claim the opposite.
 
>> If you try that approach in this case where /net is non-writable and 
>> /net/prodigy appears only on demand, it fails with an EPERM instead.
> 
> Actually, no.
> makedirs() does a recursive depth-first traversal:
> makedirs('/net/prodigy/foo') will actually do something like:
> """
> stat('/net/prodigy/foo') == ENOENT
> stat('/net/prodigy') == ENONENT
> mkdir('/net/prodigy') == EPERM
> """
> The NFS mount should appear upon the first - or second - stat() call,
> before mkdir().
> 
> But I'd like to be sure about that, that's why I think an strace()
> output would be useful ;-)

I glanced over coreutil's mkdir code and it seems that it changes the directory 
while creating the directories. I suspect it's related to that. At least it 
does no fstab parsing. ;) The code is wayyy too intricate to be grokable at 
glancing though. mkdir -p seems to be quite a can of worms.


Andrew, please send straces. :)

----------
keywords:  -easy

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue14702>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to