#!/bin/sh

PREREQ="mdadm mdrun multipath"

prereqs()
{
	echo "$PREREQ"
}

case $1 in
# get pre-requisites
prereqs)
	prereqs
	exit 0
	;;
esac

activate_vg()
{
	local dev="$1"

	# Make sure that we have a non-empty argument
	if [ -z "$dev" ]; then
		return 1
	fi

	# Take care of lilo boot arg, risky activating of all vg
	case "$dev" in
	fe[0-9]*)
		lvm vgchange -aly --ignorelockingfailure
		exit 0
		;;
	# FIXME: check major
	/dev/root)
		lvm vgchange -aly --ignorelockingfailure
		exit 0
		;;
	esac

	# Make sure that we have a d-m path
	dev="${dev#/dev/mapper/}"
	if [ "$dev" = "$1" ]; then
		return 1
	fi

	eval $(dmsetup splitname --nameprefixes --noheadings --rows "$dev")

	if [ "$DM_VG_NAME" ] && [ "$DM_LV_NAME" ]; then
		lvm lvchange -aly --ignorelockingfailure "$DM_VG_NAME/$DM_LV_NAME"
		rc=$?
		if [ $rc = 5 ]; then
			echo "Unable to find LVM volume $DM_VG_NAME/$DM_LV_NAME"
		fi
	fi
}

if [ ! -e /sbin/lvm ]; then
	exit 0
fi

modprobe -q dm-mod

activate_vg "$ROOT"
activate_vg "$resume"

exit 0
