summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/LockFileManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Support/LockFileManager.cpp')
-rw-r--r--llvm/lib/Support/LockFileManager.cpp17
1 files changed, 4 insertions, 13 deletions
diff --git a/llvm/lib/Support/LockFileManager.cpp b/llvm/lib/Support/LockFileManager.cpp
index 61afb79fb22..acb310efeec 100644
--- a/llvm/lib/Support/LockFileManager.cpp
+++ b/llvm/lib/Support/LockFileManager.cpp
@@ -115,24 +115,15 @@ LockFileManager::LockFileManager(StringRef FileName)
}
}
- // Create a hard link from the lock file name. If this succeeds, we're done.
+ // Create a symbolic link from the lock file name. If this succeeds, we're done.
+ // Note that we are using symbolic link because hard links are not supported
+ // by all filesystems.
error_code EC
- = sys::fs::create_hard_link(UniqueLockFileName.str(),
+ = sys::fs::create_symbolic_link(UniqueLockFileName.str(),
LockFileName.str());
if (EC == errc::success)
return;
- // Creating the hard link failed.
-
-#ifdef LLVM_ON_UNIX
- // The creation of the hard link may appear to fail, but if stat'ing the
- // unique file returns a link count of 2, then we can still declare success.
- struct stat StatBuf;
- if (stat(UniqueLockFileName.c_str(), &StatBuf) == 0 &&
- StatBuf.st_nlink == 2)
- return;
-#endif
-
// Someone else managed to create the lock file first. Wipe out our unique
// lock file (it's useless now) and read the process ID from the lock file.
sys::fs::remove(UniqueLockFileName.str());
OpenPOWER on IntegriCloud