2014-02-10 20:05:10 +04:00
#!/bin/bash
sbindir = @sbindir@
lvm_vgchange = ${ sbindir } /vgchange
lvm_vgscan = ${ sbindir } /vgscan
lvm_vgs = ${ sbindir } /vgs
lvm_lvm = ${ sbindir } /lvm
parse_clustered_vgs( ) {
while read -r name attrs;
do
test " ${ attrs : 5 : 1 } " = = 'c' && echo -n " $name "
done
}
# NOTE: replace this with vgs, once display filter per attr is implemented.
clustered_vgs( ) {
${ lvm_vgs } -o vg_name,vg_attr --noheadings | parse_clustered_vgs
}
activate( ) {
eval local $( ${ lvm_lvm } dumpconfig devices/obtain_device_list_from_udev 2>/dev/null) 2>/dev/null
if [ $? -ne 0 ] ; then
echo "Warning: expected single couple of key=value in output of dumpconfig"
fi
if [ -z $obtain_device_list_from_udev -o $obtain_device_list_from_udev -ne 1 ] ; then
echo -n "lvm.conf option obtain_device_list_from_udev!=1: Executing vgscan"
${ lvm_vgscan } > /dev/null 2>& 1
fi
echo -n " Activating ${ LVM_VGS :- "all VG(s)" } : "
2014-02-11 16:48:04 +04:00
# Respect activation/auto_activation_volume_list!
# Call "-aay" which is equal to "-aly" but respects this list.
${ lvm_vgchange } -aay $LVM_VGS || return 1
2014-02-10 20:05:10 +04:00
return 0
}
deactivate( )
{
# NOTE: following section will be replaced by blkdeactivate script
# with option supporting request to deactivate all clustered volume
# groups in the system
[ -z $LVM_VGS ] && LVM_VGS = " $( clustered_vgs) "
if [ -n " $LVM_VGS " ] ; then
echo -n "Deactivating clustered VG(s): "
${ lvm_vgchange } -anl $LVM_VGS || return 1
fi
return 0
}
case " $1 " in
deactivate)
deactivate
rtrn = $?
; ;
activate)
activate
rtrn = $?
; ;
*)
echo $" Usage: $0 {activate|deactivate} "
rtrn = 3
; ;
esac
exit $rtrn