#!/bin/bash
#	mountdisk
#

PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
ev_path=/usr/local/bin/events_up

chkdsk_filesystem(){
        for file_system in $(file -s $1| tr " " "\n")
        do
                if [ "$file_system" == "filesystem" ]
                then

                 case "$file_system_up" in
                "XFS")
                        xfs_repair -L $1
                ;;
                "ext3")
                     #   e2fsck -y -f $1
                ;;
                "ext4")
                     #   e4fsck -y -f $1
                ;;
                 *)
                 ;;
                esac
                fi
                file_system_up=$file_system

        done
        return 0
}

mountdisk()
{
	disk_dir=$1
	disk_dev=$2
	if  [ -b "$disk_dev" ]
	then
		[ -b $disk_dir ] || mkdir -p $disk_dir
		cat /proc/mounts |grep -q "$(echo $disk_dir)" 
		if [ ! $? == 0 ]
        	then
			chkdsk_filesystem $disk_dev	
#			echo mount -o noatime  $disk_dev $disk_dir
			mount -o noatime  $disk_dev $disk_dir
			cd $disk_dir && rm -fr "lost+found" && cd /
			if [ ! $? == 0 ]
			then
               			echo mount -o noatime $disk_dev $disk_dir, disk mount  fail
				$ev_path "kvdisk" "740000" "4.0"  "1" "740011" "$?" "$disk_dev $disk_dir, disk mount  fail" & 1>/dev/null
#			else
#				$ev_path "kvdisk" "740000" "4.0"  "0" "740013" "$?" "" & 1>/dev/null
			fi

				
        	fi
	else
		echo disk: $3 ,dev: $disk_dev ,not found !
	fi

	return 0
}

start() {
	echo "disk mount begin "
#######################	system disk ############################################
        for system_disk in $(hintget system_list | tr ',' ' ')
        do
		disk_dir=$(hintget ${system_disk}_dir)
		disk_dev=$(hintget ${system_disk}_dev)
		mountdisk $disk_dir $disk_dev $system_disk
        done

#######################	writeback disk ############################################
        for writeback_disk in $(hintget writeback_list | tr ',' ' ')
	do
		disk_dir=$(hintget ${writeback_disk}_dir)
		disk_dev=$(hintget ${writeback_disk}_dev)
		mountdisk $disk_dir $disk_dev $writeback_disk
       	 done

	echo "disk mount end "
}

umountdisk()
{
	disk_dir=$1
	disk_dev=$2
	cat /proc/mounts |grep -q "$(echo $disk_dir)" 
	if [  $? == 0 ]
        then
		echo umount $disk_dir		
		umount $disk_dir		
		if [ ! $? == 0 ]
		then
			echo umount dir:$disk_dir ,dev:$disk_dev, disk umount  fail
		fi
        fi

}
stop() {
			
	echo "disk umount begin "
#######################	system disk ############################################
        for system_disk in $(hintget system_list | tr ',' ' ')
        do
		disk_dir=$(hintget ${system_disk}_dir)
		disk_dev=$(hintget ${system_disk}_dev)
		umountdisk $disk_dir $disk_dev
        done

#######################	writeback disk ############################################
        for writeback_disk in $(hintget writeback_list | tr ',' ' ')
        do
		disk_dir=$(hintget ${writeback_disk}_dir)
		disk_dev=$(hintget ${writeback_disk}_dev)
		umountdisk $disk_dir $disk_dev
        done
	echo "disk umount end ".
}

case $1 in 
   -a)
	start
	;;
   -u)
	stop
	;;
   -r)
	stop
	start
	echo "kvdisk restart end.."
	;;
   *)
	echo "mountdisk -a : mount all use disk by kdisk"
	echo "mountdisk -u : umount all use disk by kdisk"
	echo "mountdisk -r : remount all use disk by kdisk"
esac

