From 2948c349e28c409d5e7c636b1345ce00563f9e43 Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Fri, 1 May 2015 11:34:52 +1000 Subject: [PATCH] Added a flag for per-PID tracing. --- fuseops/common_op.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/fuseops/common_op.go b/fuseops/common_op.go index 62c03cd..f8dae2d 100644 --- a/fuseops/common_op.go +++ b/fuseops/common_op.go @@ -15,6 +15,7 @@ package fuseops import ( + "flag" "reflect" "strings" "sync" @@ -24,6 +25,13 @@ import ( "golang.org/x/net/context" ) +var fPerPIDTracing = flag.Bool( + "fuse.per_pid_tracing", + false, + "Enable a hacky mode that uses reqtrace to group all ops from each "+ + "individual PID. Not a good idea to use in production; races, bugs, and "+ + "resource leaks likely lurk.") + // A helper for embedding common behavior. type commonOp struct { opType string @@ -52,12 +60,27 @@ func describeOpType(t reflect.Type) (desc string) { return } +func (o *commonOp) maybeTraceByPID(in context.Context) (out context.Context) { + // Is there anything to do? + if !*fPerPIDTracing { + out = in + return + } + + // TODO(jacobsa): Do something interesting. + out = in + return +} + func (o *commonOp) init( ctx context.Context, opType reflect.Type, r bazilfuse.Request, log func(int, string, ...interface{}), opsInFlight *sync.WaitGroup) { + // Set up a context that reflects per-PID tracing if appropriate. + ctx = o.maybeTraceByPID(ctx) + // Initialize basic fields. o.opType = describeOpType(opType) o.r = r