diff --git a/cmd/cmount/fs.go b/cmd/cmount/fs.go index ae91e91ab..db4b78862 100644 --- a/cmd/cmount/fs.go +++ b/cmd/cmount/fs.go @@ -1,6 +1,6 @@ // +build cmount // +build cgo -// +build linux darwin freebsd windows +// +build linux darwin freebsd openbsd windows package cmount @@ -8,6 +8,7 @@ import ( "io" "os" "path" + "runtime" "sync" "time" @@ -225,6 +226,12 @@ func (fsys *FS) Readdir(dirPath string, // We can't seek in directories and FUSE should know that so // return an error if ofst is ever set. if ofst > 0 { + // However openbsd doesn't seem to know this - perhaps a bug in its + // FUSE implementation or a bug in cgofuse? + // See: https://github.com/billziss-gh/cgofuse/issues/49 + if runtime.GOOS == "openbsd" { + return 0 + } return -fuse.ESPIPE } diff --git a/cmd/cmount/mount.go b/cmd/cmount/mount.go index 50c755985..49bee8eee 100644 --- a/cmd/cmount/mount.go +++ b/cmd/cmount/mount.go @@ -4,7 +4,7 @@ // +build cmount // +build cgo -// +build linux darwin freebsd windows +// +build linux darwin freebsd openbsd windows package cmount @@ -37,13 +37,17 @@ func mountOptions(VFS *vfs.VFS, device string, mountpoint string, opt *mountlib. options = []string{ "-o", "fsname=" + device, "-o", "subtype=rclone", - "-o", fmt.Sprintf("max_readahead=%d", opt.MaxReadAhead), "-o", fmt.Sprintf("attr_timeout=%g", opt.AttrTimeout.Seconds()), - // This causes FUSE to supply O_TRUNC with the Open - // call which is more efficient for cmount. However - // it does not work with cgofuse on Windows with - // WinFSP so cmount must work with or without it. - "-o", "atomic_o_trunc", + } + if runtime.GOOS != "openbsd" { + options = append(options, + "-o", fmt.Sprintf("max_readahead=%d", opt.MaxReadAhead), + // This causes FUSE to supply O_TRUNC with the Open + // call which is more efficient for cmount. However + // it does not work with cgofuse on Windows with + // WinFSP so cmount must work with or without it. + "-o", "atomic_o_trunc", + ) } if opt.DebugFUSE { options = append(options, "-o", "debug") diff --git a/cmd/cmount/mount_test.go b/cmd/cmount/mount_test.go index bb8b507b8..d68d2af20 100644 --- a/cmd/cmount/mount_test.go +++ b/cmd/cmount/mount_test.go @@ -1,6 +1,6 @@ // +build cmount // +build cgo -// +build linux darwin freebsd windows +// +build linux darwin freebsd openbsd windows // +build !race !windows // FIXME this doesn't work with the race detector under Windows either diff --git a/cmd/cmount/mount_unsupported.go b/cmd/cmount/mount_unsupported.go index 57d820e22..d54565157 100644 --- a/cmd/cmount/mount_unsupported.go +++ b/cmd/cmount/mount_unsupported.go @@ -1,6 +1,6 @@ // Build for cmount for unsupported platforms to stop go complaining // about "no buildable Go source files " -// +build !linux,!darwin,!freebsd,!windows !cgo !cmount +// +build !linux,!darwin,!freebsd,!openbsd,!windows !cgo !cmount package cmount