Commit 5ae9856c authored by Aaron Jacobs's avatar Aaron Jacobs

Define that Server.ServeOps must wait for in-flights.

parent 100c7af2
......@@ -74,7 +74,7 @@ type FileSystem interface {
// cf. http://goo.gl/jnkHPO, fuse-devel thread "Fuse guarantees on concurrent
// requests").
func NewFileSystemServer(fs FileSystem) fuse.Server {
return fileSystemServer{
return &fileSystemServer{
fs: fs,
}
}
......@@ -84,7 +84,9 @@ type fileSystemServer struct {
opsInFlight sync.WaitGroup
}
func (s fileSystemServer) ServeOps(c *fuse.Connection) {
func (s *fileSystemServer) ServeOps(c *fuse.Connection) {
defer s.opsInFlight.Wait()
for {
op, err := c.ReadOp()
if err == io.EOF {
......@@ -100,7 +102,9 @@ func (s fileSystemServer) ServeOps(c *fuse.Connection) {
}
}
func (s fileSystemServer) handleOp(op fuseops.Op) {
func (s *fileSystemServer) handleOp(op fuseops.Op) {
defer s.opsInFlight.Done()
// Delay if requested.
if *fRandomDelays {
const delayLimit = 100 * time.Microsecond
......@@ -176,5 +180,4 @@ func (s fileSystemServer) handleOp(op fuseops.Op) {
}
op.Respond(err)
s.opsInFlight.Done()
}
......@@ -26,7 +26,8 @@ import (
// A type that knows how to serve ops read from a connection.
type Server interface {
// Read and serve ops from the supplied connection until EOF.
// Read and serve ops from the supplied connection until EOF. Do not return
// until all operations have been responded to.
ServeOps(*Connection)
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment