From: Wu Fengguang <fengguang.wu@intel.com>
To: Dave Chinner <david@fromorbit.com>
Cc: Steven Rostedt <rostedt@goodmis.org>,
"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
Curt Wohlgemuth <curtw@google.com>, Jan Kara <jack@suse.cz>,
Christoph Hellwig <hch@infradead.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [RFC][PATCH] writeback: Unduplicate writeback reason
Date: Wed, 14 Dec 2011 21:16:19 +0800 [thread overview]
Message-ID: <20111214131619.GA17225@localhost> (raw)
In-Reply-To: <20111214032844.GL3179@dastard>
On Wed, Dec 14, 2011 at 11:28:44AM +0800, Dave Chinner wrote:
> On Tue, Dec 13, 2011 at 08:14:00PM -0500, Steven Rostedt wrote:
> > Names of the writeback reasons are used in both the main kernel as well
> > as for parsing the tracepoint format file. Instead of duplicating the
> > names in two locations making it likely that they may become out of
> > sync, use some macro magic to make sure all the names stay in sync. Any
> > update only needs to happen in one spot for it to take place in all
> > locations.
> >
> > Note, this is an RFC patch, and it probably needs much better comments
> > (well, it currently has no comments), and the C() macro probably should
> > have a different name too.
>
> I'm not sure this is a pattern we want to repeat all over the place -
> print_symbolic() is quite widely used and adding macro redefinitions
> all over the place doesn't fill me with joy.
Yeah, unfortunately...
> AFAICT this code doesn't need a declared array to work so you can
You mean the string array wb_reason_name[]? Ah it's actually not used
for now -- until there comes the (planned) writeback stats patch to
show the reason names in some debugfs/sysfs interface.
So for the upcoming 3.2, wb_reason_name[] can be removed to avoid the
duplication. However the question still remains how exactly are we
going to re-introduce it in future?
> just use a preprocessor construct like this (as used in XFS):
>
> #define value_1 1
> #define value_2 2
> .....
>
> or
>
> enum {
> value_1 = 1,
> value_2 = 2,
> .....
> }
>
> followed by:
>
> #define VALUES \
> { value_1, "Value 1" }, \
> { value_2, "Value 2" }, \
> .....
>
> And it just uses print_symbolic(__entry->value, VALUES); to print
> them out.
If using the above macros, wb_reason_name[] can be defined as
static const struct trace_print_flags wb_reason_name[] = { VALUES };
and reference it in this way
wb_reason_name[reason][1]
The first element is redundant info and will be ignored, because
wb_reason_name[reason][0] == reason
> If this construct does everything requiredi, then I think it is a
> much better pattern to use because it's easy to maintain, doesn't
> require an array to be declared in a C file and doesn't require
> macro tricks to do it's job....
Hmm, I looked through XFS tracing code and find no use case like the
wb_reason_name[]. That is, the XFS symbolic names are only used for
tracing output and there is no sharing with debugfs/sysfs outputs.
So we may be talking about different situations.
Thanks,
Fengguang
next prev parent reply other threads:[~2011-12-14 13:16 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-14 0:31 [PATCH] writeback: show writeback reason with __print_symbolic Wu Fengguang
2011-12-14 1:14 ` [RFC][PATCH] writeback: Unduplicate writeback reason Steven Rostedt
2011-12-14 1:49 ` Wu Fengguang
2011-12-14 2:56 ` Steven Rostedt
2011-12-14 3:28 ` Dave Chinner
2011-12-14 13:16 ` Wu Fengguang [this message]
2011-12-15 5:24 ` Dave Chinner
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=20111214131619.GA17225@localhost \
--to=fengguang.wu@intel.com \
--cc=curtw@google.com \
--cc=david@fromorbit.com \
--cc=hch@infradead.org \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
/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.