From: Lennart Poettering Date: Wed, 22 May 2019 16:48:02 +0000 (+0200) Subject: journald: output a proper error message when the journal is used on fs that doesn... X-Git-Tag: v243-rc1~386^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F12645%2Fhead;p=thirdparty%2Fsystemd.git journald: output a proper error message when the journal is used on fs that doesn't do mmap() properly Prompted by: https://lists.freedesktop.org/archives/systemd-devel/2019-May/042708.html --- diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index 3e285021bdc..c38c3e7c14f 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -3323,6 +3323,13 @@ int journal_file_open( } r = mmap_cache_get(f->mmap, f->cache_fd, f->prot, CONTEXT_HEADER, true, 0, PAGE_ALIGN(sizeof(Header)), &f->last_stat, &h, NULL); + if (r == -EINVAL) { + /* Some file systems (jffs2 or p9fs) don't support mmap() properly (or only read-only + * mmap()), and return EINVAL in that case. Let's propagate that as a more recognizable error + * code. */ + r = -EAFNOSUPPORT; + goto fail; + } if (r < 0) goto fail; diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 51e7dedad59..414571191f8 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -787,6 +787,10 @@ static bool shall_try_append_again(JournalFile *f, int r) { log_warning("%s: Journal file is from the future, rotating.", f->path); return true; + case -EAFNOSUPPORT: + log_warning("%s: underlying file system does not support memory mapping or another required file system feature.", f->path); + return false; + default: return false; }