Package: sysvinit
Version: 2.86.ds1-14.1
Severity: wishlist
Tags: patch

The attached patch arranges that at boot time, if /tmp (or whatever is
mounted there) has less than a certain amount of free space, a tmpfs
will be mounted over the top.  This makes some parts of the system
more robust in the face of disk full situations; in Ubuntu we are
deploying this pursuant to our plan
https://wiki.ubuntu.com/BootLoginWithFullFilesystem).

In the patch below:
 * The trigger size is 1Mby by default but configurable in
   /etc/default/mountoverflowtmp by setting MINTMPKB.  Setting
   this value to 0 disables the setup.
 * The tmpfs is always 1Mby.  Alternatively one might take the
   view that this size should be configurable or perhaps it should be
   the same as the minimum space.

Note that you might want to consider different defaults for Debian
than for Ubuntu.

Ian.

#! /bin/sh /usr/share/dpatch/dpatch-run
## 92_mountoverflowtmp.dpatch by Ian Jackson
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Mount a 1Mby tmpfs on /tmp if /tmp is otherwise less than 1Mby

@DPATCH@
--- ./debian/initscripts/postinst       2007-06-27 11:26:19.000000000 +0100
+++ edit/sysvinit-2.86.ds1/debian/initscripts/postinst  2007-06-27 
11:38:05.000000000 +0100
@@ -102,6 +102,7 @@
 updatercd checkfs.sh             start 30 S .
 updatercd mountall.sh            start 35 S .
 updatercd mountall-bootclean.sh  start 36 S .
+updatercd mountoverflowtmp       start 37 S . stop 59 0 6 .
 updatercd waitnfs.sh             start 45 S .
 updatercd mountnfs-bootclean.sh  start 46 S .
 updatercd bootmisc.sh            start 80 S .
--- ./debian/initscripts/conffiles      2007-06-27 11:26:19.000000000 +0100
+++ edit/sysvinit-2.86.ds1/debian/initscripts/conffiles 2007-06-27 
11:31:27.000000000 +0100
@@ -11,6 +11,7 @@
 /etc/init.d/mountall.sh
 /etc/init.d/mountall-bootclean.sh
 /etc/init.d/mountnfs-bootclean.sh
+/etc/init.d/mountoverflowtmp
 /etc/init.d/mountdevsubfs.sh
 /etc/init.d/mountkernfs.sh
 /etc/init.d/mtab.sh
--- ./debian/initscripts/etc/init.d/mountoverflowtmp    1970-01-01 
01:00:00.000000000 +0100
+++ edit/sysvinit-2.86.ds1/debian/initscripts/etc/init.d/mountoverflowtmp       
2007-06-27 11:29:46.000000000 +0100
@@ -0,0 +1,53 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          mountoverflowtmp
+# Required-Start:    mountall-bootclean
+# Required-Stop:
+# Default-Start:     S
+# Default-Stop:
+# Short-Description: mount emergency /tmp.
+# Description:       Mount a tmpfs on /tmp if there would
+#                    otherwise be too little space to log in.
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+set -e
+
+defs=/etc/default/mountoverflowtmp
+test ! -f "$defs" || . "$defs"
+
+: ${MINTMPKB:=1024}
+if test "$MINTMPKB" = "0"; then exit 0; fi
+
+case "$1" in
+  start|"")
+       log_action_begin_msg "Checking minimum space in /tmp"
+       df="`df -kP /tmp`"
+       avail="`printf "%s" "$df" | awk 'NR==2 { print $4 }'`"
+       log_action_end_msg 0
+       if test $avail -lt "$MINTMPKB"; then
+               log_action_begin_msg "Mounting emergency tmpfs on /tmp"
+               mount -t tmpfs -o size=1048576,mode=1777 overflow /tmp
+               log_action_end_msg 0
+       fi
+       ;;
+  restart|reload|force-reload)
+       echo "Error: argument '$1' not supported" >&2
+       exit 3
+       ;;
+  stop)
+       log_action_begin_msg "Unmounting any overflow tmpfs from /tmp"
+       if LANG=C LC_ALL=C mount | \
+               grep '^overflow on /tmp type tmpfs' >/dev/null; then
+               umount overflow
+       fi
+       log_action_end_msg 0
+       ;;
+  *)
+       echo "Usage: mountoverflowtmp [start|stop]" >&2
+       exit 3
+       ;;
+esac
+
+:


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to