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