#!/bin/busybox sh

echo "=== Initial: MOUNT Start ===" > /dev/kmsg

BLK_PATH=/dev/disk/by-partlabel
NVDATA_PATH=/mnt/vendor/nvdata
PROTECT1_PATH=/mnt/vendor/protect_f
PROTECT2_PATH=/mnt/vendor/protect_s

mnt_folder(){
	BLK_NAME=$1
	MNT_FOLDER=$2

	echo "=== Initial: mount $MNT_FOLDER to $BLK_NAME ===" > /dev/kmsg
	# first mount
	if [ -f "/dev/disk/by-partlabel/$BLK_NAME" ]; then
		mntdone=`mount -t ext4 $BLK_PATH/$BLK_NAME $MNT_FOLDER 2>&1`
		echo "mount: mount by partlabel"
	elif [ $BLK_NAME == "nvdata" ]; then
		mntdone=`mount -t ext4 /dev/mmcblk0p6 $MNT_FOLDER 2>&1`
		echo "mount: mount nvdata /dev/mmcblk0p6"
	elif [ $BLK_NAME == "protect_a" ]; then
		mntdone=`mount -t ext4 /dev/mmcblk0p10 $MNT_FOLDER 2>&1`
		echo "mount: mount protect_a /dev/mmcblk0p10"
	elif [ $BLK_NAME == "protect_b" ]; then
		mntdone=`mount -t ext4 /dev/mmcblk0p11 $MNT_FOLDER 2>&1`
		echo "mount: mount protect_b /dev/mmcblk0p11"
	elif [ $BLK_NAME == "log" ]; then
		mntdone=`mount -t ext4 /dev/mmcblk0p38 $MNT_FOLDER 2>&1`
		echo "mount: mount log /dev/mmcblk0p38"
	fi

	# check need to format or not
	if [ ! "$mntdone" == "" ]; then
		echo "=== Initial: new, need format ===" > /dev/kmsg
		if [ -f "/dev/disk/by-partlabel/$BLK_NAME" ]; then
			# format
			mkfs -t ext4 $BLK_PATH/$BLK_NAME
			# remount
			mount -t ext4 $BLK_PATH/$BLK_NAME $MNT_FOLDER
			echo "mount: format mount by partlabel"
		elif  [ $BLK_NAME == "nvdata" ]; then
			mkfs -t ext4 /dev/mmcblk0p6
			mntdone=`mount -t ext4 /dev/mmcblk0p6 $MNT_FOLDER 2>&1`
			echo "mount: format mount nvdata /dev/mmcblk0p6"
		elif [ $BLK_NAME == "protect_a" ]; then
			mkfs -t ext4 /dev/mmcblk0p10
			mntdone=`mount -t ext4 /dev/mmcblk0p10 $MNT_FOLDER 2>&1`
			echo "mount: format mount protect_a /dev/mmcblk0p10"
		elif [ $BLK_NAME == "protect_b" ]; then
			mkfs -t ext4 /dev/mmcblk0p11
			mntdone=`mount -t ext4 /dev/mmcblk0p11 $MNT_FOLDER 2>&1`
			echo "mount: format mount protect_b /dev/mmcblk0p11"
		elif [ $BLK_NAME == "log" ]; then
			mkfs -t ext4 /dev/mmcblk0p38
			mntdone=`mount -t ext4 /dev/mmcblk0p38 $MNT_FOLDER 2>&1`
			echo "mount: format mount log /dev/mmcblk0p38"
		fi
	fi
}
mnt_bind_folder(){
	DST_FOLDER=$1
	SRC_FOLDER=$2

	#echo "=== Initial: mount bind $DST_FOLDER to $SRC_FOLDER ===" > /dev/kmsg
	mntdone=`mount -o bind $DST_FOLDER $SRC_FOLDER 2>&1`

	if [ ! "$mntdone" == "" ]; then
		#echo "=== Initial: new, need create state folder and copy ===" > /dev/kmsg
		mkdir -p $DST_FOLDER

		if test "$(ls -A "$SRC_FOLDER")"; then
			cp -a $SRC_FOLDER/* $DST_FOLDER
		else
			echo The directory $SRC_FOLDER is empty '(or non-existent)'
		fi

		mount -o bind $DST_FOLDER $SRC_FOLDER
	fi
}
mnt_bind_file(){
	DST_FILE=$1
	SRC_FILE=$2

	#echo "=== Initial: mount bind $DST_FILE to $SRC_FILE ===" > /dev/kmsg
	mntdone=`mount -o bind $DST_FILE $SRC_FILE 2>&1`

	if [ ! "$mntdone" == "" ]; then
		#echo "=== Initial: new, need copy ===" > /dev/kmsg
		cp -a $SRC_FILE $DST_FILE
		sync
		mount -o bind $DST_FOLDER $SRC_FOLDER
	fi
}

# mount nvram and link it
mnt_folder nvdata $NVDATA_PATH
mkdir -p /data/nvram
[ ! -f  "/mnt/vendor/nvram/raw" ] && /bin/dd if=/dev/zero of=/mnt/vendor/nvram/raw bs=1024 count=16384
mnt_folder protect_a $PROTECT1_PATH
mnt_folder protect_b $PROTECT2_PATH

mnt_folder log /log
mnt_bind_folder /log    /var/log

# link /var/log --> /data/local for MET
#if [ ! -e /data/local ] ; then
#	ln -sf /var/log /data/local
#fi

mkdir -p /run/media
# link /var/log --> /run/media/mmcblk1p1 for AP/MD/Networking logging storage
ln -sf /var/log /run/media/mmcblk1p1

if [ ! -e /mnt/sdcard ] ; then
	ln -sf /var/log /mnt/sdcard
fi


echo "=== Initial: MOUNT Configuration End ===" > /dev/kmsg
