From: Randy Dunlap <rdunlap@xenotime.net>
To: "Myklebust, Trond" <Trond.Myklebust@netapp.com>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Stephen Rothwell <sfr@canb.auug.org.au>,
"linux-next@vger.kernel.org" <linux-next@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
Frederic Weisbecker <fweisbec@gmail.com>
Subject: Re: linux-next: Tree for Feb 2 (trace/events/sunrpc.h)
Date: Thu, 09 Feb 2012 08:14:56 -0800 [thread overview]
Message-ID: <4F33F100.7030706@xenotime.net> (raw)
In-Reply-To: <1328757287.3234.76.camel@lade.trondhjem.org>
On 02/08/2012 07:14 PM, Myklebust, Trond wrote:
> On Wed, 2012-02-08 at 21:37 -0500, Steven Rostedt wrote:
>> [ Added the person responsible for this ]
>>
>> On Thu, 2012-02-02 at 10:10 -0800, Randy Dunlap wrote:
>>> On 02/01/2012 07:45 PM, Stephen Rothwell wrote:
>>>> Hi all,
>>>>
>>>> Changes since 20120201:
>>>
>>>
>>>
>>> include/trace/events/sunrpc.h:69:1: error: implicit declaration of function 'rpc_qname'
>>> include/trace/events/sunrpc.h:69:1: warning: format '%s' expects type 'char *', but argument 9 has type 'int'
>>
>> This has actually nothing to do with the tracepoint itself. The bug is
>> with the rpc_qname().
>>
>> The tracepoint references rpc_qname() and in
>> include/linux/sunrpc/sched.h:
>>
>>
>> #ifdef RPC_DEBUG
>> static inline const char * rpc_qname(const struct rpc_wait_queue *q)
>> {
>> return ((q && q->name) ? q->name : "unknown");
>> }
>> #endif
>>
>> Your config had RPC_DEBUG not set, thus the function was not defined.
>>
>>
>> The below patch fixes the problem with the side effect that the trace
>> data will contain "unknown" for all references to rcu_qname().
>>
>> -- Steve
>>
>> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
>>
>>
>> diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h
>> index f7b2df5..c89ba95 100644
>> --- a/include/linux/sunrpc/sched.h
>> +++ b/include/linux/sunrpc/sched.h
>> @@ -275,6 +275,11 @@ static inline const char * rpc_qname(const struct rpc_wait_queue *q)
>> {
>> return ((q && q->name) ? q->name : "unknown");
>> }
>> +#else
>> +static inline const char * rpc_qname(const struct rpc_wait_queue *q)
>> +{
>> + return "unknown";
>> +}
>> #endif
>>
>> #endif /* _LINUX_SUNRPC_SCHED_H_ */
>
> Hmm.... How about if we rather take that out of the RPC_DEBUG condition?
> I'm assuming that if someone compiles in the tracepoint code, then they
> want to be able to do a full trace independently of whether or not they
> set CONFIG_SYSCTL.
>
> 8<---------------------------------------------------------------------
> From d051b60dcc3032b71cf8d9b96ac4bf24f12b6dcb Mon Sep 17 00:00:00 2001
> From: Trond Myklebust <Trond.Myklebust@netapp.com>
> Date: Wed, 8 Feb 2012 22:01:15 -0500
> Subject: [PATCH] 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: Randy Dunlap <rdunlap@xenotime.net>
Thanks.
> ---
> include/linux/sunrpc/debug.h | 3 +++
> include/linux/sunrpc/sched.h | 15 +++++++++++++--
> net/sunrpc/sched.c | 4 +---
> 3 files changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/include/linux/sunrpc/debug.h b/include/linux/sunrpc/debug.h
> index c2786f2..2a11eb2 100644
> --- a/include/linux/sunrpc/debug.h
> +++ b/include/linux/sunrpc/debug.h
> @@ -34,6 +34,9 @@
> #ifdef CONFIG_SYSCTL
> #define RPC_DEBUG
> #endif
> +#ifdef CONFIG_TRACEPOINTS
> +#define RPC_TRACEPOINTS
> +#endif
> /* #define RPC_PROFILE */
>
> /*
> diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h
> index f7b2df5..22dfc24 100644
> --- a/include/linux/sunrpc/sched.h
> +++ b/include/linux/sunrpc/sched.h
> @@ -195,7 +195,7 @@ struct rpc_wait_queue {
> unsigned char nr; /* # tasks remaining for cookie */
> unsigned short qlen; /* total # tasks waiting in queue */
> struct rpc_timer timer_list;
> -#ifdef RPC_DEBUG
> +#if defined(RPC_DEBUG) || defined(RPC_TRACEPOINTS)
> const char * name;
> #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);
> }
>
> -#ifdef RPC_DEBUG
> +#if defined(RPC_DEBUG) || defined (RPC_TRACEPOINTS)
> static inline const char * rpc_qname(const struct rpc_wait_queue *q)
> {
> 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 /* _LINUX_SUNRPC_SCHED_H_ */
> diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
> index d79c63d..1c570a8 100644
> --- a/net/sunrpc/sched.c
> +++ b/net/sunrpc/sched.c
> @@ -208,9 +208,7 @@ static void __rpc_init_priority_wait_queue(struct rpc_wait_queue *queue, const c
> queue->qlen = 0;
> setup_timer(&queue->timer_list.timer, __rpc_queue_timer_fn, (unsigned long)queue);
> INIT_LIST_HEAD(&queue->timer_list.list);
> -#ifdef RPC_DEBUG
> - queue->name = qname;
> -#endif
> + rpc_assign_waitqueue_name(queue, qname);
> }
>
> void rpc_init_priority_wait_queue(struct rpc_wait_queue *queue, const char *qname)
--
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
next prev parent reply other threads:[~2012-02-09 16:15 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-02 3:45 linux-next: Tree for Feb 2 Stephen Rothwell
2012-02-02 18:07 ` linux-next: Tree for Feb 2 (media/radio/wl128x) Randy Dunlap
2012-02-02 17:20 ` Manjunatha Halli
2012-02-02 17:20 ` Manjunatha Halli
2012-02-02 18:40 ` [PATCH] " Randy Dunlap
2012-02-02 18:20 ` Manjunatha Halli
2012-02-02 18:20 ` Manjunatha Halli
2012-02-05 20:32 ` Randy Dunlap
2012-02-02 18:10 ` linux-next: Tree for Feb 2 (trace/events/sunrpc.h) Randy Dunlap
2012-02-09 2:37 ` Steven Rostedt
2012-02-09 3:14 ` Myklebust, Trond
2012-02-09 3:14 ` Myklebust, Trond
2012-02-09 3:30 ` Steven Rostedt
2012-02-09 16:14 ` Randy Dunlap [this message]
2012-02-02 18:24 ` linux-next: Tree for Feb 2 (fs/jffs2) Randy Dunlap
2012-02-02 18:24 ` Randy Dunlap
2012-02-02 23:44 ` Stephen Rothwell
2012-02-02 23:44 ` Stephen Rothwell
2012-02-03 0:41 ` Brian Norris
2012-02-03 0:41 ` Brian Norris
2012-02-03 5:37 ` Artem Bityutskiy
2012-02-03 5:37 ` Artem Bityutskiy
2012-02-02 23:28 ` linux-next: Tree for Feb 2 (kvmtool) Randy Dunlap
2012-03-27 10:19 ` Pekka Enberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F33F100.7030706@xenotime.net \
--to=rdunlap@xenotime.net \
--cc=Trond.Myklebust@netapp.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-next@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=sfr@canb.auug.org.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.