From: David Brownell <david-b@pacbell.net>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Felipe Balbi <felipe.balbi@nokia.com>,
linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org,
Tony Lindgren <tony@atomide.com>,
Wim Van Sebroeck <wim@iguana.be>,
Andrew Morton <akpm@linux-foundation.org>,
"George G. Davis" <gdavis@mvista.com>
Subject: Re: [PATCH 3/5] watchdog: cleanup a bit omap_wdt.c
Date: Sat, 20 Sep 2008 10:18:41 -0700 [thread overview]
Message-ID: <200809201018.42127.david-b@pacbell.net> (raw)
In-Reply-To: <20080920161111.GA9873@flint.arm.linux.org.uk>
> > > > Oh, I see where "omap_wdt_dev" (global) gets used. The normal
> > > > way to do stuff like that is using void* pointers placed in the
> > > > inode and file structures for exactly that purpose.
> > >
> > > You don't have an inode or a file structure until open() is called -
> > > at which point it _is_ placed in file->private_data. So this driver
> > > is doing the right thing.
> >
> > Well, the conventional thing for misc drivers, at any rate. In
> > various other drivers, inode->i_private is set up earlier, just
> > to avoid such a need for globals (or equivalent).
>
> None that I know about - generally other drivers look up their private
> data in some kind of array and assign to file->private_data in their
> open() method - in much the same way that watchdog and misc drivers do.
Yet i_private gets set up *somewhere* else that field wouldn't exist.
Look around; you'll see it gets used. (My quick grep started in the
USB tree, where it turns out both usbfs and gadgetfs use it.)
When the inode stays permanently in memory that's simple to manage.
Regardless, for misc drivers the scheme I mentioned is equally simple:
--- a/drivers/char/misc.c
+++ b/drivers/char/misc.c
@@ -147,6 +147,7 @@ static int misc_open(struct inode * inode, struct file * file)
err = 0;
old_fops = file->f_op;
file->f_op = new_fops;
+ inode->i_private = c;
if (file->f_op->open) {
err=file->f_op->open(inode,file);
if (err) {
> The simplest solution is as the watchdog drivers are doing.
I'll disagree. It requires extra state even in this simple case;
state of a generically undesirable flavor (global). And likewise,
it requires lookup mechanisms ... which if you look around, tend
to be rather error prone, locking often gets goofed up there.
Familiar and simple != simplest, != best. It will often become
cargo cult programming.
> And anyway, the point of these patches is not to fix issues like this.
> It's to get what's in mainline updated to what's in the OMAP tree so
> stuff can move forwards. So, let's not go down rabbit warrens trying
> to find obscure new issues which lots of other code already "suffers"
> from.
Right, my original comment pointed out one thing that was clearly
wrong (extra/unused struct field) and one odd thing (the global).
You said "not that odd, here's why"; I said "hmm, well OK but it's
still got problem X, which isn't for fixing in this patchset".
(Leaving the extra/unused struct field still an issue. It came
from the original d99241c86f6ccd1226935f8f59d3bb17a4186b85 patch
which made the OMAP tree diverge from upstream. I suspect that
one didn't get much review, partly because at that time OMAP3 was
much less available than now. Pushing that upstream may not even
have been an option then.)
> We're into the third day on this one driver. If every OMAP driver takes
> this long ...
That seems like a strange way to account things. It presumes
that the only time review comments should be accepted is within
a day of the patch getting posted. Regardless of whether the
reviewer has time at that point.
If you *really* wanted to avoid wasting time you wouldn't have
replied to my previous post, which agreed that one point I raised
was a non-issue for this particular patch series.
- Dave
next prev parent reply other threads:[~2008-09-20 17:18 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-19 10:32 [PATCH 0/5] omap watchdog updaes Felipe Balbi
2008-09-19 10:32 ` [PATCH 1/5] watchdog: sync linux-omap changes Felipe Balbi
2008-09-19 10:32 ` [PATCH 2/5] watchdog: another ioremap() fix Felipe Balbi
2008-09-19 10:32 ` [PATCH 3/5] watchdog: cleanup a bit omap_wdt.c Felipe Balbi
2008-09-19 10:32 ` [PATCH 4/5] watchdog: move omap_wdt.h to include/linux/watchdog Felipe Balbi
2008-09-19 10:32 ` [PATCH 5/5] watchdog: introduce platform_data and remove cpu conditional code Felipe Balbi
2008-09-19 19:04 ` Russell King - ARM Linux
2008-09-19 21:33 ` Felipe Balbi
2008-09-19 22:51 ` Russell King - ARM Linux
2008-09-20 15:03 ` Wim Van Sebroeck
2008-09-20 5:48 ` Wim Van Sebroeck
2008-09-19 10:56 ` [PATCH 4/5] watchdog: move omap_wdt.h to include/linux/watchdog Alan Cox
2008-09-19 11:06 ` Felipe Balbi
2008-09-19 12:52 ` Alan Cox
2008-09-20 0:41 ` [PATCH 3/5] watchdog: cleanup a bit omap_wdt.c David Brownell
2008-09-20 8:13 ` Russell King - ARM Linux
2008-09-20 15:32 ` David Brownell
2008-09-20 16:11 ` Russell King - ARM Linux
2008-09-20 17:18 ` David Brownell [this message]
2008-09-20 18:00 ` Russell King - ARM Linux
2008-09-21 18:41 ` Tony Lindgren
2008-09-22 2:01 ` David Brownell
2008-09-22 1:45 ` David Brownell
2008-09-22 7:59 ` Russell King - ARM Linux
2008-09-22 9:30 ` Tony Lindgren
2008-09-20 17:01 ` Alan Cox
2008-09-19 22:40 ` [PATCH 1/5] watchdog: sync linux-omap changes Russell King - ARM Linux
2008-09-20 0:20 ` David Brownell
2008-09-20 0:39 ` David Brownell
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=200809201018.42127.david-b@pacbell.net \
--to=david-b@pacbell.net \
--cc=akpm@linux-foundation.org \
--cc=felipe.balbi@nokia.com \
--cc=gdavis@mvista.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=tony@atomide.com \
--cc=wim@iguana.be \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox