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 Utility.Network
import qualified Git import qualified Git
import qualified Git.LsFiles import qualified Git.LsFiles
import qualified Git.Config
import qualified Annex.Branch import qualified Annex.Branch
import Logs.UUID import Logs.UUID
import Annex.Version import Annex.Version
@ -44,6 +45,7 @@ initialize mdescription = do
prepUUID prepUUID
setVersion defaultVersion setVersion defaultVersion
checkCrippledFileSystem checkCrippledFileSystem
checkFifoSupport
Annex.Branch.create Annex.Branch.create
gitPreCommitHookWrite gitPreCommitHookWrite
createInodeSentinalFile createInodeSentinalFile
@ -144,3 +146,21 @@ checkCrippledFileSystem = whenM probeCrippledFileSystem $ do
void $ liftIO clean void $ liftIO clean
setDirect True setDirect True
setVersion directModeVersion 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)

2
debian/changelog vendored
View file

@ -28,6 +28,8 @@ git-annex (4.20130324) UNRELEASED; urgency=low
from git. from git.
* Update working tree files fully atomically. * Update working tree files fully atomically.
* webapp: Improved transfer queue management. * webapp: Improved transfer queue management.
* init: Probe whether the filesystem supports fifos, and if not,
disable ssh connection caching.
-- Joey Hess <joeyh@debian.org> Mon, 25 Mar 2013 10:21:46 -0400 -- Joey Hess <joeyh@debian.org> Mon, 25 Mar 2013 10:21:46 -0400

View file

@ -61,3 +61,6 @@ However ssh connection caching breaks things on NTFS volumes. If I turn off con
but it would be nifty if git-annex could detect the filesystem type and do The Right Thing. but it would be nifty if git-annex could detect the filesystem type and do The Right Thing.
Thanks for all the work on git-annex -- it's an awesome project! Thanks for all the work on git-annex -- it's an awesome project!
> [[done]], `git annex init` now probes for fifo support and disables ssh
> connection caching if it cannot make one. --[[Joey]]