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