delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2005/10/12/10:47:15

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
From: ericblake AT comcast DOT net (Eric Blake)
To: bug-coreutils AT gnu DOT org
Cc: cygwin AT cygwin DOT com
Subject: mkdir -p and EROFS
Date: Wed, 12 Oct 2005 14:47:01 +0000
Message-Id: <101220051447.16978.434D21E5000D25EB0000425222007610640A050E040D0C079D0A@comcast.net>

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

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019