From mboxrd@z Thu Jan 1 00:00:00 1970 From: jbrassow@sourceware.org Date: 9 May 2007 20:50:51 -0000 Subject: [Cluster-devel] cluster/rgmanager/src/resources lvm.sh Message-ID: <20070509205051.19610.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: cluster Branch: RHEL4 Changes by: jbrassow at sourceware.org 2007-05-09 20:50:51 Modified files: rgmanager/src/resources: lvm.sh Log message: If misconfigured, HA LVM + mirroring can cause data corruption. We should attempt to catch configuration errors before allowing LVM resources to start. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/lvm.sh.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.1.2.4&r2=1.1.2.5 --- cluster/rgmanager/src/resources/lvm.sh 2007/05/09 18:03:28 1.1.2.4 +++ cluster/rgmanager/src/resources/lvm.sh 2007/05/09 20:50:51 1.1.2.5 @@ -432,6 +432,32 @@ return $OCF_SUCCESS } +ha_lvm_proper_setup_check() +{ + # First, let's check that they have setup their lvm.conf correctly + if ! lvm dumpconfig activation/volume_list >& /dev/null || + ! lvm dumpconfig activation/volume_list | grep $(local_node_name); then + ocf_log err "lvm.conf improperly configured for HA LVM." + return $OCF_ERR_GENERIC + fi + + # Next, we need to ensure that their initrd has been updated + if [ -e /boot/initrd-`uname -r`.img ]; then + if [ "$(find /boot/initrd-`uname -r`.img -newer /etc/lvm/lvm.conf)" == "" ]; then + ocf_log err "HA LVM requires the initrd image to be newer than lvm.conf" + return $OCF_ERR_GENERIC + fi + else + # Best guess... + if [ "$(find /boot/*.img -newer /etc/lvm/lvm.conf)" == "" ]; then + ocf_log err "HA LVM requires the initrd image to be newer than lvm.conf" + return $OCF_ERR_GENERIC + fi + fi + + return $OCF_SUCCESS +} + case $1 in start) if [[ $(vgs -o attr --noheadings $OCF_RESKEY_vg_name) =~ .....c ]]; then @@ -439,6 +465,8 @@ exit 0 fi + ha_lvm_proper_setup_check || exit 1 + if [ -z $OCF_RESKEY_lv_name ]; then vg_activate start || exit 1 else @@ -462,6 +490,10 @@ exit 0 fi + if ! ha_lvm_proper_setup_check; then + ocf_log err "WARNING: An improper setup can cause data corruption!" + fi + if [ -z $OCF_RESKEY_lv_name ]; then vg_activate stop || exit 1 else