Home | History | Annotate | Line # | Download | only in rc.d
lvm revision 1.1
      1  1.1  haad #!/bin/sh
      2  1.1  haad #
      3  1.1  haad # $NetBSD: lvm,v 1.1 2009/01/14 22:07:55 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.1  haad dm_test()
     16  1.1  haad {
     17  1.1  haad     if [ -x /sbin/dmsetup ]; then
     18  1.1  haad 	/sbin/dmsetup version >/dev/null
     19  1.1  haad 	
     20  1.1  haad 	if [ $? -ne 0 ]; then 
     21  1.1  haad 	    echo "Device-mapper not present in kernel"
     22  1.1  haad 	    exit;
     23  1.1  haad 	fi
     24  1.1  haad     fi
     25  1.1  haad }
     26  1.1  haad 
     27  1.1  haad lvm_start()
     28  1.1  haad {
     29  1.1  haad         dm_test;
     30  1.1  haad 
     31  1.1  haad         if [ -x /sbin/lvm ]; then
     32  1.1  haad                 echo "Configuring lvm devices."
     33  1.1  haad 
     34  1.1  haad 		# Scan for all available VG's
     35  1.1  haad 	        /sbin/lvm vgscan --mknodes --ignorelockingfailure >/dev/null
     36  1.1  haad 		
     37  1.1  haad 		# Activate all LV's and create apropriate nodes in /dev
     38  1.1  haad 		/sbin/lvm vgchange --ignorelockingfailure -a y >/dev/null
     39  1.1  haad 		
     40  1.1  haad 		echo "   Activated Volume Groups:"`/sbin/lvm vgdisplay -C -o vg_name --noheadings 2>/dev/null`
     41  1.1  haad         fi
     42  1.1  haad }
     43  1.1  haad 
     44  1.1  haad lvm_stop()
     45  1.1  haad {
     46  1.1  haad       dm_test;
     47  1.1  haad 
     48  1.1  haad       if [ -x /sbin/lvm ]; then
     49  1.1  haad                 echo "Deconfiguring lvm devices."
     50  1.1  haad 
     51  1.1  haad 		LOGICAL_VOLUMES=`/sbin/lvm lvdisplay -C -o vg_name,lv_name -O vg_name --separator \/ --noheadings 2>/dev/null`
     52  1.1  haad 		VOLUME_GROUPS=`/sbin/lvm vgdisplay -C -o vg_name --separator " " --noheadings 2>/dev/null`
     53  1.1  haad 
     54  1.1  haad 		for x in ${LOGICAL_VOLUMES}; do
     55  1.1  haad 		    IFS=":"
     56  1.1  haad 		    set -- `/sbin/lvm lvdisplay -c`
     57  1.1  haad 		    # The fourth argument in the column LV display is inkernel flag
     58  1.1  haad 		    LV_IS_ACTIVE=$4;
     59  1.1  haad 		    unset IFS
     60  1.1  haad 
     61  1.1  haad 		    if [ ${LV_IS_ACTIVE} -eq 1 ]; then
     62  1.1  haad 			echo "  Shutting Down logical volume: ${x} "
     63  1.1  haad 			/sbin/lvm lvchange -an --ignorelockingfailure -P ${x} >/dev/null
     64  1.1  haad 		    fi
     65  1.1  haad 		done
     66  1.1  haad 
     67  1.1  haad 		for x in ${VOLUME_GROUPS}; do
     68  1.1  haad 		    echo "VG -> |${x}|"
     69  1.1  haad 		    # Set IFS to field separator
     70  1.1  haad 		    IFS=":"
     71  1.1  haad 		    set -- `/sbin/lvm vgdisplay -cA ${x} 2>/dev/null`
     72  1.1  haad 		    # The seventh parameter is number of opened LVs in a Volume Group
     73  1.1  haad 		    VG_HAS_ACTIVE_LV=$7
     74  1.1  haad 		    unset IFS
     75  1.1  haad 
     76  1.1  haad 		    if [ "${VG_HAS_ACTIVE_LV}" = 0 ]
     77  1.1  haad 		    then
     78  1.1  haad 			echo "  Shutting Down volume group: ${x}"
     79  1.1  haad 			/sbin/lvm vgchange -an --ignorelockingfailure -P ${x} >/dev/null
     80  1.1  haad 		    fi
     81  1.1  haad 		done
     82  1.1  haad         fi
     83  1.1  haad }
     84  1.1  haad 
     85  1.1  haad load_rc_config $name
     86  1.1  haad run_rc_command "$1"
     87  1.1  haad 
     88