diff --git a/cmd/ipfs/mount_unix.go b/cmd/ipfs/mount_unix.go index 84fbc9cf61ad8fce4765b03370abe7dde8830977..87cc2774edae65b9c2ea64515481ebd95d5856f2 100644 --- a/cmd/ipfs/mount_unix.go +++ b/cmd/ipfs/mount_unix.go @@ -4,6 +4,9 @@ package main import ( "fmt" + "runtime" + "strings" + "syscall" "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gonuts/flag" "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/commander" @@ -33,6 +36,9 @@ func init() { } func mountCmd(c *commander.Command, inp []string) error { + if err := osxFuseCheck(); err != nil { + return err + } cc, err := setupCmdContext(c, true) if err != nil { @@ -92,3 +98,23 @@ func mountIpns(node *core.IpfsNode, nsdir, fsdir string) <-chan error { return done } + +func osxFuseCheck() error { + // on OSX, check FUSE version. + if runtime.GOOS != "darwin" { + return nil + } + + ov, err := syscall.Sysctl("osxfuse.version.number") + if err != nil { + return err + } + + if strings.HasPrefix(ov, "2.7.") || strings.HasPrefix(ov, "2.8.") { + return nil + } + + return fmt.Errorf("osxfuse version %s not supported.\n%s\n%s", ov, + "Older versions of osxfuse have kernel panic bugs; please upgrade!", + "https://github.com/jbenet/go-ipfs/issues/177") +}