init: Probe whether the filesystem supports fifos, and if not, disable ssh connection caching.

This commit is contained in:
Joey Hess 2013-04-04 13:14:55 -04:00
parent 0a74f4931a
commit bd5d664a0c
3 changed files with 25 additions and 0 deletions

20
Init.hs
View file

@ -18,6 +18,7 @@ import Utility.TempFile
import Utility.Network
import qualified Git
import qualified Git.LsFiles
import qualified Git.Config
import qualified Annex.Branch
import Logs.UUID
import Annex.Version
@ -44,6 +45,7 @@ initialize mdescription = do
prepUUID
setVersion defaultVersion
checkCrippledFileSystem
checkFifoSupport
Annex.Branch.create
gitPreCommitHookWrite
createInodeSentinalFile
@ -144,3 +146,21 @@ checkCrippledFileSystem = whenM probeCrippledFileSystem $ do
void $ liftIO clean
setDirect True
setVersion directModeVersion
probeFifoSupport :: Annex Bool
probeFifoSupport = do
tmp <- fromRepo gitAnnexTmpDir
let f = tmp </> "gaprobe"
liftIO $ do
createDirectoryIfMissing True tmp
nukeFile f
createNamedPipe f ownerReadMode
ms <- tryIO $ getFileStatus f
nukeFile f
return $ either (const False) isNamedPipe ms
checkFifoSupport :: Annex ()
checkFifoSupport = unlessM probeFifoSupport $ do
warning "Detected a filesystem without fifo support."
warning "Disabling ssh connection caching."
setConfig (annexConfig "sshcaching") (Git.Config.boolConfig False)