# cryptdisks - enable encrypted block devices
#
# Sweep up any devices in /etc/crypttab that have not yet been started at
# the end of udev coldplugging; this partly duplicates the cryptdisks-udev
# job, but is necessary because:
#  - some devices may not be registered as ID_FS_USAGE=crypto by udev (e.g.,
#    random-encrypted devices), but we don't want to call the upstart job
#    for every single block device
#  - some devices can only be decrypted after other devices are decrypted and
#    mounted first, so we need a two-pass system (like
#    /etc/init.d/cryptdisks{,-early} previously)
#
# This job currently still does not guarantee a race-free startup; instances
# of cryptdisks-udev may be started in parallel with this job.

description    "enable remaining boot-time encrypted block devices"

start on stopped udevtrigger or container

# Currently stopping is a no-op, so we can stop this anywhere during the
# shutdown sequence.  We let the cryptdisks-early init script take care of
# device teardown instead; it happens that the distinction between the
# 'cryptdisks' and 'cryptdisks-early' jobs is irrelevant on shutdown because
# the only sequencing difference is lvm2, which has no init script that's
# called on shutdown.
stop on unmounted-remote-filesystems

task

pre-start script
	if [ -r /lib/cryptsetup/cryptdisks.functions ]; then
		. /lib/cryptsetup/cryptdisks.functions
	else
		exit 0
	fi

	case "$CRYPTDISKS_ENABLE" in
	[Nn]*)
		exit 1
		;;
	esac

	INITSTATE="init"
	do_start
end script
