55 lines
2.1 KiB
Diff
55 lines
2.1 KiB
Diff
|
From 2c219dd000d7f5edd3765a1c6bc5f3e6efb7208b Mon Sep 17 00:00:00 2001
|
||
|
From: Paul Mezzanini <pfmeec@rit.edu>
|
||
|
Date: Fri, 1 Jun 2018 11:58:06 -0400
|
||
|
Subject: [PATCH] Volume groups and logical volumes "-" in their name get
|
||
|
mangled with double dashes in dmsetup. Switching to wc and just counting
|
||
|
lines while depending on the vgname + lvname filter in the dmsetup call gets
|
||
|
around the issue with dmsetup outputting correctly but grep failing due to
|
||
|
the name mangle.
|
||
|
|
||
|
Logic for both test cases and dmsetup calls changed so they match too. No reason
|
||
|
to not have matching tests.
|
||
|
|
||
|
This is AllBad but there isn't a better way that I'm aware of yet.
|
||
|
---
|
||
|
heartbeat/LVM-activate | 17 ++++++++++++-----
|
||
|
1 file changed, 12 insertions(+), 5 deletions(-)
|
||
|
|
||
|
diff --git a/heartbeat/LVM-activate b/heartbeat/LVM-activate
|
||
|
index 60e656178..fbd058288 100755
|
||
|
--- a/heartbeat/LVM-activate
|
||
|
+++ b/heartbeat/LVM-activate
|
||
|
@@ -692,20 +692,27 @@ tagging_deactivate() {
|
||
|
# lvs/vgs when the metadata is somehow inconsistent.
|
||
|
#
|
||
|
# So, we have to make compromise that the VG is assumably active if any LV of the VG is active.
|
||
|
+#
|
||
|
+# Paul:
|
||
|
+# VGS + LVS with "-" in their name get mangled with double dashes in dmsetup.
|
||
|
+# Switching to wc and just counting lines while depending on the vgname + lvname filter
|
||
|
+# in dmsetup gets around the issue with dmsetup reporting correctly but grep failing.
|
||
|
+#
|
||
|
+# Logic for both test cases and dmsetup calls changed so they match too.
|
||
|
+#
|
||
|
+# This is AllBad but there isn't a better way that I'm aware of yet.
|
||
|
lvm_status() {
|
||
|
local dm_count
|
||
|
|
||
|
if [ -n "${LV}" ]; then
|
||
|
# dmsetup ls? It cannot accept device name. It's
|
||
|
# too heavy to list all DM devices.
|
||
|
- dmsetup info --noheadings --noflush -c -S "vgname=${VG} && lvname=${LV}" \
|
||
|
- | grep -Eq "${VG}-+${LV}"
|
||
|
+ dm_count=$(dmsetup info --noheadings --noflush -c -S "vgname=${VG} && lvname=${LV}" | wc -l )
|
||
|
else
|
||
|
- dm_count=$(dmsetup --noheadings info -c -S "vgname=${VG}" 2>/dev/null | grep -c "${VG}-")
|
||
|
- test $dm_count -gt 0
|
||
|
+ dm_count=$(dmsetup info --noheadings --noflush -c -S "vgname=${VG}" 2>/dev/null | wc -l )
|
||
|
fi
|
||
|
|
||
|
- if [ $? -ne 0 ]; then
|
||
|
+ if [ $dm_count -eq 0 ]; then
|
||
|
return $OCF_NOT_RUNNING
|
||
|
fi
|
||
|
|