#!/bin/sh -e
### BEGIN INIT INFO
# Provides:       fstrim
# Required-Start:
# Required-Stop:
# Default-Start:  S
# Default-Stop:
# Description:    Discard unused blocks on all filesystems
### END INIT INFO

PID_FILE=/var/run/fstrim.pid
INTERVAL=3600

fstrim_stop()
{
	PID=$(cat $PID_FILE 2>/dev/null || true)
	[ "$PID" ] || return 0

	logger -s -t fstrim "Stopping fstrim process ($PID)..."
	kill -9 -$PID 2>/dev/null || true
	rm -f "$PID_FILE"
}

fstrim_start()
{
	fstrim_stop

	{
		trap 'rm -f "$PID_FILE"' EXIT QUIT TERM INT
		echo $$ > $PID_FILE

		logger -s -t fstrim "Starting fstrim process ($$)..."
		while true; do
			cut -d' ' -f2 /proc/mounts | \
				xargs -n 1 /sbin/fstrim -v 2>/dev/null | \
				logger -t fstrim || true
			sleep $INTERVAL
		done
	}&
}

case "$1" in
	start|restart|reload|force-reload|"") fstrim_start ;;
	stop) fstrim_stop ;;
	status)
		# No-op
		;;
	*)
		echo "Usage: start" >&2
		exit 3
		;;
esac

:
