# mountall-shell - Recovery shell for filesystem failure
#
# If mountall exits to indicate that manual recovery is required, this
# starts the necessary shell.

description	"Recovery shell for filesystem failure"

start on (stopped mountall EXIT_STATUS=[!4]
          or stopped mountall EXIT_SIGNAL=?*)
stop on runlevel [06]

task
console owner

script
    case "$EXIT_STATUS" in
    ""|1)
	echo "General error mounting filesystems."
	echo "A maintenance shell will now be started."
	echo "CONTROL-D will terminate this shell and reboot the system."
	;;
    2)
	echo "Filesystem check or mount failed."
	echo "A maintenance shell will now be started."
	echo "CONTROL-D will terminate this shell and continue booting after re-trying"
	echo "filesystems.  Any further errors will be ignored"
	;;
    3)
	echo "Root filesystem check failed."
	echo "A maintenance shell will now be started."
	echo "CONTROL-D will terminate this shell and reboot the system."
	;;
    esac

    /sbin/sulogin
end script

post-stop script
    if [ -z "$UPSTART_STOP_EVENTS" ]
    then
	if [ "$EXIT_STATUS" = "2" ]
	then
	    exec start --no-wait mountall
	else
	    umount -a || :
	    exec reboot -f
	fi
    fi
end script
