#!/bin/sh

. /etc/ovpkg.conf

# Make tmpfs overlay dir if needed
if [ ! -d /tmp/overlay ]; then
	mkdir /tmp/overlay
fi

# Make tmpfs overlay status if needed
if [ ! -f /tmp/overlay/status ]; then
	echo 0 > /tmp/overlay/status
fi

# Check status to see if we are mounted
STATUS=`cat /tmp/overlay/status`
if [ $STATUS -eq 1 ]; then
	echo "Overlayfs already mounted"
	exit 1
fi

# Setup loop device
if [ -f "/${SD_ROOTFS}" ]; then
	LOOPDEV=`losetup -f`
	echo "Creating ext2 loop device $LOOPDEV"
	losetup -o32256 ${LOOPDEV} ${SD_ROOTFS}
	echo "Checking loop device for errors"
	e2fsck -y ${LOOPDEV}
else
	echo "SD Card rootfs not found"
	exit 1
fi

mount -t ext2 ${LOOPDEV} /overlay

# Mount all dirs in overlay to rootfs
for dir in /overlay/*; do
	CHK_ROOT_DIR=`echo $dir | sed 's/.*\///'`
	if [ "$CHK_ROOT_DIR" != "*" ]; then
		# Make dir in rootfs if it does not exist
		if [ ! -d "/${CHK_ROOT_DIR}" ]; then
			mkdir "/${CHK_ROOT_DIR}"
		fi
		echo "Mounting overlay dir to rootfs: $CHK_ROOT_DIR"
		mount -t overlayfs -o rw,noatime,lowerdir=${dir},upperdir=/${CHK_ROOT_DIR} ${dir} /${CHK_ROOT_DIR}
	fi
done

# Write status
echo 1 > /tmp/overlay/status
echo "$LOOPDEV" > /tmp/overlay/loopdevice
