mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
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>
This commit is contained in:
parent
685f50f918
commit
2f09c24216
3 changed files with 17 additions and 5 deletions
|
@ -34,6 +34,9 @@
|
||||||
#ifdef CONFIG_SYSCTL
|
#ifdef CONFIG_SYSCTL
|
||||||
#define RPC_DEBUG
|
#define RPC_DEBUG
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CONFIG_TRACEPOINTS
|
||||||
|
#define RPC_TRACEPOINTS
|
||||||
|
#endif
|
||||||
/* #define RPC_PROFILE */
|
/* #define RPC_PROFILE */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -195,7 +195,7 @@ struct rpc_wait_queue {
|
||||||
unsigned char nr; /* # tasks remaining for cookie */
|
unsigned char nr; /* # tasks remaining for cookie */
|
||||||
unsigned short qlen; /* total # tasks waiting in queue */
|
unsigned short qlen; /* total # tasks waiting in queue */
|
||||||
struct rpc_timer timer_list;
|
struct rpc_timer timer_list;
|
||||||
#ifdef RPC_DEBUG
|
#if defined(RPC_DEBUG) || defined(RPC_TRACEPOINTS)
|
||||||
const char * name;
|
const char * name;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -270,11 +270,22 @@ static inline int rpc_task_has_priority(struct rpc_task *task, unsigned char pri
|
||||||
return (task->tk_priority + RPC_PRIORITY_LOW == prio);
|
return (task->tk_priority + RPC_PRIORITY_LOW == prio);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RPC_DEBUG
|
#if defined(RPC_DEBUG) || defined (RPC_TRACEPOINTS)
|
||||||
static inline const char * rpc_qname(const struct rpc_wait_queue *q)
|
static inline const char * rpc_qname(const struct rpc_wait_queue *q)
|
||||||
{
|
{
|
||||||
return ((q && q->name) ? q->name : "unknown");
|
return ((q && q->name) ? q->name : "unknown");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void rpc_assign_waitqueue_name(struct rpc_wait_queue *q,
|
||||||
|
const char *name)
|
||||||
|
{
|
||||||
|
q->name = name;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline void rpc_assign_waitqueue_name(struct rpc_wait_queue *q,
|
||||||
|
const char *name)
|
||||||
|
{
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_SUNRPC_SCHED_H_ */
|
#endif /* _LINUX_SUNRPC_SCHED_H_ */
|
||||||
|
|
|
@ -208,9 +208,7 @@ static void __rpc_init_priority_wait_queue(struct rpc_wait_queue *queue, const c
|
||||||
queue->qlen = 0;
|
queue->qlen = 0;
|
||||||
setup_timer(&queue->timer_list.timer, __rpc_queue_timer_fn, (unsigned long)queue);
|
setup_timer(&queue->timer_list.timer, __rpc_queue_timer_fn, (unsigned long)queue);
|
||||||
INIT_LIST_HEAD(&queue->timer_list.list);
|
INIT_LIST_HEAD(&queue->timer_list.list);
|
||||||
#ifdef RPC_DEBUG
|
rpc_assign_waitqueue_name(queue, qname);
|
||||||
queue->name = qname;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rpc_init_priority_wait_queue(struct rpc_wait_queue *queue, const char *qname)
|
void rpc_init_priority_wait_queue(struct rpc_wait_queue *queue, const char *qname)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue