[rhel6-branch] Let tmp use more than 250M when there is more RAM (#1123791)
Brian C. Lane
bcl at redhat.com
Wed Aug 20 00:12:54 UTC 2014
There are 2 potential problems related to tmpfs size on /tmp. bug 540146
addressed part of it, making sure /tmp is at least 250M.
1. On small systems it may be < 250M if there is less than 500M of RAM.
This can cause a crash because there isn't enough space for install.img
2. On large systems with lots of RAM it doesn't take advantage of the
extra RAM and may run out of /tmp space when using large numbers of
disks and/or driver disks.
This patch checks the total memory available and sets the /tmp size to
250M if the available RAM is < 512M. Otherwise it will let it use 50%
of the available RAM.
Resolves: rhbz#1123791
---
loader/Makefile.am | 3 ++-
loader/init.c | 16 ++++++++++++++--
loader/init.h | 3 +++
3 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/loader/Makefile.am b/loader/Makefile.am
index 9a2352c..9a080fc 100644
--- a/loader/Makefile.am
+++ b/loader/Makefile.am
@@ -56,7 +56,8 @@ loader_SOURCES = loader.c copy.c log.c moduleinfo.c loadermisc.c \
init_CFLAGS = $(COMMON_CFLAGS) $(GLIB_CFLAGS)
init_LDADD = $(GLIB_LIBS)
-init_SOURCES = init.c undomounts.c shutdown.c copy.c modules.c log.c
+init_SOURCES = init.c undomounts.c shutdown.c copy.c modules.c log.c \
+ totalmemory.c
shutdown_CFLAGS = $(COMMON_CFLAGS) -DAS_SHUTDOWN=1
shutdown_SOURCES = shutdown.c undomounts.c
diff --git a/loader/init.c b/loader/init.c
index 53b7a15..f54023d 100644
--- a/loader/init.c
+++ b/loader/init.c
@@ -64,6 +64,7 @@
#include "devices.h"
#include "modules.h"
#include "log.h"
+#include "totalmemory.h"
#endif
@@ -759,8 +760,19 @@ int main(int argc, char **argv) {
printf("mounting /tmp as tmpfs... ");
fflush(stdout);
- if (mount("none", "/tmp", "tmpfs", 0, "size=250m"))
- fatal_error(1);
+
+ /* On systems with small memory tmpfs needs to be at least 250M so that
+ * there is space for install.img and the logs.
+ * On larger systems it should be 50% of available RAM so that there is
+ * room for more logs, driver disks, etc.
+ */
+ if (totalMemory() < MIN_TMPFS_RAM) {
+ if (mount("none", "/tmp", "tmpfs", 0, "size=250m"))
+ fatal_error(1);
+ } else {
+ if (mount("none", "/tmp", "tmpfs", 0, "size=50%"))
+ fatal_error(1);
+ }
printf("done\n");
copyDirectory("/oldtmp", "/tmp", copyErrorFn, copyErrorFn);
diff --git a/loader/init.h b/loader/init.h
index e1e5b70..9e8e9de 100644
--- a/loader/init.h
+++ b/loader/init.h
@@ -28,4 +28,7 @@ typedef enum {
DELAYED_REBOOT
} reboot_action;
+/* When there is less than this amount of ram, set the tmpfs size to 250M */
+#define MIN_TMPFS_RAM 524288
+
#endif /* INIT_H */
--
1.9.3
More information about the anaconda-patches
mailing list