Files
integ/base/cluster-resource-agents/debian/bullseye/patches/Fix-VG-activity-bug-in-heartbeat-LVM-script.patch
pmp1 6cfb528a43 Update integ/base packages for Bullseye
Aligned the package layout with the concurrent Debian packaging
conventions. Relocated package files under 'debian/bullseye/' and removed legacy paths under 'debian/'.

Updated related build references to ensure compatibility with Bullseye.
ca-certificate
cluster-resource-agents
dhcp
dnsmasq
haproxy
libfdt
lighttpd
linuxptp
lvm2
lsb
openssl
pf-bb-config
stalld
synce4l
systemd
watchdog

Change-Id: Id31c289b6504433f2b739be614022cfed0c2a9b8
Signed-off-by: pmp1 <preetham.mp@windriver.com>
2025-11-18 23:05:43 -05:00

61 lines
1.9 KiB
Diff

From 7c181a1afdc85456333f9cbf9c5827ceb0554a91 Mon Sep 17 00:00:00 2001
From: Chris Friesen <chris.friesen@windriver.com>
Date: Fri, 24 Aug 2018 03:51:37 +0800
Subject: [PATCH] Fix VG activity bug in heartbeat/LVM script
There is currently an issue in the lvm2 package where if you create an LVM thin
pool, then create a thin volume in the pool, then the udev rule doesn't think
there should be a /dev// symlink for the thin pool, but "vgmknodes" and
"vgscan --mknodes" both think that there should be such a symlink. This is a
bug, but it's in the field in CentOS 7 at least and likely elsewhere.
The end result of this is that on such a system running either "vgscan
--mknodes" or "vgmknodes" and then running "vgchange -an " will
leave the /dev/ directory with a dangling symlink in it.
This breaks the LVM_status() function in this OCF script, since the
/dev/ directory exists and is not empty even though the volume
group is not active.
This commit changes the code to directly query lvm about the volume group
activity rather than relying on side effects.
Signed-off-by: zhipengl <zhipengs.liu@intel.com>
---
heartbeat/LVM | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/heartbeat/LVM b/heartbeat/LVM
index 893ece8..1efb207 100755
--- a/heartbeat/LVM
+++ b/heartbeat/LVM
@@ -191,18 +191,15 @@ LVM_status() {
fi
fi
- 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
-
- if [ $rc -ne 0 ]; then
+ # 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
+ if [ $? -ne 0 ]; then
ocf_log $loglevel "LVM Volume $1 is not available (stopped)"
rc=$OCF_NOT_RUNNING
else
+ rc=0
lvm_status
rc=$?
fi
--
2.7.4