This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author neologix
Recipients amcnabb, hynek, neologix, r.david.murray
Date 2012-05-05.13:27:29
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <>
In-reply-to <>
> 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):

> Instead, it tries a mkdir and looks if it gets an EEXIST.

Actually, EEXIST is just caught to cope with race conditions (i.e. the
directory got created in between, TOCTTOU race).

> 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 ;-)
Date User Action Args
2012-05-05 13:27:30neologixsetrecipients: + neologix, amcnabb, r.david.murray, hynek
2012-05-05 13:27:29neologixlinkissue14702 messages
2012-05-05 13:27:29neologixcreate