diff --git a/fuseutil/file_system.go b/fuseutil/file_system.go index 511e0a7..40650a8 100644 --- a/fuseutil/file_system.go +++ b/fuseutil/file_system.go @@ -18,6 +18,7 @@ import ( "flag" "io" "math/rand" + "sync" "time" "github.com/jacobsa/fuse" @@ -73,11 +74,14 @@ type FileSystem interface { // cf. http://goo.gl/jnkHPO, fuse-devel thread "Fuse guarantees on concurrent // requests"). func NewFileSystemServer(fs FileSystem) fuse.Server { - return fileSystemServer{fs} + return fileSystemServer{ + fs: fs, + } } type fileSystemServer struct { - fs FileSystem + fs FileSystem + opsInFlight sync.WaitGroup } func (s fileSystemServer) ServeOps(c *fuse.Connection) { @@ -91,6 +95,7 @@ func (s fileSystemServer) ServeOps(c *fuse.Connection) { panic(err) } + s.opsInFlight.Add(1) go s.handleOp(op) } } @@ -171,4 +176,5 @@ func (s fileSystemServer) handleOp(op fuseops.Op) { } op.Respond(err) + s.opsInFlight.Done() }