chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
journald: ignore failure to watch hostname_fd on older kernels
[elogind.git]
/
src
/
journal
/
journald-server.c
diff --git
a/src/journal/journald-server.c
b/src/journal/journald-server.c
index 9ca3859297836e7e4eb8bdbbf4dce79bd2abd501..96ef66db5fa95b1b14c08b9a6f938e98632259bb 100644
(file)
--- a/
src/journal/journald-server.c
+++ b/
src/journal/journald-server.c
@@
-1267,19
+1267,19
@@
static int setup_signals(Server *s) {
sigset_add_many(&mask, SIGINT, SIGTERM, SIGUSR1, SIGUSR2, -1);
assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0);
sigset_add_many(&mask, SIGINT, SIGTERM, SIGUSR1, SIGUSR2, -1);
assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0);
- r = sd_event_add_signal(s->event,
SIGUSR1, dispatch_sigusr1, s, &s->sigusr1_event_source
);
+ r = sd_event_add_signal(s->event,
&s->sigusr1_event_source, SIGUSR1, dispatch_sigusr1, s
);
if (r < 0)
return r;
if (r < 0)
return r;
- r = sd_event_add_signal(s->event,
SIGUSR2, dispatch_sigusr2, s, &s->sigusr2_event_source
);
+ r = sd_event_add_signal(s->event,
&s->sigusr2_event_source, SIGUSR2, dispatch_sigusr2, s
);
if (r < 0)
return r;
if (r < 0)
return r;
- r = sd_event_add_signal(s->event,
SIGTERM, dispatch_sigterm, s, &s->sigterm_event_source
);
+ r = sd_event_add_signal(s->event,
&s->sigterm_event_source, SIGTERM, dispatch_sigterm, s
);
if (r < 0)
return r;
if (r < 0)
return r;
- r = sd_event_add_signal(s->event,
SIGINT, dispatch_sigterm, s, &s->sigint_event_source
);
+ r = sd_event_add_signal(s->event,
&s->sigint_event_source, SIGINT, dispatch_sigterm, s
);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-1387,7
+1387,7
@@
int server_schedule_sync(Server *s, int priority) {
when += s->sync_interval_usec;
if (!s->sync_event_source) {
when += s->sync_interval_usec;
if (!s->sync_event_source) {
- r = sd_event_add_monotonic(s->event,
when, 0, server_dispatch_sync, s, &s->sync_event_source
);
+ r = sd_event_add_monotonic(s->event,
&s->sync_event_source, when, 0, server_dispatch_sync, s
);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-1428,8
+1428,18
@@
static int server_open_hostname(Server *s) {
return -errno;
}
return -errno;
}
- r = sd_event_add_io(s->event,
s->hostname_fd, 0, dispatch_hostname_change, s, &s->hostname_event_source
);
+ r = sd_event_add_io(s->event,
&s->hostname_event_source, s->hostname_fd, 0, dispatch_hostname_change, s
);
if (r < 0) {
if (r < 0) {
+ /* kernels prior to 3.2 don't support polling this file. Ignore
+ * the failure. */
+ if (r == -EPERM) {
+ log_warning("Failed to register hostname fd in event loop: %s. Ignoring.",
+ strerror(-r));
+ close_nointr_nofail(s->hostname_fd);
+ s->hostname_fd = -1;
+ return 0;
+ }
+
log_error("Failed to register hostname fd in event loop: %s", strerror(-r));
return r;
}
log_error("Failed to register hostname fd in event loop: %s", strerror(-r));
return r;
}