#!/bin/sh

PREREQ=""
prereqs()
{
	echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
	prereqs
	exit 0
	;;
esac

USBRAM_DEVICE=${USBRAM_DEVICE:-/dev/sda1}
USBRAM_FILE=${USBRAM_FILE:-root.squashfs}
USBRAM_SIZE=${USBRAM_SIZE:-256}
USBRAM=${USBRAM:-yes}

for x in $(cat /proc/cmdline); do
	case ${x} in
	usbram_device=*)
		USBRAM_DEVICE=${x#*=}
		;;
	usbram_file=*)
		USBRAM_FILE=${x#*=}
		;;
	usbram_size=*)
		USBRAM_SIZE=${x#*=}
		;;
	usbram=*)
		USBRAM=${x#*=}
		;;
	esac
done

case "${USBRAM}" in
	yes|enable)
		;;
	*)
		log_warning_msg "USB RAM disk loading is disabled"
		exit 0
		;;
esac

if grep -q '^brd ' /proc/modules; then
	log_warning_msg "brd module already loaded"
	exit 0
fi

modprobe brd rd_nr=1 rd_size=$((${USBRAM_SIZE} * 1024))

if grep -q "^${USBRAM_DEVICE} " /proc/mounts; then
	USBRAM_DIR=`grep -q "^${USBRAM_DEVICE} " /proc/mounts | cut -d' ' -f2 | head -1`
	USBRAM_UMOUNT=no
else
	USBRAM_DIR=/dev/.usbram
	mkdir -p "${USBRAM_DIR}"
	mount -oro "${USBRAM_DEVICE}" "${USBRAM_DIR}"
	USBRAM_UMOUNT=yes
fi

if [ ! -f "${USBRAM_DIR}/${USBRAM_FILE}" ]; then
	log_warning_msg "File ${USBRAM_FILE} on ${USBRAM_DEVICE} not found"
	exit 0
fi

dd if="${USBRAM_DIR}/${USBRAM_FILE}" of=/dev/ram0

if [ "x${USBRAM_UMOUNT}" = "xyes" ]; then
	umount ${USBRAM_DEVCICE}
fi
