summaryrefslogtreecommitdiff
path: root/src/journal/journal-file.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-05-22 18:48:02 +0200
committerLennart Poettering <lennart@poettering.net>2019-05-22 18:56:24 +0200
commit5087825ea76c2642da970c07019c1f86cea36ce5 (patch)
treef5025cff649b025c10ae14468cbca2fb69b299a2 /src/journal/journal-file.c
parent9e099c9fd8283f263650a7b357f0fae609518678 (diff)
downloadsystemd-5087825ea76c2642da970c07019c1f86cea36ce5.tar.gz
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
Diffstat (limited to 'src/journal/journal-file.c')
-rw-r--r--src/journal/journal-file.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index 3e285021bd..c38c3e7c14 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;