#!/bin/sh

PATH=/usr/sbin:/usr/bin:/sbin:/bin

ROOTDEV=''
ROOTFS=''
INSTALLDEV=''
DEVICE=""
DEVICE_LABEL_UPDATE="UPDATE"
MNT_UPDATE="/mnt/update"
FORMAT_EXT4=$(command -v mkfs.ext4)

if [ -b /dev/disk/by-label/$DEVICE_LABEL_UPDATE ]; then
    echo "The update dev is found. Mount it and exit ..."
    mount /dev/disk/by-label/$DEVICE_LABEL_UPDATE $MNT_UPDATE
    exit 0
else
    echo "The update dev is not found by label. Try to find by block dev name ..."
fi


if [ -b /dev/hda ]; then
    DEVICE="/dev/hda"
elif [ -b /dev/sda ]; then
    DEVICE="/dev/sda"
elif [ -b /dev/vda ]; then
    DEVICE="/dev/vda"
elif [ -b /dev/xvda ]; then
    DEVICE="/dev/xvda"
fi

if [ "$DEVICE" == "" ]; then
    echo "There is no device selected, exit ..."
    exit -1
else
    echo "Found the device: "$DEVICE
fi

function parse_opt() {
	case "$1" in
		*\=*)
		echo "$1" | cut -f2 -d=
		;;
	esac
}

# Get default root device and file system
if [ -r /rootdev ]; then
  ROOTDEV=`cat /rootdev`
fi
if [ -r /rootfs ]; then
  ROOTFS=`cat /rootfs`
fi

# Scan CMDLINE for any specified real_root etc.
CMDLINE=`cat /proc/cmdline`

#echo $CMDLINE

for x in $CMDLINE
do
    case "$x" in
	    root\=*)
	    ROOTDEV=`parse_opt "$x"`
    esac
done

#echo "rootdev = " $ROOTDEV

if [ "$ROOTDEV" == "$DEVICE""2" ]; then
    INSTALLDEV=$DEVICE"3"
elif [ "$ROOTDEV" == "$DEVICE""3" ]; then
    INSTALLDEV=$DEVICE"2"
else
    echo "There is no device where to install, exit ..."
    exit -1
fi

#echo "===================================================="
#echo "=======START FORMAT THE UPDATE PARTITION============"
#echo "===================================================="
#echo "install dev = "$INSTALLDEV

umount $INSTALLDEV

#echo "Clear the "$INSTALLDEV

if [ -z $FORMAT_EXT4 ]; then
  mkfs.ext3 $INSTALLDEV
else
  $FORMAT_EXT4 $INSTALLDEV
fi

if [ $? -eq 0 ]; then
    echo "mkfs is done" 
else
    echo "ERROR: cannot do mkfs ..."	
    exit -1
fi

tune2fs -L $DEVICE_LABEL_UPDATE $INSTALLDEV

if [ $? -eq 0 ]; then
    echo "tune2fs is done" 
else
    echo "ERROR: cannot do tunefs ..."	
    exit -1
fi

udevtrigger

/bin/sleep 5

mount /dev/disk/by-label/$DEVICE_LABEL_UPDATE $MNT_UPDATE

if [ $? -eq 0 ]; then
    echo "mount by label is done" 
else
    mount $INSTALLDEV $MNT_UPDATE
    
    if [ $? -eq 0 ]; then
	echo "mount by dev is done" 
    else
	echo "ERROR: cannot do mount"	
	exit -1
    fi
fi


exit 0
