X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fwatchdog.c;h=9d39beb3404deee679733c33f1d14ea43da890bc;hb=ce5792dac67c5ae5656f1f9665b777d44af4cb35;hp=7d188d98e821892a1ef09ef9d55517a129551a61;hpb=3a43da2832dc5360a638d043f469a6dcbe025582;p=elogind.git diff --git a/src/shared/watchdog.c b/src/shared/watchdog.c index 7d188d98e..9d39beb34 100644 --- a/src/shared/watchdog.c +++ b/src/shared/watchdog.c @@ -44,20 +44,16 @@ static int update_timeout(void) { flags = WDIOS_DISABLECARD; r = ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags); - if (r < 0) { - log_warning("Failed to disable hardware watchdog: %m"); - return -errno; - } + if (r < 0) + return log_warning_errno(errno, "Failed to disable hardware watchdog: %m"); } else { int sec, flags; char buf[FORMAT_TIMESPAN_MAX]; sec = (int) ((watchdog_timeout + USEC_PER_SEC - 1) / USEC_PER_SEC); r = ioctl(watchdog_fd, WDIOC_SETTIMEOUT, &sec); - if (r < 0) { - log_warning("Failed to set timeout to %is: %m", sec); - return -errno; - } + if (r < 0) + return log_warning_errno(errno, "Failed to set timeout to %is: %m", sec); watchdog_timeout = (usec_t) sec * USEC_PER_SEC; log_info("Set hardware watchdog to %s.", format_timespan(buf, sizeof(buf), watchdog_timeout, 0)); @@ -65,15 +61,16 @@ static int update_timeout(void) { flags = WDIOS_ENABLECARD; r = ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags); if (r < 0) { - log_warning("Failed to enable hardware watchdog: %m"); - return -errno; + /* 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); - if (r < 0) { - log_warning("Failed to ping hardware watchdog: %m"); - return -errno; - } + if (r < 0) + return log_warning_errno(errno, "Failed to ping hardware watchdog: %m"); } return 0; @@ -127,10 +124,8 @@ int watchdog_ping(void) { } r = ioctl(watchdog_fd, WDIOC_KEEPALIVE, 0); - if (r < 0) { - log_warning("Failed to ping hardware watchdog: %m"); - return -errno; - } + if (r < 0) + return log_warning_errno(errno, "Failed to ping hardware watchdog: %m"); return 0; } @@ -148,7 +143,7 @@ void watchdog_close(bool disarm) { flags = WDIOS_DISABLECARD; r = ioctl(watchdog_fd, WDIOC_SETOPTIONS, &flags); if (r < 0) - log_warning("Failed to disable hardware watchdog: %m"); + log_warning_errno(errno, "Failed to disable hardware watchdog: %m"); /* To be sure, use magic close logic, too */ for (;;) { @@ -158,7 +153,7 @@ void watchdog_close(bool disarm) { break; if (errno != EINTR) { - log_error("Failed to disarm watchdog timer: %m"); + log_error_errno(errno, "Failed to disarm watchdog timer: %m"); break; } }