[systemd-devel] [PATCH] watchdog: Don't require WDIOC_SETOPTIONS/WDIOS_ENABLECARD

Jean Delvare jdelvare at suse.de
Mon Jun 15 09:14:02 PDT 2015


Not all watchdog drivers implement WDIOC_SETOPTIONS. Drivers which do
not implement it have their device always enabled. So it's fine to
report an error if WDIOS_DISABLECARD is passed and the ioctl is not
implemented, however failing when WDIOS_ENABLECARD is passed and the
ioctl is not implemented is not good: if the device was already
enabled then WDIOS_ENABLECARD was a no-op and wasn't needed in the
first place. So we can just ignore the error and continue.
---
 src/shared/watchdog.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/src/shared/watchdog.c
+++ b/src/shared/watchdog.c
@@ -64,7 +64,8 @@ static int update_timeout(void) {
 
                 flags = WDIOS_ENABLECARD;
                 r = ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags);
-                if (r < 0) {
+                /* ENOTTY means the watchdog is always enabled so we're fine */
+                if (r < 0 && errno != ENOTTY) {
                         log_warning("Failed to enable hardware watchdog: %m");
                         return -errno;
                 }

-- 
Jean Delvare
SUSE L3 Support



More information about the systemd-devel mailing list