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:
parent
99cfda2f7f
commit
14f494c710
Notes:
Lennart Poettering
2015-06-18 00:12:56 +02:00
Backport: bugfix
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user