Merge "Add debian package for cluster-resource-agents"
This commit is contained in:
commit
82bad921f3
10
base/cluster-resource-agents/debian/meta_data.yaml
Normal file
10
base/cluster-resource-agents/debian/meta_data.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
debver: 1:4.7.0-1
|
||||
debname: resource-agents
|
||||
dl_path:
|
||||
name: resource-agents-debian-1%254.7.0-1.tar.gz
|
||||
url: https://salsa.debian.org/ha-team/resource-agents/-/archive/debian/1%254.7.0-1/resource-agents-debian-1%254.7.0-1.tar.gz
|
||||
md5sum: 0b11082c28da42bd64c815a755cafc91
|
||||
revision:
|
||||
dist: $STX_DIST
|
||||
PKG_GITREVCOUNT:
|
@ -0,0 +1,60 @@
|
||||
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
|
||||
|
51
base/cluster-resource-agents/debian/patches/copyright.patch
Normal file
51
base/cluster-resource-agents/debian/patches/copyright.patch
Normal file
@ -0,0 +1,51 @@
|
||||
From 81bcbfb829001ccf61b515edb3d53ac8f15df334 Mon Sep 17 00:00:00 2001
|
||||
From: Scott Little <scott.little@windriver.com>
|
||||
Date: Fri, 26 Aug 2016 15:06:10 -0400
|
||||
Subject: [PATCH 04/12] WRS: Patch108: copyright.patch
|
||||
|
||||
---
|
||||
heartbeat/Filesystem | 2 ++
|
||||
heartbeat/LVM | 1 +
|
||||
heartbeat/pgsql | 1 +
|
||||
3 files changed, 4 insertions(+)
|
||||
|
||||
diff --git a/heartbeat/Filesystem b/heartbeat/Filesystem
|
||||
index 27f03d2..af821b2 100755
|
||||
--- a/heartbeat/Filesystem
|
||||
+++ b/heartbeat/Filesystem
|
||||
@@ -2,6 +2,8 @@
|
||||
#
|
||||
# Support: users@clusterlabs.org
|
||||
# License: GNU General Public License (GPL)
|
||||
+#
|
||||
+# Copyright (c) 2014 Wind River Systems, Inc. All rights reserved.
|
||||
#
|
||||
# Filesystem
|
||||
# Description: Manages a Filesystem on a shared storage medium.
|
||||
diff --git a/heartbeat/LVM b/heartbeat/LVM
|
||||
index e435e7b..c11fed7 100755
|
||||
--- a/heartbeat/LVM
|
||||
+++ b/heartbeat/LVM
|
||||
@@ -10,6 +10,7 @@
|
||||
# Support: users@clusterlabs.org
|
||||
# License: GNU General Public License (GPL)
|
||||
# Copyright: (C) 2002 - 2005 International Business Machines, Inc.
|
||||
+# Copyright (c) 2014 Wind River Systems, Inc. All rights reserved.
|
||||
#
|
||||
# This code significantly inspired by the LVM resource
|
||||
# in FailSafe by Lars Marowsky-Bree
|
||||
diff --git a/heartbeat/pgsql b/heartbeat/pgsql
|
||||
index 794f85e..b176b1d 100755
|
||||
--- a/heartbeat/pgsql
|
||||
+++ b/heartbeat/pgsql
|
||||
@@ -10,6 +10,7 @@
|
||||
#
|
||||
# Copyright: 2006-2012 Serge Dubrouski <sergeyfd@gmail.com>
|
||||
# and other Linux-HA contributors
|
||||
+# Copyright (c) 2014 Wind River Systems, Inc. All rights reserved.
|
||||
# License: GNU General Public License (GPL)
|
||||
#
|
||||
###############################################################################
|
||||
--
|
||||
1.9.1
|
||||
|
@ -0,0 +1,61 @@
|
||||
From c3448b1536d50291dc5ca49dce5957c39403cc82 Mon Sep 17 00:00:00 2001
|
||||
From: Bin Qian <bin.qian@windriver.com>
|
||||
Date: Wed, 29 Aug 2018 11:00:22 -0400
|
||||
Subject: [PATCH 1/1] avoid failing service when I/F is down
|
||||
|
||||
---
|
||||
heartbeat/IPaddr2 | 24 ++++++------------------
|
||||
1 file changed, 6 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/IPaddr2 b/heartbeat/IPaddr2
|
||||
index 86009b9..2da5c5e 100755
|
||||
--- a/heartbeat/IPaddr2
|
||||
+++ b/heartbeat/IPaddr2
|
||||
@@ -968,12 +968,8 @@ ip_start() {
|
||||
then
|
||||
exit $OCF_SUCCESS
|
||||
else
|
||||
- if [ "$OCF_RESKEY_dc" = "yes" ]; then
|
||||
- ocf_log info "NIC $NIC is DOWN..."
|
||||
- exit $OCF_SUCCESS
|
||||
- else
|
||||
- exit $OCF_ERR_GENERIC
|
||||
- fi
|
||||
+ ocf_log info "NIC $NIC is DOWN..."
|
||||
+ exit $OCF_SUCCESS
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -1037,12 +1033,8 @@ ip_start() {
|
||||
then
|
||||
exit $OCF_SUCCESS
|
||||
else
|
||||
- if [ "$OCF_RESKEY_dc" = "yes" ]; then
|
||||
- ocf_log info "NIC $NIC is DOWN"
|
||||
- exit $OCF_SUCCESS
|
||||
- else
|
||||
- exit $OCF_ERR_GENERIC
|
||||
- fi
|
||||
+ ocf_log info "NIC $NIC is DOWN"
|
||||
+ exit $OCF_SUCCESS
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -1123,12 +1115,8 @@ ip_monitor() {
|
||||
then
|
||||
return $OCF_SUCCESS
|
||||
else
|
||||
- if [ "$OCF_RESKEY_dc" = "yes" ]; then
|
||||
- ocf_log info "NIC $NIC is DOWN"
|
||||
- return $OCF_SUCCESS
|
||||
- else
|
||||
- return $OCF_NOT_RUNNING
|
||||
- fi
|
||||
+ ocf_log info "NIC $NIC is DOWN"
|
||||
+ exit $OCF_SUCCESS
|
||||
fi
|
||||
;;
|
||||
partial|no|partial2)
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -0,0 +1,37 @@
|
||||
From a39c83dbaf4054cc96cd4a0a2b671509dd10af28 Mon Sep 17 00:00:00 2001
|
||||
From: Bart Wensley <barton.wensley@windriver.com>
|
||||
Date: Wed, 21 Nov 2018 12:14:20 -0600
|
||||
Subject: [PATCH 1/1] ipaddr2 use host scope for addresses on loopback
|
||||
|
||||
---
|
||||
heartbeat/IPaddr2 | 12 ++++++++++--
|
||||
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/IPaddr2 b/heartbeat/IPaddr2
|
||||
index 2da5c5e..79dbdcf 100755
|
||||
--- a/heartbeat/IPaddr2
|
||||
+++ b/heartbeat/IPaddr2
|
||||
@@ -622,10 +622,18 @@ add_interface () {
|
||||
add_ipv6_addrlabel $ipaddr
|
||||
fi
|
||||
|
||||
- cmd="$IP2UTIL -f $FAMILY addr add $ipaddr/$netmask dev $iface"
|
||||
+ # Addresses assigned to the loopback interfaces must be assigned
|
||||
+ # using the host scope or assignment is prevented (can't have
|
||||
+ # multiple global scope addresses on the loopback interface).
|
||||
+ if [ "$iface" = "lo" ] ;then
|
||||
+ option="scope host"
|
||||
+ else
|
||||
+ option=""
|
||||
+ fi
|
||||
+ cmd="$IP2UTIL -f $FAMILY addr add $ipaddr/$netmask dev $iface $option"
|
||||
msg="Adding $FAMILY address $ipaddr/$netmask to device $iface"
|
||||
if [ "$broadcast" != "none" ]; then
|
||||
- cmd="$IP2UTIL -f $FAMILY addr add $ipaddr/$netmask brd $broadcast dev $iface"
|
||||
+ cmd="$IP2UTIL -f $FAMILY addr add $ipaddr/$netmask brd $broadcast dev $iface $option"
|
||||
msg="Adding $FAMILY address $ipaddr/$netmask with broadcast address $broadcast to device $iface"
|
||||
fi
|
||||
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -0,0 +1,58 @@
|
||||
From fb5a76d9050c60b601a5dbbad65ed3dbff041af1 Mon Sep 17 00:00:00 2001
|
||||
From: Scott Little <scott.little@windriver.com>
|
||||
Date: Mon, 2 Oct 2017 15:12:36 -0400
|
||||
Subject: [PATCH 03/13] WRS: Patch1107: ipaddr2_check_if_state.patch
|
||||
|
||||
---
|
||||
heartbeat/IPaddr2 | 21 ++++++++++++++++++---
|
||||
1 file changed, 18 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/IPaddr2 b/heartbeat/IPaddr2
|
||||
index aef6dc7..67a7ca3 100755
|
||||
--- a/heartbeat/IPaddr2
|
||||
+++ b/heartbeat/IPaddr2
|
||||
@@ -1002,7 +1002,12 @@ ip_start() {
|
||||
local ip_status=`ip_served`
|
||||
|
||||
if [ "$ip_status" = "ok" ]; then
|
||||
- exit $OCF_SUCCESS
|
||||
+ if [ -n "`ip link show $NIC | grep \"state UP\"`" ]
|
||||
+ then
|
||||
+ exit $OCF_SUCCESS
|
||||
+ else
|
||||
+ exit $OCF_ERR_GENERIC
|
||||
+ fi
|
||||
fi
|
||||
|
||||
if [ -n "$IP_CIP" ] && ([ $ip_status = "no" ] || [ $ip_status = "partial2" ]); then
|
||||
@@ -1061,7 +1066,12 @@ ip_start() {
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
- exit $OCF_SUCCESS
|
||||
+ if [ -n "`ip link show $NIC | grep \"state UP\"`" ]
|
||||
+ then
|
||||
+ exit $OCF_SUCCESS
|
||||
+ else
|
||||
+ exit $OCF_ERR_GENERIC
|
||||
+ fi
|
||||
}
|
||||
|
||||
ip_stop() {
|
||||
@@ -1137,7 +1147,12 @@ ip_monitor() {
|
||||
case $ip_status in
|
||||
ok)
|
||||
run_arp_sender refresh
|
||||
- return $OCF_SUCCESS
|
||||
+ if [ -n "`ip link show $NIC | grep \"state UP\"`" ]
|
||||
+ then
|
||||
+ return $OCF_SUCCESS
|
||||
+ else
|
||||
+ return $OCF_NOT_RUNNING
|
||||
+ fi
|
||||
;;
|
||||
partial|no|partial2)
|
||||
exit $OCF_NOT_RUNNING
|
||||
--
|
||||
1.9.1
|
||||
|
@ -0,0 +1,58 @@
|
||||
From 573f0835621c5e64c6270260f607624aea29d21a Mon Sep 17 00:00:00 2001
|
||||
From: Bin Qian <bin.qian@windriver.com>
|
||||
Date: Sat, 21 Jan 2017 02:36:39 -0500
|
||||
Subject: [PATCH 1/1] ipaddr2_if_down
|
||||
|
||||
---
|
||||
heartbeat/IPaddr2 | 21 ++++++++++++++++++---
|
||||
1 file changed, 18 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/IPaddr2 b/heartbeat/IPaddr2
|
||||
index 67a7ca3..2cd822d 100755
|
||||
--- a/heartbeat/IPaddr2
|
||||
+++ b/heartbeat/IPaddr2
|
||||
@@ -968,7 +968,12 @@ ip_start() {
|
||||
then
|
||||
exit $OCF_SUCCESS
|
||||
else
|
||||
- exit $OCF_ERR_GENERIC
|
||||
+ if [ "$OCF_RESKEY_dc" = "yes" ]; then
|
||||
+ ocf_log info "NIC $NIC is DOWN..."
|
||||
+ exit $OCF_SUCCESS
|
||||
+ else
|
||||
+ exit $OCF_ERR_GENERIC
|
||||
+ fi
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -1032,7 +1037,12 @@ ip_start() {
|
||||
then
|
||||
exit $OCF_SUCCESS
|
||||
else
|
||||
- exit $OCF_ERR_GENERIC
|
||||
+ if [ "$OCF_RESKEY_dc" = "yes" ]; then
|
||||
+ ocf_log info "NIC $NIC is DOWN"
|
||||
+ exit $OCF_SUCCESS
|
||||
+ else
|
||||
+ exit $OCF_ERR_GENERIC
|
||||
+ fi
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -1113,7 +1123,12 @@ ip_monitor() {
|
||||
then
|
||||
return $OCF_SUCCESS
|
||||
else
|
||||
- return $OCF_NOT_RUNNING
|
||||
+ if [ "$OCF_RESKEY_dc" = "yes" ]; then
|
||||
+ ocf_log info "NIC $NIC is DOWN"
|
||||
+ return $OCF_SUCCESS
|
||||
+ else
|
||||
+ return $OCF_NOT_RUNNING
|
||||
+ fi
|
||||
fi
|
||||
;;
|
||||
partial|no|partial2)
|
||||
--
|
||||
1.9.1
|
||||
|
@ -0,0 +1,43 @@
|
||||
From 81bb87debd2a683bad2173d6cb16327c776fe3b3 Mon Sep 17 00:00:00 2001
|
||||
From: Scott Little <scott.little@windriver.com>
|
||||
Date: Mon, 2 Oct 2017 15:13:46 -0400
|
||||
Subject: [PATCH 13/13] WRS: Patch1119: ipaddr2_ignore_lo_if_state.patch
|
||||
|
||||
---
|
||||
heartbeat/IPaddr2 | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/IPaddr2 b/heartbeat/IPaddr2
|
||||
index 2cd822d..59620d2 100755
|
||||
--- a/heartbeat/IPaddr2
|
||||
+++ b/heartbeat/IPaddr2
|
||||
@@ -964,7 +964,7 @@ ip_start() {
|
||||
local ip_status=`ip_served`
|
||||
|
||||
if [ "$ip_status" = "ok" ]; then
|
||||
- if [ -n "`ip link show $NIC | grep \"state UP\"`" ]
|
||||
+ if [ -n "`ip link show $NIC | grep \"state UP\"`" ] || [ "$NIC" = "lo" ]
|
||||
then
|
||||
exit $OCF_SUCCESS
|
||||
else
|
||||
@@ -1033,7 +1033,7 @@ ip_start() {
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
- if [ -n "`ip link show $NIC | grep \"state UP\"`" ]
|
||||
+ if [ -n "`ip link show $NIC | grep \"state UP\"`" ] || [ "$NIC" = "lo" ]
|
||||
then
|
||||
exit $OCF_SUCCESS
|
||||
else
|
||||
@@ -1119,7 +1119,7 @@ ip_monitor() {
|
||||
case $ip_status in
|
||||
ok)
|
||||
run_arp_sender refresh
|
||||
- if [ -n "`ip link show $NIC | grep \"state UP\"`" ]
|
||||
+ if [ -n "`ip link show $NIC | grep \"state UP\"`" ] || [ "$NIC" = "lo" ]
|
||||
then
|
||||
return $OCF_SUCCESS
|
||||
else
|
||||
--
|
||||
1.9.1
|
||||
|
@ -0,0 +1,125 @@
|
||||
From 72fcaed4a9cc3c847278dd4fca88ba0bca88125a Mon Sep 17 00:00:00 2001
|
||||
From: Vu Tran <vu.tran@windriver.com>
|
||||
Date: Thu Sep 29 19:07:25 2016 -0400
|
||||
Subject: CGTS-5173: LVM ocf cleanup refs on stop
|
||||
|
||||
In LVM ocf script, LVM_stop() fails if any of the created logical volume
|
||||
dm block devices are being held by any process with the following error
|
||||
|
||||
err ERROR: Logical volume cinder-volumes/volume-96a8becd-a1c1-4508-8b25-9bcbcfeff2fa
|
||||
contains a filesystem in use. Can't deactivate volume group "cinder-volumes"
|
||||
with 1 open logical volume(s)
|
||||
|
||||
So here we want to have defensive code to scan through any process that
|
||||
holds what dm block devices and causes LVM_stop() to fail. There are
|
||||
2 cases:
|
||||
|
||||
* dm block devices are mounted and processes are accessing files located
|
||||
in this mount point. We first need to kill all the processes which are
|
||||
opening files and then umount the dm block devices.
|
||||
|
||||
* processes just hold/open dm block devices directly. We need to kill
|
||||
these processes.
|
||||
|
||||
Signed-off-by: Sun Austin <austin.sun@intel.com>
|
||||
---
|
||||
heartbeat/LVM | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 76 insertions(+)
|
||||
|
||||
diff --git a/heartbeat/LVM b/heartbeat/LVM
|
||||
index 1efb207..bde381c 100755
|
||||
--- a/heartbeat/LVM
|
||||
+++ b/heartbeat/LVM
|
||||
@@ -367,6 +367,81 @@ LVM_start() {
|
||||
}
|
||||
|
||||
#
|
||||
+# Kill provided process that holds lv
|
||||
+#
|
||||
+log_and_kill_process_hold_lv() {
|
||||
+ p_info=$(ps -lfLp ${1} | tail -1)
|
||||
+ ocf_log warn "lv ${2} is being held by this process (will be forced killed):"
|
||||
+ ocf_log warn ${p_info}
|
||||
+ kill -s KILL ${1}
|
||||
+}
|
||||
+
|
||||
+#
|
||||
+# Scan for processes that hold any lvs and kill them
|
||||
+#
|
||||
+scan_and_kill_processes_hold_lv() {
|
||||
+ vg_name=${1}
|
||||
+
|
||||
+ # Get list of logical volumes which are busy
|
||||
+ lv_paths=$(lvdisplay -c ${vg_name} | awk -F ":" '{print $1}')
|
||||
+ for lv_path in ${lv_paths}; do
|
||||
+ open_num=$(lvdisplay ${lv_path} | grep "# open" | awk '{print $3}')
|
||||
+ if [ ${open_num} -gt 0 ]; then
|
||||
+ lv_name=$(lvdisplay ${lv_path} | grep "LV Name" | awk '{print $3}')
|
||||
+ lv_block=$(lvdisplay ${lv_path} | grep "Block device" | awk '{print $3}')
|
||||
+
|
||||
+ lv_list="${lv_list}
|
||||
+${lv_name}|${lv_block}"
|
||||
+ lv_block_list="${lv_block_list} ${lv_block}"
|
||||
+ fi
|
||||
+ done
|
||||
+
|
||||
+ # Exit if there is no busy logical volume
|
||||
+ [ -z "${lv_list}" ] && exit 0
|
||||
+
|
||||
+ # Checking to see if any of these busy logical volumes are caused by mount
|
||||
+ mountinfo=$(cat /proc/1/mountinfo)
|
||||
+ while read -r line; do
|
||||
+ mount_majorminor=$(echo ${line} | awk '{print $3}')
|
||||
+ mount_point=$(echo ${line} | awk '{print $5}')
|
||||
+
|
||||
+ for lv in ${lv_block_list}; do
|
||||
+ if [ "${lv}" == "${mount_majorminor}" ]; then
|
||||
+ lv_name=$(echo "${lv_list}" | grep ${lv} | awk -F "|" '{print $1}')
|
||||
+ ocf_log warn "lv ${lv_name} is busy mounted at ${mount_point} (will be forced unmounted)"
|
||||
+ processes_holding_mount_point=$(fuser -m ${mount_point} 2>/dev/null)
|
||||
+ if [ -n "${processes_holding_mount_point}" ]; then
|
||||
+ for p in ${processes_holding_mount_point}; do
|
||||
+ log_and_kill_process_hold_lv "${p}" "${lv_name}"
|
||||
+ done
|
||||
+ fi
|
||||
+ umount ${mount_point}
|
||||
+ [ $? -ne 0 ] && ocf_log warn "Cannot umount ${mount_point}"
|
||||
+ fi
|
||||
+ done
|
||||
+ done <<< "${mountinfo}"
|
||||
+
|
||||
+ # Now checking to see if any process holding these logical volumes
|
||||
+ all_processes=$(ps -e | awk '{print $1}')
|
||||
+ for p in ${all_processes}; do
|
||||
+ [ ! -d /proc/${p}/fd ] && continue
|
||||
+ opened_file_list=$(ls -l /proc/${p}/fd | awk -F "->" '{print $2}')
|
||||
+
|
||||
+ for f in ${opened_file_list}; do
|
||||
+ [ ! -b "${f}" ] && continue
|
||||
+ f_majorminor=$(printf "%d:%d" $(stat -c '0x%t 0x%T' ${f}))
|
||||
+
|
||||
+ for lv in ${lv_block_list}; do
|
||||
+ if [ "${lv}" == "${f_majorminor}" ]; then
|
||||
+ lv_name=$(echo "${lv_list}" | grep ${lv} | awk -F "|" '{print $1}')
|
||||
+ log_and_kill_process_hold_lv "${p}" "${lv_name}"
|
||||
+ fi
|
||||
+ done
|
||||
+ done
|
||||
+ done
|
||||
+}
|
||||
+
|
||||
+#
|
||||
# Disable the LVM volume
|
||||
#
|
||||
LVM_stop() {
|
||||
@@ -395,6 +470,7 @@ LVM_stop() {
|
||||
break
|
||||
fi
|
||||
|
||||
+ scan_and_kill_processes_hold_lv $vg
|
||||
res=$OCF_ERR_GENERIC
|
||||
ocf_log warn "$vg still Active"
|
||||
ocf_log info "Retry deactivating volume group $vg"
|
||||
--
|
||||
2.7.4
|
||||
|
@ -0,0 +1,162 @@
|
||||
From 2f1a14bd8e6cc7b5d32c87a2e176567105f4f23d Mon Sep 17 00:00:00 2001
|
||||
From: Scott Little <scott.little@windriver.com>
|
||||
Date: Mon, 2 Oct 2017 15:12:54 -0400
|
||||
Subject: [PATCH] WRS: Patch1110: lvm_vg_activation.patch
|
||||
|
||||
Porting the patch from StarlingX master branch.
|
||||
|
||||
BTW, change the /bin/sh to /bin/bash to fix syntax error, due to the
|
||||
/bin/sh in debian links to /bin/dash
|
||||
|
||||
Signed-off-by: Yue Tao <Yue.Tao@windriver.com>
|
||||
---
|
||||
heartbeat/LVM | 119 +++++++++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 117 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/LVM b/heartbeat/LVM
|
||||
index a9f89a6..38f7c6b 100755
|
||||
--- a/heartbeat/LVM
|
||||
+++ b/heartbeat/LVM
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/bin/sh
|
||||
+#!/bin/bash
|
||||
#
|
||||
#
|
||||
# LVM
|
||||
@@ -222,6 +222,81 @@ LVM_status() {
|
||||
return $rc
|
||||
}
|
||||
|
||||
+#
|
||||
+# Activate one volume explicitly.
|
||||
+#
|
||||
+activate_volume() {
|
||||
+ ocf_run lvchange $1 /dev/${2}/$3
|
||||
+ if [ $? -eq 0 ] ; then
|
||||
+ ocf_log info "Succesfully activated $LV."
|
||||
+ else
|
||||
+ ocf_log err "Problem activating $LV."
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
+#
|
||||
+# Kick off parallel activation of all volumes
|
||||
+#
|
||||
+activate_all_volumes() {
|
||||
+ VG=$1
|
||||
+ shift
|
||||
+ lvchange_args="$*"
|
||||
+
|
||||
+ # Get the list of volumes, without the first line which is column headings.
|
||||
+ VOLS=`lvs $VG |tail -n +2`
|
||||
+
|
||||
+ while read -r LINE; do
|
||||
+ # Convert the line into an array.
|
||||
+ LINE_ARRAY=($LINE)
|
||||
+
|
||||
+ # First array element is the volume/snapshot name.
|
||||
+ LV=${LINE_ARRAY[0]}
|
||||
+
|
||||
+ # Third array element is the attributes.
|
||||
+ ATTR=${LINE_ARRAY[2]}
|
||||
+
|
||||
+ # Fifth character in the attributes is "a" if it's active.
|
||||
+ ACTIVE=${ATTR:4:1}
|
||||
+ if [ "$ACTIVE" == "a" ]; then
|
||||
+ ocf_log info "$LV is already active."
|
||||
+ continue
|
||||
+ fi
|
||||
+
|
||||
+ SNAPSHOT_ORIGIN=${LINE_ARRAY[4]}
|
||||
+ if [ "$SNAPSHOT_ORIGIN" != "" ] ; then
|
||||
+ # If this is a snapshot, don't activate it.
|
||||
+ continue
|
||||
+ fi
|
||||
+
|
||||
+ ( activate_volume "$*" $VG $LV ) &
|
||||
+ done <<< "$VOLS"
|
||||
+}
|
||||
+
|
||||
+#
|
||||
+# Scan for inactive volumes and log any that are found.
|
||||
+#
|
||||
+log_inactive_volumes() {
|
||||
+ # Get the list of volumes, without the first line which is column headings.
|
||||
+ VOLS=`lvs $1 |tail -n +2`
|
||||
+
|
||||
+ while read -r LINE; do
|
||||
+ # Convert the line into an array.
|
||||
+ LINE_ARRAY=($LINE)
|
||||
+
|
||||
+ # First array element is the volume/snapshot name.
|
||||
+ LV=${LINE_ARRAY[0]}
|
||||
+
|
||||
+ # Third array element is the attributes.
|
||||
+ ATTR=${LINE_ARRAY[2]}
|
||||
+
|
||||
+ # Fifth character in the attributes is "a" if it's active.
|
||||
+ ACTIVE=${ATTR:4:1}
|
||||
+ if [ "$ACTIVE" != "a" ]; then
|
||||
+ ocf_log err "Volume $LV is not active after expiry of timeout."
|
||||
+ fi
|
||||
+ done <<< "$VOLS"
|
||||
+}
|
||||
+
|
||||
#
|
||||
# Enable LVM volume
|
||||
#
|
||||
@@ -242,10 +317,50 @@ LVM_start() {
|
||||
ocf_run vgscan
|
||||
fi
|
||||
|
||||
+ # Kick off activation of all volumes. If it doesn't complete within
|
||||
+ # the timeout period, then we'll log the not-yet-activated volumes and
|
||||
+ # continue on.
|
||||
lvm_pre_activate || exit
|
||||
- ocf_run vgchange $vgchange_activate_options $vg
|
||||
+ (ocf_run vgchange $vgchange_activate_options $1) & PID=$!
|
||||
lvm_post_activate $?
|
||||
|
||||
+ # Check every second for up to TIMEOUT seconds whether the vgchange has
|
||||
+ # completed.
|
||||
+ TIMEOUT=300
|
||||
+ TIMED_OUT=true
|
||||
+ SECONDS=0;
|
||||
+ PARALLEL_ACTIVATE_DELAY=10
|
||||
+ PARALLEL_ACTIVATE_DONE=false
|
||||
+ while [ $SECONDS -lt $TIMEOUT ] ; do
|
||||
+ kill -0 $PID &> /dev/null
|
||||
+ if [ $? -eq 1 ] ; then
|
||||
+ # process with pid of $PID doesn't exist, vgchange command completed
|
||||
+ TIMED_OUT=false
|
||||
+ break
|
||||
+ fi
|
||||
+ if [ $SECONDS -ge $PARALLEL_ACTIVATE_DELAY ] && \
|
||||
+ [ "$PARALLEL_ACTIVATE_DONE" != true ] && \
|
||||
+ [ "$1" == "cinder-volumes" ] ; then
|
||||
+ # This will kick off parallel activation of all LVs in the VG.
|
||||
+ # The delay is to ensure the VG is activated first.
|
||||
+ PARALLEL_ACTIVATE_DONE=true
|
||||
+ ocf_log info Explicitly activating all volumes in $1 with: $vgchange_activate_options
|
||||
+ activate_all_volumes $1 $vgchange_activate_options
|
||||
+ fi
|
||||
+ sleep 1
|
||||
+ done
|
||||
+
|
||||
+ if [ "$TIMED_OUT" = true ] ; then
|
||||
+ ocf_log err "Timed out running ocf_run vgchange $vgchange_activate_options $1"
|
||||
+ log_inactive_volumes $1
|
||||
+ else
|
||||
+ # Child process completed, get its status.
|
||||
+ wait $PID
|
||||
+ if [ $? -ne 0 ] ; then
|
||||
+ return $OCF_ERR_GENERIC
|
||||
+ fi
|
||||
+ fi
|
||||
+
|
||||
if LVM_status $vg; then
|
||||
: OK Volume $vg activated just fine!
|
||||
return $OCF_SUCCESS
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,62 @@
|
||||
From 111343419dd381d81303354dad48cca5095ab080 Mon Sep 17 00:00:00 2001
|
||||
From: Scott Little <scott.little@windriver.com>
|
||||
Date: Fri, 26 Aug 2016 15:06:02 -0400
|
||||
Subject: [PATCH 02/12] WRS: Patch106: new_ocf_return_codes.patch
|
||||
|
||||
---
|
||||
heartbeat/ocf-returncodes | 35 +++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 35 insertions(+)
|
||||
|
||||
diff --git a/heartbeat/ocf-returncodes b/heartbeat/ocf-returncodes
|
||||
index dd5f017..9200889 100644
|
||||
--- a/heartbeat/ocf-returncodes
|
||||
+++ b/heartbeat/ocf-returncodes
|
||||
@@ -4,6 +4,7 @@
|
||||
#
|
||||
# Copyright (c) 2004 SUSE LINUX AG, Andrew Beekhof
|
||||
# All Rights Reserved.
|
||||
+# Copyright (c) 2014 Wind River Systems, Inc. All rights reserved.
|
||||
#
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
@@ -53,3 +54,37 @@ OCF_NOT_RUNNING=7
|
||||
#
|
||||
OCF_RUNNING_MASTER=8
|
||||
OCF_FAILED_MASTER=9
|
||||
+
|
||||
+# Non-standard values particular to Wind River deployments.
|
||||
+#
|
||||
+# OCF does not include the concept of data sync states for master/slave
|
||||
+# resources.
|
||||
+#
|
||||
+# OCF_DATA_INCONSISTENT:
|
||||
+# The resource's data is not useable.
|
||||
+#
|
||||
+# OCF_DATA_OUTDATED:
|
||||
+# The resource's data is consistent, but a peer with more recent data
|
||||
+# has been seen.
|
||||
+#
|
||||
+# OCF_DATA_CONSISTENT:
|
||||
+# The resource's data is consistent, but it is unsure that this is the
|
||||
+# most recent data.
|
||||
+#
|
||||
+# OCF_SYNC:
|
||||
+# The resource is syncing data.
|
||||
+#
|
||||
+# OCF_STANDALONE:
|
||||
+# The resource is operating as standalone. No peer is available or
|
||||
+# syncing is not possible (i.e. split brain fencing).
|
||||
+#
|
||||
+OCF_DATA_INCONSISTENT=32
|
||||
+OCF_DATA_OUTDATED=33
|
||||
+OCF_DATA_CONSISTENT=34
|
||||
+OCF_DATA_SYNC=35
|
||||
+OCF_DATA_STANDALONE=36
|
||||
+OCF_RUNNING_MASTER_DATA_INCONSISTENT=37
|
||||
+OCF_RUNNING_MASTER_DATA_OUTDATED=38
|
||||
+OCF_RUNNING_MASTER_DATA_CONSISTENT=39
|
||||
+OCF_RUNNING_MASTER_DATA_SYNC=40
|
||||
+OCF_RUNNING_MASTER_DATA_STANDALONE=41
|
||||
--
|
||||
1.9.1
|
||||
|
@ -0,0 +1,28 @@
|
||||
From 64f5534579e8f14f723c48f317cd56badca225ee Mon Sep 17 00:00:00 2001
|
||||
From: Don Penney <don.penney@windriver.com>
|
||||
Date: Thu, 25 Aug 2016 13:07:16 -0400
|
||||
Subject: [PATCH 1/1] Set OCF_ prefix in logs for syslog destination sorting
|
||||
|
||||
---
|
||||
heartbeat/ocf-shellfuncs.in | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/ocf-shellfuncs.in b/heartbeat/ocf-shellfuncs.in
|
||||
index 3565e20..688c150 100644
|
||||
--- a/heartbeat/ocf-shellfuncs.in
|
||||
+++ b/heartbeat/ocf-shellfuncs.in
|
||||
@@ -176,9 +176,9 @@ hadate() {
|
||||
set_logtag() {
|
||||
if [ -z "$HA_LOGTAG" ]; then
|
||||
if [ -n "$OCF_RESOURCE_INSTANCE" ]; then
|
||||
- HA_LOGTAG="$__SCRIPT_NAME($OCF_RESOURCE_INSTANCE)[$$]"
|
||||
+ HA_LOGTAG="OCF_$__SCRIPT_NAME($OCF_RESOURCE_INSTANCE)[$$]"
|
||||
else
|
||||
- HA_LOGTAG="$__SCRIPT_NAME[$$]"
|
||||
+ HA_LOGTAG="OCF_$__SCRIPT_NAME[$$]"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
88
base/cluster-resource-agents/debian/patches/pgsql.patch
Normal file
88
base/cluster-resource-agents/debian/patches/pgsql.patch
Normal file
@ -0,0 +1,88 @@
|
||||
From d50bcc4bb667e6b63e55ae4b788391c78a162d9f Mon Sep 17 00:00:00 2001
|
||||
From: Scott Little <scott.little@windriver.com>
|
||||
Date: Mon, 2 Oct 2017 15:12:59 -0400
|
||||
Subject: [PATCH] WRS: Patch1111: pgsql.patch
|
||||
|
||||
---
|
||||
heartbeat/pgsql | 23 ++++++++++++++++++++---
|
||||
1 file changed, 20 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/heartbeat/pgsql b/heartbeat/pgsql
|
||||
index cce4e1c..38949eb 100755
|
||||
--- a/heartbeat/pgsql
|
||||
+++ b/heartbeat/pgsql
|
||||
@@ -46,6 +46,7 @@ get_pgsql_param() {
|
||||
OCF_RESKEY_pgctl_default=/usr/bin/pg_ctl
|
||||
OCF_RESKEY_psql_default=/usr/bin/psql
|
||||
OCF_RESKEY_pgdata_default=/var/lib/pgsql/data
|
||||
+OCF_RESKEY_pgconf_default=/etc/postgresql
|
||||
OCF_RESKEY_pgdba_default=postgres
|
||||
OCF_RESKEY_pghost_default=""
|
||||
OCF_RESKEY_pgport_default=5432
|
||||
@@ -79,11 +80,12 @@ OCF_RESKEY_replication_slot_name_default=""
|
||||
: ${OCF_RESKEY_pgctl=${OCF_RESKEY_pgctl_default}}
|
||||
: ${OCF_RESKEY_psql=${OCF_RESKEY_psql_default}}
|
||||
: ${OCF_RESKEY_pgdata=${OCF_RESKEY_pgdata_default}}
|
||||
+: ${OCF_RESKEY_pgconf=${OCF_RESKEY_pgconf_default}}
|
||||
: ${OCF_RESKEY_pgdba=${OCF_RESKEY_pgdba_default}}
|
||||
: ${OCF_RESKEY_pghost=${OCF_RESKEY_pghost_default}}
|
||||
: ${OCF_RESKEY_pgport=${OCF_RESKEY_pgport_default}}
|
||||
: ${OCF_RESKEY_pglibs=${OCF_RESKEY_pglibs_default}}
|
||||
-: ${OCF_RESKEY_config=${OCF_RESKEY_pgdata}/postgresql.conf}
|
||||
+: ${OCF_RESKEY_config=${OCF_RESKEY_pgconf}/postgresql.conf}
|
||||
: ${OCF_RESKEY_start_opt=${OCF_RESKEY_start_opt_default}}
|
||||
: ${OCF_RESKEY_ctl_opt=${OCF_RESKEY_ctl_opt_default}}
|
||||
: ${OCF_RESKEY_pgdb=${OCF_RESKEY_pgdb_default}}
|
||||
@@ -182,6 +184,14 @@ Path to PostgreSQL data directory.
|
||||
<content type="string" default="${OCF_RESKEY_pgdata_default}" />
|
||||
</parameter>
|
||||
|
||||
+<parameter name="pgconf" unique="0" required="0">
|
||||
+<longdesc lang="en">
|
||||
+Path to PostgreSQL config directory.
|
||||
+</longdesc>
|
||||
+<shortdesc lang="en">pgconf</shortdesc>
|
||||
+<content type="string" default="${OCF_RESKEY_pgconf_default}" />
|
||||
+</parameter>
|
||||
+
|
||||
<parameter name="pgdba" unique="0" required="0">
|
||||
<longdesc lang="en">
|
||||
User that owns PostgreSQL.
|
||||
@@ -245,7 +255,7 @@ SQL script that will be used for monitor operations.
|
||||
Path to the PostgreSQL configuration file for the instance.
|
||||
</longdesc>
|
||||
<shortdesc lang="en">Configuration file</shortdesc>
|
||||
-<content type="string" default="${OCF_RESKEY_pgdata}/postgresql.conf" />
|
||||
+<content type="string" default="${OCF_RESKEY_pgconf}/postgresql.conf" />
|
||||
</parameter>
|
||||
|
||||
<parameter name="pgdb" unique="0" required="0">
|
||||
@@ -634,6 +644,12 @@ pgsql_real_start() {
|
||||
fi
|
||||
fi
|
||||
|
||||
+ # WRS: Create an unversioned symlink under /var/run so SM can easily
|
||||
+ # find the PID file.
|
||||
+ if [ ! -h $PIDFILE_SYMLINK ]; then
|
||||
+ /bin/ln -s $PIDFILE $PIDFILE_SYMLINK
|
||||
+ fi
|
||||
+
|
||||
ocf_log info "PostgreSQL is started."
|
||||
return $rc
|
||||
}
|
||||
@@ -2150,10 +2166,11 @@ then
|
||||
fi
|
||||
|
||||
PIDFILE=${OCF_RESKEY_pgdata}/postmaster.pid
|
||||
+PIDFILE_SYMLINK=/var/run/postmaster.pid
|
||||
BACKUPLABEL=${OCF_RESKEY_pgdata}/backup_label
|
||||
RESOURCE_NAME=`echo $OCF_RESOURCE_INSTANCE | cut -d ":" -f 1`
|
||||
PGSQL_WAL_RECEIVER_STATUS_ATTR="${RESOURCE_NAME}-receiver-status"
|
||||
-RECOVERY_CONF=${OCF_RESKEY_pgdata}/recovery.conf
|
||||
+RECOVERY_CONF=${OCF_RESKEY_pgconf}/recovery.conf
|
||||
NODENAME=$(ocf_local_nodename | tr '[A-Z]' '[a-z]')
|
||||
USE_STANDBY_SIGNAL=false
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
14
base/cluster-resource-agents/debian/patches/series
Normal file
14
base/cluster-resource-agents/debian/patches/series
Normal file
@ -0,0 +1,14 @@
|
||||
#Backport from StarlingX master branch
|
||||
new_ocf_return_codes.patch
|
||||
ipaddr2_check_if_state.patch
|
||||
copyright.patch
|
||||
umount-in-namespace.patch
|
||||
lvm_vg_activation.patch
|
||||
pgsql.patch
|
||||
Fix-VG-activity-bug-in-heartbeat-LVM-script.patch
|
||||
ocf-shellfuncs_change_logtag.patch
|
||||
lvm_cleanup_refs_on_stop.patch
|
||||
ipaddr2_if_down.patch
|
||||
ipaddr2_ignore_lo_if_state.patch
|
||||
ipaddr2-avoid-failing-svc-if-down.patch
|
||||
ipaddr2-use-host-scope-for-addresses-on-loopback.patch
|
@ -0,0 +1,28 @@
|
||||
From 589a7fd77e144f25d905f4af28fa60c844f8d9c1 Mon Sep 17 00:00:00 2001
|
||||
From: Scott Little <scott.little@windriver.com>
|
||||
Date: Mon, 2 Oct 2017 15:12:48 -0400
|
||||
Subject: [PATCH] WRS: Patch1109: umount-in-namespace.patch
|
||||
|
||||
Signed-off-by: Yue Tao <Yue.Tao@windriver.com>
|
||||
---
|
||||
heartbeat/Filesystem | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/heartbeat/Filesystem b/heartbeat/Filesystem
|
||||
index 0323dd9..b8c445f 100755
|
||||
--- a/heartbeat/Filesystem
|
||||
+++ b/heartbeat/Filesystem
|
||||
@@ -622,6 +622,10 @@ signal_processes() {
|
||||
}
|
||||
try_umount() {
|
||||
local SUB="$1"
|
||||
+
|
||||
+ # We need to ensure we umount in namespaces, too
|
||||
+ /usr/sbin/umount-in-namespace "$SUB"
|
||||
+
|
||||
$UMOUNT $umount_force "$SUB"
|
||||
list_mounts | grep "${TAB}${SUB}${TAB}" >/dev/null 2>&1 || {
|
||||
ocf_log info "unmounted $SUB successfully"
|
||||
--
|
||||
2.17.1
|
||||
|
Loading…
Reference in New Issue
Block a user