bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

mkdir -p and EROFS


From: Eric Blake
Subject: mkdir -p and EROFS
Date: Wed, 12 Oct 2005 14:47:01 +0000

The algorithm change between 5.3.0 and 5.90 in lib/mkdir-p.c to
try mkdir() first instead of stat(), and key off of EEXIST, breaks
when mkdir() fails with EROFS on an intermediate directory when
the writable directory has been mounted inside a read-only tree.
For example, on cygwin:

$ mkdir -p //EBLAKE/share/dir
mkdir: cannot create directory `//EBLAKE': Read-only file system

where // and //EBLAKE are read-only, //EBLAKE/share exists and
is writable, and //EBLAKE/share/dir does not exist.  The failure
comes because mkdir("//EBLAKE") fails with EROFS, which, as far
as I can tell, is permitted by POSIX since // (the parent of
//EBLAKE) is not writable, even though I would have preferred
EEXIST.

I have already raised this with the cygwin developers, who
have expressed their desire to leave things as is rather than
trying to return EEXIST in the case that an intermediate
directory in the read-only file system exists, as it is much faster
to blindly return EROFS than to stat the directory name to check
for existance.  So is it worth a patch to mkdir-p.c to treat EROFS
as an indicator to perform a followup stat() (similar to the ENOSYS
hack used for NFS mounts on Solaris)?

--
Eric Blake




reply via email to

[Prev in Thread] Current Thread [Next in Thread]