aboutsummaryrefslogtreecommitdiffstats
path: root/object-file.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2021-07-16 17:42:47 -0700
committerJunio C Hamano <gitster@pobox.com>2021-07-16 17:42:47 -0700
commita93c6fd677f16285ce1109f9f200b2b235ab981e (patch)
treef41a55ef2d736a19648bed510aa9ff8cdee40aee /object-file.c
parentfba551379ef89b92b9356caa4096144026250c22 (diff)
parentdc0592941138df684770bfe800ccad6b810214c3 (diff)
downloadgit-a93c6fd677f16285ce1109f9f200b2b235ab981e.tar.gz
Merge branch 'ew/mmap-failures'
Error message update. * ew/mmap-failures: xmmap: inform Linux users of tuning knobs on ENOMEM
Diffstat (limited to 'object-file.c')
-rw-r--r--object-file.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/object-file.c b/object-file.c
index f233b440b2..b9c3219793 100644
--- a/object-file.c
+++ b/object-file.c
@@ -1023,12 +1023,26 @@ void *xmmap_gently(void *start, size_t length,
return ret;
}
+const char *mmap_os_err(void)
+{
+ static const char blank[] = "";
+#if defined(__linux__)
+ if (errno == ENOMEM) {
+ /* this continues an existing error message: */
+ static const char enomem[] =
+", check sys.vm.max_map_count and/or RLIMIT_DATA";
+ return enomem;
+ }
+#endif /* OS-specific bits */
+ return blank;
+}
+
void *xmmap(void *start, size_t length,
int prot, int flags, int fd, off_t offset)
{
void *ret = xmmap_gently(start, length, prot, flags, fd, offset);
if (ret == MAP_FAILED)
- die_errno(_("mmap failed"));
+ die_errno(_("mmap failed%s"), mmap_os_err());
return ret;
}