1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-08 11:27:32 +03:00

watchdog: Don't require WDIOC_SETOPTIONS/WDIOS_ENABLECARD

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.
This commit is contained in:
Jean Delvare 2015-06-17 18:57:39 +02:00 committed by Lennart Poettering
parent 99cfda2f7f
commit 14f494c710
Notes: Lennart Poettering 2015-06-18 00:12:56 +02:00
Backport: bugfix

View File

@ -60,8 +60,13 @@ static int update_timeout(void) {
flags = WDIOS_ENABLECARD; flags = WDIOS_ENABLECARD;
r = ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags); r = ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags);
if (r < 0) if (r < 0) {
return log_warning_errno(errno, "Failed to enable hardware watchdog: %m"); /* ENOTTY means the watchdog is always enabled so we're fine */
log_full(errno == ENOTTY ? LOG_DEBUG : LOG_WARNING,
"Failed to enable hardware watchdog: %m");
if (errno != ENOTTY)
return -errno;
}
r = ioctl(watchdog_fd, WDIOC_KEEPALIVE, 0); r = ioctl(watchdog_fd, WDIOC_KEEPALIVE, 0);
if (r < 0) if (r < 0)