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