From: Hans de Goede <hdegoede@redhat.com>
To: David Teigland <teigland@redhat.com>
Cc: wim@iguana.be, linux-watchdog@vger.kernel.org
Subject: Re: [PATCH] watchdog: new option to skip ping in close
Date: Tue, 07 Aug 2012 09:53:36 +0200 [thread overview]
Message-ID: <5020C980.5050601@redhat.com> (raw)
In-Reply-To: <20120806162503.GA21740@redhat.com>
Hi,
On 08/06/2012 06:25 PM, David Teigland wrote:
> On Sat, Aug 04, 2012 at 11:08:24AM +0200, Hans de Goede wrote:
>> Why on earth are you putting that if block there and not simply putting
>> the command in the switch-case where it belongs? If you were afraid watchdog_ioctl_op
>> could cause issues, then maybe you should have studied the code?
>>
>> That would have thought you that it will always return -ENOIOCTLCMD for commands it
>> does not know how to handle, so it won't interfere with adding new standard commands.
>>
>> Adding this if block there is completely unnecessary and quite ugly IMHO.
>
> It is ugly, but it's also necessary for a couple reasons that you may have
> missed at first glance. First, this ioctl is addressing behavior that
> exists in the common framework layer, not in individual drivers, so it
> doesn't make too much sense to pass down to the drivers.
All the ioctls handled by the switch-case are handled primarily by the
core layer (doing things like range checking for the timeout value, etc),
WDIOC_NOCLOSEPING is no different!
> That being said, we could do so if ENOIOCTLCMD worked as you suggest, but
> it doesn't quite. Drivers with an ioctl op will return ENOTTY,
No they don't, if they would do that all the standard ioctls would not work,
since watchdog_dev.c: watchdog_ioctl() has:
err = watchdog_ioctl_op(wdd, cmd, arg);
if (err != -ENOIOCTLCMD)
return err;
So if they returned ENOTTY we would never get into the switch case.
> in which
> case the switch statement would work, but drivers with no ioctl op (e.g.
> softdog) cause watchdog_ioctl_op to return ENOIOCTLCMD, causing the switch
> statement to be skipped.
<sigH> it is the other way around not returning ENOIOCTLCMD (ie returning ENOTTY)
causes the switch case to be skipped, not the other way around. The watchdog_ioctl_op
driver callback is there to add custom driver specific ioctls, for all other ioctls
the watchdog_ioctl_op function must return ENOIOCTLCMD, this get turned into a
ENOTTY by the switch case if the ioctl is not one of the standard ones either,
so with WDIOC_NOCLOSEPING being a new standard ioctl it should, it *must* go in
the switch case just like all the other ioctls.
> In the end, we need WDIOC_NOCLOSEPING to be processed by the core,
> independent of what drivers do, since as I explained this is targeting the
> behavior of the core framework, not the drivers.
Right, and it will be processed by the core if it is in the switch-case because:
watchdog_ioctl_op will return ENOIOCTLCMD for non driver specific custom ioctls,
causing watchdog_ioctl() to continue into the switch case for standard ioctls!
Regards,
Hans
next prev parent reply other threads:[~2012-08-07 7:52 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-03 17:40 [PATCH] watchdog: new option to skip ping in close David Teigland
2012-08-04 9:08 ` Hans de Goede
2012-08-06 16:25 ` David Teigland
2012-08-07 7:53 ` Hans de Goede [this message]
2012-08-07 15:23 ` David Teigland
2012-08-08 20:22 ` Wim Van Sebroeck
2012-08-08 21:11 ` David Teigland
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=5020C980.5050601@redhat.com \
--to=hdegoede@redhat.com \
--cc=linux-watchdog@vger.kernel.org \
--cc=teigland@redhat.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 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.