init: Probe whether the filesystem supports fifos, and if not, disable ssh connection caching.
This commit is contained in:
parent
0a74f4931a
commit
bd5d664a0c
3 changed files with 25 additions and 0 deletions
20
Init.hs
20
Init.hs
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue