21.06.2016 20:03, Chris Friesen wrot:
On 06/20/2016 05:50 PM, Chris Friesen wrote:

Hi,

The heartbeat/LVM OCF script uses the following logic for the LVM_status() 
routine:

if [ -d /dev/$1 ]; then
     test "`cd /dev/$1 && ls`" != ""
     rc=$?
     if [ $rc -ne 0 ]; then
         ocf_exit_reason "VG $1 with no logical volumes is not supported by this 
RA!"
     fi
fi

<snip>

I think it would be better to query the activity directly, using something like
"lvs -o name,selected  -S lv_active=active,vg_name=<volume_group>"

I'm testing with the following code instead of the above snippet and it seems 
to work okay:

        # Ask lvm whether the volume group is active.  This maps to
        # the question "Are there any logical volumes that are active in
        # the specified volume group?".
        lvs --noheadings -o selected  -S lv_active=active,vg_name=${1}|grep -q 1

This ^^^ has a big chance to timeout in both monitor and subsequent stop operations if clustered VG is used and clvmd is stuck because dlm is waiting for fencing (of another node) to finish. Or if (clustered) VG is created on an iSCSI/iSRP/FC/FCoE/etc block device which is not available for some period of time due to target/network problems.

Both cases lead to fencing of all cluster nodes.

        if [ $? -ne 0 ]; then
                ocf_log $loglevel "LVM Volume $1 is not available (stopped)"
                rc=$OCF_NOT_RUNNING
        else
                rc=0
                case $(get_vg_mode) in
                1) # exclusive with tagging.
                        # If vg is running, make sure the correct tag is 
present. Otherwise we
                        # can not guarantee exclusive activation.
                        if ! check_tags; then


The alternative would be to leave the original snippet and add this test if the 
directory
is present.

Chris

_______________________________________________
Developers mailing list
[email protected]
http://clusterlabs.org/mailman/listinfo/developers



_______________________________________________
Developers mailing list
[email protected]
http://clusterlabs.org/mailman/listinfo/developers

Reply via email to