From: Sebastian Andrzej Siewior Date: Fri, 10 Jun 2016 18:04:51 +0000 (+0200) Subject: utils/mkdir-p: check if dir exists also after mkdir failed X-Git-Tag: OpenSSL_1_1_0-pre6~357 X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=70a56b914772e6b21cda2a5742817ae4bb7290f1 utils/mkdir-p: check if dir exists also after mkdir failed with "make install -j8" it happens very often that two or more make instances are creating the same directory in parallel. As a result one instace creates the directory and second mkdir fails because the directory exists already (but it did not while testing for it earlier). Signed-off-by: Sebastian Andrzej Siewior Reviewed-by: Matt Caswell Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/1204) --- diff --git a/util/mkdir-p.pl b/util/mkdir-p.pl index 4f44266802..328060243f 100755 --- a/util/mkdir-p.pl +++ b/util/mkdir-p.pl @@ -33,6 +33,12 @@ sub do_mkdir_p { do_mkdir_p($parent); } - mkdir($dir, 0777) || die "Cannot create directory $dir: $!\n"; + unless (mkdir($dir, 0777)) { + if (-d $dir) { + # We raced against another instance doing the same thing. + return; + } + die "Cannot create directory $dir: $!\n"; + } print "created directory `$dir'\n"; }