#! /bin/bash
#
# $1 = /dev[sd,scd,st] entry
# $2 = iSCSI Channel ID
# $3 = iSCSI Logical Unit Number
# $4 = Partition
# $5 = iSCSI LUN Mount point
# $6 = iSCSI Target Node Directory
# $7 = fuser on active mount
#

#echo "$1, $2, $3, $4, $5, $6, $7"

FORCE=$7

if [ $4 != 0 ]; then
	DEV=$1$4
else
        DEV=$1
fi

df > /tmp/iscsi-umount.cache
if ! grep -q "/dev/$DEV" /tmp/iscsi-umount.cache
then
	echo "iSCSI Channel[$2] LUN[$3] STATUS: [NOT MOUNTED]"
	echo "No Mapping from /dev/$DEV to /$6/$5"
	rm -rf /tmp/iscsi-umount.cache
	exit 0
fi
rm -rf /tmp/iscsi-umount.cache

/bin/umount /$6/$5 > /dev/null 2>&1
RET=$?

if [ $RET == 0 ]; then
	echo "iSCSI Channel[$2] LUN[$3] STATUS: [UNMOUNTED]"
	echo "iSCSI Channel[$2] LUN[$3] /dev/$DEV from /$6/$5"
	exit 0
fi

if [ ! $FORCE ]; then
	echo "iSCSI Channel[$2] LUN[$3] STATUS: [BUSY] -> [EXIT]"
	echo "Mapping /dev/$DEV in busy state at /$6/$5"
	exit 1
fi

echo "iSCSI Channel[$2] LUN[$3] STATUS: [BUSY] -> [FUSER]"

fuser -k -m /$6/$5 > /dev/null 2>&1
sleep 1

/bin/umount /$6/$5 > /dev/null 2>&1
echo "iSCSI Channel[$2] LUN[$3] STATUS: [UNMOUNTED]"
echo "iSCSI Channel[$2] LUN[$3] /dev/$DEV from /$6/$5"

exit 0
