diff --git a/connection.go b/connection.go index 702bbc8..0cca553 100644 --- a/connection.go +++ b/connection.go @@ -471,7 +471,7 @@ func (c *Connection) Reply(ctx context.Context, opErr error) { // Debug logging if c.debugLogger != nil { if opErr == nil { - c.debugLog(fuseID, 1, "-> OK") + c.debugLog(fuseID, 1, "-> OK (%s)", describeResponse(op)) } else { c.debugLog(fuseID, 1, "-> Error: %q", opErr.Error()) } diff --git a/debug.go b/debug.go index 06b12c8..1cf95bd 100644 --- a/debug.go +++ b/debug.go @@ -45,6 +45,16 @@ func describeRequest(op interface{}) (s string) { addComponent("inode %v", f.Interface()) } + // Include a parent inode number, if available. + if f := v.FieldByName("Parent"); f.IsValid() { + addComponent("parent %v", f.Interface()) + } + + // Include a name, if available. + if f := v.FieldByName("Name"); f.IsValid() { + addComponent("name %q", f.Interface()) + } + // Handle special cases. switch typed := op.(type) { case *interruptOp: @@ -53,10 +63,6 @@ func describeRequest(op interface{}) (s string) { case *unknownOp: addComponent("opcode %d", typed.OpCode) - case *fuseops.LookUpInodeOp: - addComponent("parent %d", typed.Parent) - addComponent("name %q", typed.Name) - case *fuseops.SetInodeAttributesOp: if typed.Size != nil { addComponent("size %d", *typed.Size) @@ -93,3 +99,22 @@ func describeRequest(op interface{}) (s string) { // Otherwise, include the extra info. return fmt.Sprintf("%s (%s)", opName(op), strings.Join(components, ", ")) } + +func describeResponse(op interface{}) string { + v := reflect.ValueOf(op).Elem() + + // We will set up a comma-separated list of components. + var components []string + addComponent := func(format string, v ...interface{}) { + components = append(components, fmt.Sprintf(format, v...)) + } + + // Include a resulting inode number, if available. + if f := v.FieldByName("Entry"); f.IsValid() { + if entry, ok := f.Interface().(fuseops.ChildInodeEntry); ok { + addComponent("inode %v", entry.Child) + } + } + + return fmt.Sprintf("%s", strings.Join(components, ", ")) +}