return f;
}
-static void server_vacuum(Server *s) {
- Iterator i;
+static void server_rotate(Server *s) {
+ JournalFile *f;
void *k;
- char *p;
- char ids[33];
- sd_id128_t machine;
+ Iterator i;
int r;
- JournalFile *f;
log_info("Rotating...");
else
hashmap_replace(s->user_journals, k, f);
}
+}
+
+static void server_vacuum(Server *s) {
+ char *p;
+ char ids[33];
+ sd_id128_t machine;
+ int r;
log_info("Vacuuming...");
return NULL;
}
- if (streq(init_path, "/"))
+ if (endswith(init_path, "/system"))
+ init_path[strlen(init_path) - 7] = 0;
+ else if (streq(init_path, "/"))
init_path[0] = 0;
if (startswith(process_path, init_path)) {
*comm = NULL, *cmdline = NULL, *hostname = NULL,
*audit_session = NULL, *audit_loginuid = NULL,
*exe = NULL, *cgroup = NULL, *session = NULL,
- *owner_uid = NULL, *service = NULL;
+ *owner_uid = NULL, *unit = NULL;
char idbuf[33];
sd_id128_t id;
IOVEC_SET_STRING(iovec[n++], session);
}
- if (sd_pid_get_service(ucred->pid, &t) >= 0) {
- service = strappend("_SYSTEMD_SERVICE=", t);
+ if (sd_pid_get_unit(ucred->pid, &t) >= 0) {
+ unit = strappend("_SYSTEMD_UNIT=", t);
free(t);
- if (service)
- IOVEC_SET_STRING(iovec[n++], service);
+ if (unit)
+ IOVEC_SET_STRING(iovec[n++], unit);
}
if (sd_pid_get_owner_uid(ucred->uid, &owner) >= 0)
if (r == -E2BIG && !vacuumed) {
log_info("Allocation limit reached.");
+ server_rotate(s);
server_vacuum(s);
vacuumed = true;
free(cgroup);
free(session);
free(owner_uid);
- free(service);
+ free(unit);
}
static void dispatch_message(Server *s,
log_info("Allocation limit reached.");
journal_file_post_change(s->system_journal);
+ server_rotate(s);
server_vacuum(s);
r = journal_file_copy_entry(f, s->system_journal, o, f->current_offset, NULL, NULL, NULL);