log: Switch logging to runtime when FS becomes read-only
The journal has a mechanism to log to the runtime journal if it fails to log to the system journal. This mechanism is not triggered when the file system becomes read-only. We enable it here. When appending an entry fails if shall_try_append_again returns true, the journal is rotated. If the FS is read-only, rotation will fail and s->system_journal will be set to NULL. After that, when find_journal will try to open the journal since s->system_journal will be NULL, it will open the runtime journal.
This commit is contained in:
committed by
Luca Boccassi
parent
a5d63f1e29
commit
379864f890
@@ -801,6 +801,14 @@ static bool shall_try_append_again(JournalFile *f, int r) {
|
||||
log_debug("%s: Allocation limit reached, rotating.", f->path);
|
||||
return true;
|
||||
|
||||
case -EROFS: /* Read-only file system */
|
||||
/* When appending an entry fails if shall_try_append_again returns true, the journal is
|
||||
* rotated. If the FS is read-only, rotation will fail and s->system_journal will be set to
|
||||
* NULL. After that, when find_journal will try to open the journal since s->system_journal
|
||||
* will be NULL, it will open the runtime journal. */
|
||||
log_ratelimit_warning(JOURNALD_LOG_RATELIMIT, "%s: Read-only file system, rotating.", f->path);
|
||||
return true;
|
||||
|
||||
case -EIO: /* I/O error of some kind (mmap) */
|
||||
log_ratelimit_warning(JOURNAL_LOG_RATELIMIT, "%s: IO error, rotating.", f->path);
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user