From 7e70a0c258d4496c3243b8bc1e77d1b60e9a275b Mon Sep 17 00:00:00 2001 From: Grant Erickson Date: Thu, 3 Mar 2011 10:44:57 -0800 Subject: [PATCH] stats: Add an informational message for mmap failures Added an informational message when mmap fails with EINVAL in stats_file_remap. --- src/stats.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/stats.c b/src/stats.c index 30c0169..c4aa24e 100644 --- a/src/stats.c +++ b/src/stats.c @@ -293,9 +293,10 @@ static int stats_file_remap(struct stats_file *file, size_t size) if (file->addr == NULL) { /* * Though the buffer is not shared between processes, we still - * have to take MAP_SHARED because MAP_PRIVATE does not guarantee - * that writes will hit the file eventually. For more details - * please read the mmap man pages. + * have to take MAP_SHARED because MAP_PRIVATE does not + * guarantee that writes will hit the file without an explicit + * call to munmap or msync. For more details please read the + * mmap man pages. */ addr = mmap(NULL, new_size, PROT_READ | PROT_WRITE, MAP_SHARED, file->fd, 0); @@ -306,6 +307,11 @@ static int stats_file_remap(struct stats_file *file, size_t size) if (addr == MAP_FAILED) { connman_error("mmap error %s for %s", strerror(errno), file->name); + if (errno == EINVAL) { + connman_error("%s might be on a file system, such as " + "JFFS2, that does not allow shared " + "writable mappings.", file->name); + } return -errno; } -- 2.7.4