Home | History | Annotate | Line # | Download | only in rc.d
lvm revision 1.2.2.1
      1      1.1  haad #!/bin/sh
      2      1.1  haad #
      3  1.2.2.1   jym # $NetBSD: lvm,v 1.2.2.1 2009/05/13 19:18:03 jym Exp $
      4      1.1  haad #
      5      1.1  haad 
      6  1.2.2.1   jym # PROVIDE: lvm
      7  1.2.2.1   jym # REQUIRE: root
      8  1.2.2.1   jym # BEFORE:  DISKS
      9      1.1  haad 
     10      1.1  haad $_rc_subr_loaded . /etc/rc.subr
     11      1.1  haad 
     12      1.1  haad name="lvm"
     13      1.1  haad rcvar=$name
     14      1.1  haad start_cmd="lvm_start"
     15      1.1  haad stop_cmd="lvm_stop"
     16      1.1  haad 
     17      1.2  haad ifs_restore="$IFS";
     18      1.1  haad 
     19      1.1  haad lvm_start()
     20      1.1  haad {
     21      1.2  haad 	if [ -x /sbin/dmsetup ]; then
     22      1.2  haad 		/sbin/dmsetup version >/dev/null
     23      1.2  haad 		if [ $? -ne 0 ]; then 
     24      1.2  haad 			warn "Device-mapper not present in kernel"
     25      1.2  haad 			return 1;
     26      1.2  haad 		fi
     27      1.2  haad 	fi
     28      1.1  haad 
     29      1.2  haad 	if [ -x /sbin/lvm ]; then
     30      1.2  haad 		echo "Configuring lvm devices."
     31      1.1  haad 
     32      1.1  haad 		# Scan for all available VG's
     33      1.2  haad 		/sbin/lvm vgscan --mknodes --ignorelockingfailure >/dev/null
     34      1.2  haad 	
     35      1.1  haad 		# Activate all LV's and create apropriate nodes in /dev
     36      1.1  haad 		/sbin/lvm vgchange --ignorelockingfailure -a y >/dev/null
     37  1.2.2.1   jym 		LV_LIST=$(/sbin/lvm vgdisplay -C -o vg_name --noheadings 2>/dev/null)
     38      1.2  haad 		echo " Activated Volume Groups:" $LV_LIST
     39      1.2  haad 	fi
     40      1.1  haad }
     41      1.1  haad 
     42      1.1  haad lvm_stop()
     43      1.1  haad {
     44      1.2  haad 	if [ -x /sbin/dmsetup ]; then
     45      1.2  haad 		/sbin/dmsetup version >/dev/null
     46      1.2  haad 		if [ $? -ne 0 ]; then 
     47      1.2  haad 			warn "Device-mapper not present in kernel"
     48      1.2  haad 			return 1;
     49      1.2  haad 		fi
     50      1.2  haad 	fi
     51      1.1  haad 
     52      1.2  haad 	if [ -x /sbin/lvm ]; then
     53      1.2  haad 		echo "Unconfiguring lvm devices."
     54      1.2  haad 	
     55      1.2  haad 		LOGICAL_VOLUMES=$(/sbin/lvm lvdisplay -C -o vg_name,lv_name \
     56      1.2  haad 			-O vg_name --separator \/ --noheadings 2>/dev/null)
     57      1.2  haad 		VOLUME_GROUPS=$(/sbin/lvm vgdisplay -C -o vg_name \
     58      1.2  haad 			--separator " " --noheadings 2>/dev/null)
     59      1.2  haad 
     60      1.2  haad 		for lv in ${LOGICAL_VOLUMES}; do
     61      1.2  haad 			LV_IS_ACTIVE=$(/sbin/lvm lvdisplay -C --noheadings \
     62      1.2  haad 				-o lv_attr $lv)
     63      1.2  haad 			case $LV_IS_ACTIVE in
     64      1.2  haad 			*a*)
     65      1.2  haad 				echo "  Shutting Down logical volume: ${lv}"
     66      1.2  haad 				/sbin/lvm lvchange -an --ignorelockingfailure \
     67      1.2  haad 					-P ${lv} >/dev/null
     68      1.2  haad 				;;
     69      1.2  haad 			esac
     70      1.1  haad 		done
     71      1.2  haad 	
     72      1.2  haad 		for vg in ${VOLUME_GROUPS}; do
     73      1.2  haad 			# Set IFS to field separator
     74      1.2  haad 			IFS=":"
     75      1.2  haad 			set -- $(/sbin/lvm vgdisplay -cA ${vg} 2>/dev/null)
     76      1.2  haad 			# The seventh parameter is number of opened LVs in a Volume Group
     77      1.2  haad 			VG_HAS_ACTIVE_LV=$7
     78      1.2  haad 			IFS="$ifs_restore";
     79      1.2  haad     
     80      1.2  haad 			if [ "${VG_HAS_ACTIVE_LV}" = 0 ]; then
     81      1.2  haad 				echo "  Shutting Down volume group: ${vg}"
     82      1.2  haad 				/sbin/lvm vgchange -an --ignorelockingfailure \
     83      1.2  haad 					-P ${vg} >/dev/null
     84      1.2  haad 			fi
     85      1.1  haad 		done
     86      1.2  haad 	fi
     87      1.1  haad }
     88      1.1  haad 
     89      1.1  haad load_rc_config $name
     90      1.1  haad run_rc_command "$1"
     91