#!/bin/ash
# ovmount - overlayfs package (ovpkg) mount script

MMC_PKG_DIR=/mnt/mmcblk0p1/packages

# Setup tmp dir for mounted squashfs packages
if [ ! -e /tmp/ovpkg ]; then
	echo "Creating ovpkg temp dir"
	mkdir /tmp/ovpkg/
	mkdir /tmp/ovpkg/packages
elif [ ! -e /tmp/ovpkg/packages ]; then
	echo "Creating ovpkg temp dir"
	mkdir /tmp/ovpkg/packages
fi

# Quit if we are already mounted
STATUS=`cat /tmp/ovpkg/status`
if [ $STATUS -eq 1 ]; then
	echo "overlay packages already mounted"
	exit 1
fi

# Mount squashfs packages to tmp dir
for file in ${MMC_PKG_DIR}/*; do
	if [ -e "${file}" ]; then
		PKG_NAME=`echo $file | sed 's/\.ovpkg//' | sed 's/.*\///'`
		if [ ! -d "/tmp/ovpkg/packages/${PKG_NAME}" ]; then
			mkdir "/tmp/ovpkg/packages/${PKG_NAME}"
		fi
		echo "Mounting squashfs package: $PKG_NAME"
		mount -t squashfs -o noatime,ro $file "/tmp/ovpkg/packages/$PKG_NAME"
		# Mount squashfs package mount point to overlay dir as overlayfs
		echo "Mounting package overlay: $PKG_NAME"
		mount -t overlayfs -o noatime,lowerdir=/tmp/ovpkg/packages/${PKG_NAME},upperdir=/overlay /tmp/ovpkg/packages/${PKG_NAME} /overlay
	fi
done

# Mount all dirs in overlay to rootfs
for dir in /overlay/*; do
	CHK_ROOT_DIR=`echo $dir | sed 's/.*\///'`
	# 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 noatime,lowerdir=${dir},upperdir=/${CHK_ROOT_DIR} ${dir} /${CHK_ROOT_DIR}
done

# Write status 1=mounted 0=not mounted
echo 1 > /tmp/ovpkg/status
