Write replies to the kernel.

geesefs-0-30-9
Aaron Jacobs 2015-07-24 11:27:03 +10:00
parent b6ae9475ba
commit 9c2f2652f7
2 changed files with 12 additions and 7 deletions

View File

@ -237,14 +237,19 @@ func (c *Connection) ReadOp() (op fuseops.Op, err error) {
fuseID uint64, fuseID uint64,
replyMsg []byte, replyMsg []byte,
opErr error) (err error) { opErr error) (err error) {
// Make sure we destroy the message, as required by
// fuseshim.Connection.ReadMessage.
defer m.Destroy()
// Clean up state for this op. // Clean up state for this op.
c.finishOp(m.Hdr.Opcode, m.Hdr.Unique) c.finishOp(m.Hdr.Opcode, m.Hdr.Unique)
// Send the reply to the kernel. // Send the reply to the kernel.
panic("TODO") err = c.wrapped.WriteToKernel(replyMsg)
if err != nil {
// Destroy the message, as required by fuseshim.Connection.ReadMessage. err = fmt.Errorf("WriteToKernel: %v", err)
m.Destroy() return
}
return return
} }

View File

@ -1061,7 +1061,7 @@ func errorString(err error) string {
return err.Error() return err.Error()
} }
func (c *Conn) writeToKernel(msg []byte) error { func (c *Conn) WriteToKernel(msg []byte) error {
out := (*fusekernel.OutHeader)(unsafe.Pointer(&msg[0])) out := (*fusekernel.OutHeader)(unsafe.Pointer(&msg[0]))
out.Len = uint32(len(msg)) out.Len = uint32(len(msg))
@ -1072,7 +1072,7 @@ func (c *Conn) writeToKernel(msg []byte) error {
} }
func (c *Conn) respond(msg []byte) { func (c *Conn) respond(msg []byte) {
c.writeToKernel(msg) c.WriteToKernel(msg)
} }
type notCachedError struct{} type notCachedError struct{}
@ -1097,7 +1097,7 @@ var (
// //
// A returned ENOENT is translated to a friendlier error. // A returned ENOENT is translated to a friendlier error.
func (c *Conn) sendInvalidate(msg []byte) error { func (c *Conn) sendInvalidate(msg []byte) error {
switch err := c.writeToKernel(msg); err { switch err := c.WriteToKernel(msg); err {
case syscall.ENOENT: case syscall.ENOENT:
return ErrNotCached return ErrNotCached
default: default: