mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-03-08 20:58:20 +03:00
journal: crash when filesystem is low on space
When space is getting too low on a file system rotating the journal file will fail after the rotation, as opening the new logfile will fail. Recognize this when logging the error and don't try to dereference a NULL JournalFile pointer.
This commit is contained in:
parent
bf4df7c3b6
commit
499fb2152f
@ -330,7 +330,10 @@ static void server_rotate(Server *s) {
|
|||||||
if (s->runtime_journal) {
|
if (s->runtime_journal) {
|
||||||
r = journal_file_rotate(&s->runtime_journal);
|
r = journal_file_rotate(&s->runtime_journal);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
log_error("Failed to rotate %s: %s", s->runtime_journal->path, strerror(-r));
|
if (s->runtime_journal)
|
||||||
|
log_error("Failed to rotate %s: %s", s->runtime_journal->path, strerror(-r));
|
||||||
|
else
|
||||||
|
log_error("Failed to create new runtime journal: %s", strerror(-r));
|
||||||
else
|
else
|
||||||
server_fix_perms(s, s->runtime_journal, 0);
|
server_fix_perms(s, s->runtime_journal, 0);
|
||||||
}
|
}
|
||||||
@ -338,7 +341,11 @@ static void server_rotate(Server *s) {
|
|||||||
if (s->system_journal) {
|
if (s->system_journal) {
|
||||||
r = journal_file_rotate(&s->system_journal);
|
r = journal_file_rotate(&s->system_journal);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
log_error("Failed to rotate %s: %s", s->system_journal->path, strerror(-r));
|
if (s->system_journal)
|
||||||
|
log_error("Failed to rotate %s: %s", s->system_journal->path, strerror(-r));
|
||||||
|
else
|
||||||
|
log_error("Failed to create new system journal: %s", strerror(-r));
|
||||||
|
|
||||||
else
|
else
|
||||||
server_fix_perms(s, s->system_journal, 0);
|
server_fix_perms(s, s->system_journal, 0);
|
||||||
}
|
}
|
||||||
@ -346,7 +353,10 @@ static void server_rotate(Server *s) {
|
|||||||
HASHMAP_FOREACH_KEY(f, k, s->user_journals, i) {
|
HASHMAP_FOREACH_KEY(f, k, s->user_journals, i) {
|
||||||
r = journal_file_rotate(&f);
|
r = journal_file_rotate(&f);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
log_error("Failed to rotate %s: %s", f->path, strerror(-r));
|
if (f->path)
|
||||||
|
log_error("Failed to rotate %s: %s", f->path, strerror(-r));
|
||||||
|
else
|
||||||
|
log_error("Failed to create user journal: %s", strerror(-r));
|
||||||
else {
|
else {
|
||||||
hashmap_replace(s->user_journals, k, f);
|
hashmap_replace(s->user_journals, k, f);
|
||||||
server_fix_perms(s, s->system_journal, PTR_TO_UINT32(k));
|
server_fix_perms(s, s->system_journal, PTR_TO_UINT32(k));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user