Handle each op in its own goroutine.

geesefs-0-30-9
Aaron Jacobs 2015-04-02 10:52:58 +11:00
parent 4d06d8aef8
commit 0461ddac4f
1 changed files with 62 additions and 58 deletions

View File

@ -104,63 +104,67 @@ func (s fileSystemServer) ServeOps(c *fuse.Connection) {
panic(err) panic(err)
} }
switch typed := op.(type) { go s.handleOp(op)
default: }
op.Respond(fuse.ENOSYS) }
case *fuseops.InitOp: func (s fileSystemServer) handleOp(op fuseops.Op) {
s.fs.Init(typed) switch typed := op.(type) {
default:
case *fuseops.LookUpInodeOp: op.Respond(fuse.ENOSYS)
s.fs.LookUpInode(typed)
case *fuseops.InitOp:
case *fuseops.GetInodeAttributesOp: s.fs.Init(typed)
s.fs.GetInodeAttributes(typed)
case *fuseops.LookUpInodeOp:
case *fuseops.SetInodeAttributesOp: s.fs.LookUpInode(typed)
s.fs.SetInodeAttributes(typed)
case *fuseops.GetInodeAttributesOp:
case *fuseops.ForgetInodeOp: s.fs.GetInodeAttributes(typed)
s.fs.ForgetInode(typed)
case *fuseops.SetInodeAttributesOp:
case *fuseops.MkDirOp: s.fs.SetInodeAttributes(typed)
s.fs.MkDir(typed)
case *fuseops.ForgetInodeOp:
case *fuseops.CreateFileOp: s.fs.ForgetInode(typed)
s.fs.CreateFile(typed)
case *fuseops.MkDirOp:
case *fuseops.RmDirOp: s.fs.MkDir(typed)
s.fs.RmDir(typed)
case *fuseops.CreateFileOp:
case *fuseops.UnlinkOp: s.fs.CreateFile(typed)
s.fs.Unlink(typed)
case *fuseops.RmDirOp:
case *fuseops.OpenDirOp: s.fs.RmDir(typed)
s.fs.OpenDir(typed)
case *fuseops.UnlinkOp:
case *fuseops.ReadDirOp: s.fs.Unlink(typed)
s.fs.ReadDir(typed)
case *fuseops.OpenDirOp:
case *fuseops.ReleaseDirHandleOp: s.fs.OpenDir(typed)
s.fs.ReleaseDirHandle(typed)
case *fuseops.ReadDirOp:
case *fuseops.OpenFileOp: s.fs.ReadDir(typed)
s.fs.OpenFile(typed)
case *fuseops.ReleaseDirHandleOp:
case *fuseops.ReadFileOp: s.fs.ReleaseDirHandle(typed)
s.fs.ReadFile(typed)
case *fuseops.OpenFileOp:
case *fuseops.WriteFileOp: s.fs.OpenFile(typed)
s.fs.WriteFile(typed)
case *fuseops.ReadFileOp:
case *fuseops.SyncFileOp: s.fs.ReadFile(typed)
s.fs.SyncFile(typed)
case *fuseops.WriteFileOp:
case *fuseops.FlushFileOp: s.fs.WriteFile(typed)
s.fs.FlushFile(typed)
case *fuseops.SyncFileOp:
case *fuseops.ReleaseFileHandleOp: s.fs.SyncFile(typed)
s.fs.ReleaseFileHandle(typed)
} case *fuseops.FlushFileOp:
s.fs.FlushFile(typed)
case *fuseops.ReleaseFileHandleOp:
s.fs.ReleaseFileHandle(typed)
} }
} }