Home | History | Annotate | Line # | Download | only in rc.d
      1  1.1     haad #!/bin/sh
      2  1.1     haad #
      3  1.8   andvar # $NetBSD: lvm,v 1.8 2021/08/21 23:00:30 andvar Exp $
      4  1.1     haad #
      5  1.1     haad 
      6  1.5    joerg # PROVIDE: lvm
      7  1.7  mlelstv # REQUIRE: root devpubd
      8  1.5    joerg # 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.6    skrll 		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.6    skrll 
     35  1.8   andvar 		# Activate all LV's and create appropriate nodes in /dev
     36  1.1     haad 		/sbin/lvm vgchange --ignorelockingfailure -a y >/dev/null
     37  1.3     haad 		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.6    skrll 		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.6    skrll 
     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.6    skrll 
     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.6    skrll 
     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