diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-02-08 22:01:15 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-02-15 00:19:51 -0500 |
commit | 2f09c24216cd789653eb8efbf8be88409eb8d581 (patch) | |
tree | 8ad3049b8303e4537f03ce3c11abdad468cd0803 /include/linux/sunrpc | |
parent | 685f50f9188ac1e8244d0340a9d6ea36b6136cec (diff) |
SUNRPC: Ensure that we can trace waitqueues when !defined(CONFIG_SYSCTL)
The tracepoint code relies on the queue->name being defined in order to
be able to display the name of the waitqueue on which an RPC task is
sleeping.
Reported-by: Randy Dunlap <rdunlap@xenotime.net>
Reported-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Acked-by: Randy Dunlap <rdunlap@xenotime.net>
Diffstat (limited to 'include/linux/sunrpc')
-rw-r--r-- | include/linux/sunrpc/debug.h | 3 | ||||
-rw-r--r-- | include/linux/sunrpc/sched.h | 15 |
2 files changed, 16 insertions, 2 deletions
diff --git a/include/linux/sunrpc/debug.h b/include/linux/sunrpc/debug.h index c2786f20016f..2a11eb278f64 100644 --- a/include/linux/sunrpc/debug.h +++ b/include/linux/sunrpc/debug.h | |||
@@ -34,6 +34,9 @@ | |||
34 | #ifdef CONFIG_SYSCTL | 34 | #ifdef CONFIG_SYSCTL |
35 | #define RPC_DEBUG | 35 | #define RPC_DEBUG |
36 | #endif | 36 | #endif |
37 | #ifdef CONFIG_TRACEPOINTS | ||
38 | #define RPC_TRACEPOINTS | ||
39 | #endif | ||
37 | /* #define RPC_PROFILE */ | 40 | /* #define RPC_PROFILE */ |
38 | 41 | ||
39 | /* | 42 | /* |
diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h index f7b2df5252b0..22dfc24013b6 100644 --- a/include/linux/sunrpc/sched.h +++ b/include/linux/sunrpc/sched.h | |||
@@ -195,7 +195,7 @@ struct rpc_wait_queue { | |||
195 | unsigned char nr; /* # tasks remaining for cookie */ | 195 | unsigned char nr; /* # tasks remaining for cookie */ |
196 | unsigned short qlen; /* total # tasks waiting in queue */ | 196 | unsigned short qlen; /* total # tasks waiting in queue */ |
197 | struct rpc_timer timer_list; | 197 | struct rpc_timer timer_list; |
198 | #ifdef RPC_DEBUG | 198 | #if defined(RPC_DEBUG) || defined(RPC_TRACEPOINTS) |
199 | const char * name; | 199 | const char * name; |
200 | #endif | 200 | #endif |
201 | }; | 201 | }; |
@@ -270,11 +270,22 @@ static inline int rpc_task_has_priority(struct rpc_task *task, unsigned char pri | |||
270 | return (task->tk_priority + RPC_PRIORITY_LOW == prio); | 270 | return (task->tk_priority + RPC_PRIORITY_LOW == prio); |
271 | } | 271 | } |
272 | 272 | ||
273 | #ifdef RPC_DEBUG | 273 | #if defined(RPC_DEBUG) || defined (RPC_TRACEPOINTS) |
274 | static inline const char * rpc_qname(const struct rpc_wait_queue *q) | 274 | static inline const char * rpc_qname(const struct rpc_wait_queue *q) |
275 | { | 275 | { |
276 | return ((q && q->name) ? q->name : "unknown"); | 276 | return ((q && q->name) ? q->name : "unknown"); |
277 | } | 277 | } |
278 | |||
279 | static inline void rpc_assign_waitqueue_name(struct rpc_wait_queue *q, | ||
280 | const char *name) | ||
281 | { | ||
282 | q->name = name; | ||
283 | } | ||
284 | #else | ||
285 | static inline void rpc_assign_waitqueue_name(struct rpc_wait_queue *q, | ||
286 | const char *name) | ||
287 | { | ||
288 | } | ||
278 | #endif | 289 | #endif |
279 | 290 | ||
280 | #endif /* _LINUX_SUNRPC_SCHED_H_ */ | 291 | #endif /* _LINUX_SUNRPC_SCHED_H_ */ |