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