diff options
author | Lennart Poettering <lennart@poettering.net> | 2016-04-06 10:50:46 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2016-04-06 10:50:46 +0200 |
commit | 354362c46bf436bb47fe6bd4be99321406119fa2 (patch) | |
tree | b161da21bcea4ad2bb4f71f6d9f70b16ae2b3469 /src/journal-remote/journal-upload-journal.c | |
parent | d4337c15d5835c8eecf079bd5173f8b5c51727c7 (diff) | |
parent | 0aa176a751a00b5645007c4d0763078ce2824aba (diff) |
Merge pull request #2968 from keszybz/journal-upload-watchdog-update-master
Journal upload watchdog update master
Diffstat (limited to 'src/journal-remote/journal-upload-journal.c')
-rw-r--r-- | src/journal-remote/journal-upload-journal.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/journal-remote/journal-upload-journal.c b/src/journal-remote/journal-upload-journal.c index e61b6bc68f..8ce8e1895e 100644 --- a/src/journal-remote/journal-upload-journal.c +++ b/src/journal-remote/journal-upload-journal.c @@ -25,6 +25,7 @@ #include "log.h" #include "utf8.h" #include "util.h" +#include "sd-daemon.h" /** * Write up to size bytes to buf. Return negative on error, and number of @@ -242,6 +243,22 @@ static ssize_t write_entry(char *buf, size_t size, Uploader *u) { assert_not_reached("WTF?"); } +static inline void check_update_watchdog(Uploader *u) { + usec_t after; + usec_t elapsed_time; + + if (u->watchdog_usec <= 0) + return; + + after = now(CLOCK_MONOTONIC); + elapsed_time = usec_sub(after, u->watchdog_timestamp); + if (elapsed_time > u->watchdog_usec / 2) { + log_debug("Update watchdog timer"); + sd_notify(false, "WATCHDOG=1"); + u->watchdog_timestamp = after; + } +} + static size_t journal_input_callback(void *buf, size_t size, size_t nmemb, void *userp) { Uploader *u = userp; int r; @@ -252,6 +269,8 @@ static size_t journal_input_callback(void *buf, size_t size, size_t nmemb, void assert(u); assert(nmemb <= SSIZE_MAX / size); + check_update_watchdog(u); + j = u->journal; while (j && filled < size * nmemb) { |