#!/bin/sh
#
# VMTux.net
#
# /etc/mdev.d/storage
#
#
# called by mdev rule
# when mounted and directory 'vmt' exist make link to that device
#   for example /mnt/tux -> /mnt/sda1
#   /mnt/tux/vmt is where pkg/ boot.lst and backup/ are located
#
#  sda1 sdb1 sdc1 etc. are enumerated by the kernel by its availabilty time
#  these names change order on reboots!!
#
. /etc/vmt/vmt-conf

PATH=/bin:/sbin

umask 022

function AddStorage()
{
  local field name value LABEL UUID TYPE PTTYPE PARTUUID
  local blkid_output=$(blkid "/dev/${MDEV}")
  eval "${blkid_output#*: }"

  case "${TYPE}" in
     swap)
	swapon /dev/${MDEV} 
	sed -i "/^\/dev\/${MDEV}/d" $VMT_FSTAB
	printf "%-15s %-15s %-8s %-20s %-s\n" "/dev/${MDEV}" "none" "${TYPE}" "defaults" "0 0 ${VMT_ADDEDBY}" >> ${VMT_FSTAB}
	;;
     ext2|ext3|ext4)
	mkdir -p /mnt/${MDEV}
	mount -t ${TYPE} /dev/${MDEV} /mnt/${MDEV}
	if [ -d /mnt/${MDEV}/${VMT_NAME} ]; then ln -s /mnt/${MDEV} ${VMT_DEVICE} ; fi     	
	sed -i "/^\/dev\/${MDEV}/d" ${VMT_FSTAB}
	printf "%-15s %-15s %-8s %-20s %-s\n" "/dev/${MDEV}" "/mnt/${MDEV}" "${TYPE}" "${VMT_OPTIONS}" "0 2 ${VMT_ADDEDBY}" >> ${VMT_FSTAB}
	;;
     vfat|ntfs)
	mkdir -p /mnt/${MDEV}
#	mount -t ${TYPE} /dev/${MDEV} /mnt/${MDEV}
	sed -i "/^\/dev\/${MDEV}/d" ${VMT_FSTAB}
	printf "%-15s %-15s %-8s %-20s %-s\n" "/dev/${MDEV}" "/mnt/${MDEV}" "${TYPE}" "${VMT_OPTIONS}" "0 0 ${VMT_ADDEDBY}" >> ${VMT_FSTAB}
	;;
     *)
        echo "add unknown storage:[${MDEV}] type:[${TYPE}]" >> ${VMT_MDEV_STORAGE_LOG}
        ;;        
  esac
}

function RemoveStorage()
{
  local field name value LABEL UUID TYPE PTTYPE PARTUUID
  local blkid_output=$(blkid "/dev/${MDEV}")
  eval "${blkid_output#*: }"

  case "${TYPE}" in
     swap)
     	swapoff /dev/${MDEV}
     	sed -i "/^\/dev\/${MDEV}/d" ${VMT_FSTAB}
     	;;
     ext2|ext3|ext4|ntfs)
	sed -i "/^\/dev\/${MDEV}/d" ${VMT_FSTAB}
	umount -f /mnt/${MDEV}
	rmdir -f /mnt/${MDEV}
        ;;
     *)
        echo "remove unknown storage:[${MDEV}] type:[${TYPE}]" >> ${VMT_MDEV_STORAGE_LOG}
        ;;
  esac

}

case "${ACTION}" in
  add)
    AddStorage ;;
  remove)
    RemoveStorage ;;
  *)
    echo "Unknown action:[${ACTION}]" >> ${VMT_MDEV_STORAGE_LOG} ;;
esac

exit 0
