SHA256
1
0
forked from pool/libdlm

2 Commits

Author SHA256 Message Date
f768979d12 Accepting request 1256092 from network:ha-clustering:Factory
OBS-URL: https://build.opensuse.org/request/show/1256092
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libdlm?expand=0&rev=59
2025-03-28 08:36:04 +00:00
094d3af855 - libdlm supports corosync 3.x multi-link (jsc#PED-11932)
* add upstream patch
    + dlm_controld-terminate-uevent-buffer.patch
    + dlm_controld-Support-for-extended-value-of-kernel-DL.patch
    + dlm_controld-remove-detect-mode-from-config-item-pro.patch
  * remove useless folder
    - %{_datadir}/doc/packages/libdlm-%{version}

OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/libdlm?expand=0&rev=100
2025-03-26 01:46:49 +00:00
5 changed files with 233 additions and 6 deletions

View File

@@ -0,0 +1,43 @@
From 1768dd91c309f1bf8b062c28c2edee8e5c7aaab4 Mon Sep 17 00:00:00 2001
From: Heming Zhao <heming.zhao@suse.com>
Date: Fri, 21 Feb 2025 23:09:35 +0800
Subject: [PATCH 1/2] dlm_controld: Support for extended value of kernel
DLM_MAX_ADDR_COUNT
This patch should work with the updated kernel dlm module, because
the code changes need to be aligned with the DLM_MAX_ADDR_COUNT value.
Another notice is that with the current dlm_controld code, users
should explicitly add 'protocol=sctp' to the dlm.conf in a corosync
3.x env.
---
2025.3.26 by heming zhao
I modified this patch by removing the dlm_sand part of the patch.
Signed-off-by: Heming Zhao <heming.zhao@suse.com>
---
dlm_controld/dlm_daemon.h | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/dlm_controld/dlm_daemon.h b/dlm_controld/dlm_daemon.h
index 4a533e3451e2..c902228f890f 100644
--- a/dlm_controld/dlm_daemon.h
+++ b/dlm_controld/dlm_daemon.h
@@ -175,10 +175,10 @@ EXTERN struct dlm_option dlm_options[dlm_options_max];
#define MAX_NODES 128
-/* Maximum number of IP addresses per node, when using SCTP and multi-ring in
- corosync In dlm-kernel this is DLM_MAX_ADDR_COUNT, currently 3. */
+/* Maximum number of IP addresses per node, when using SCTP and multi-[ring|link]
+ in corosync [2|3]. In dlm-kernel this is DLM_MAX_ADDR_COUNT, currently 8. */
-#define MAX_NODE_ADDRESSES 4
+#define MAX_NODE_ADDRESSES 8
#define PROTO_TCP 0
#define PROTO_SCTP 1
--
2.43.0

View File

@@ -0,0 +1,148 @@
From 9d294573d4512ab3c7f3e7ad087df035959e53ec Mon Sep 17 00:00:00 2001
From: Heming Zhao <heming.zhao@suse.com>
Date: Mon, 10 Mar 2025 15:36:20 +0800
Subject: [PATCH 2/2] dlm_controld: remove 'detect' mode from config item
'protocol'
This patch removes the 'detect' mode for the configuration
item 'protocol'.
After this patch, dlm 'protocol' behaviors:
- TCP is now the default protocol.
- Stop trying to detect:
- use dlm.conf or dlm_controld command line to switch from TCP
to SCTP.
- corosync.conf 'rrp_mode' is not supported in corosync 2.x env.
- TCP can work with multi-link, but uses only the first ip address
from corosync.
- SCTP can support up to 8 ip addresses.
Note: This change requires a corresponding update to the dlm kernel
function dlm_tcp_listen_validate().
Signed-off-by: Heming Zhao <heming.zhao@suse.com>
---
dlm_controld/action.c | 39 ++++++-------------------------------
dlm_controld/dlm.conf.5 | 11 ++++++++++-
dlm_controld/dlm_controld.8 | 2 +-
dlm_controld/main.c | 4 ++--
4 files changed, 19 insertions(+), 37 deletions(-)
diff --git a/dlm_controld/action.c b/dlm_controld/action.c
index 60eb22a78c56..10f0f67387b1 100644
--- a/dlm_controld/action.c
+++ b/dlm_controld/action.c
@@ -21,35 +21,6 @@ static int comms_nodes_count;
#define SPACES_DIR "/sys/kernel/config/dlm/cluster/spaces"
#define COMMS_DIR "/sys/kernel/config/dlm/cluster/comms"
-static int detect_protocol(void)
-{
- cmap_handle_t handle;
- char *str = NULL;
- int rv, proto = -1;
-
- rv = cmap_initialize(&handle);
- if (rv != CS_OK) {
- log_error("cmap_initialize error %d", rv);
- return -1;
- }
-
- rv = cmap_get_string(handle, "totem.rrp_mode", &str);
- if (rv != CS_OK)
- goto out;
-
- log_debug("cmap totem.rrp_mode = '%s'", str);
-
- if (!strcmp(str, "none"))
- proto = PROTO_TCP;
- else
- proto = PROTO_SCTP;
- out:
- if (str)
- free(str);
- cmap_finalize(handle);
- return proto;
-}
-
static int detect_cluster_name(void)
{
cmap_handle_t handle;
@@ -870,12 +841,14 @@ int setup_configfs_options(void)
set_configfs_cluster("mark", NULL, optu(mark_ind));
proto_name = opts(protocol_ind);
- proto_num = -1;
+ proto_num = 0; /* default is tcp */
- if (!strcasecmp(proto_name, "detect") || !strcmp(proto_name, "2"))
- proto_num = detect_protocol(); /* may be -1 */
+ if (!strcasecmp(proto_name, "detect") || !strcmp(proto_name, "2")) {
+ log_error("'detect' mode is not supported anymore, will use default mode (TCP).");
+ log_error("see dlm_conf(5) for details.");
+ }
- else if (!strcasecmp(proto_name, "tcp") || !strcmp(proto_name, "0"))
+ if (!strcasecmp(proto_name, "tcp") || !strcmp(proto_name, "0"))
proto_num = PROTO_TCP;
else if (!strcasecmp(proto_name, "sctp") || !strcmp(proto_name, "1"))
diff --git a/dlm_controld/dlm.conf.5 b/dlm_controld/dlm.conf.5
index cb13eaf0db28..073baf883b38 100644
--- a/dlm_controld/dlm.conf.5
+++ b/dlm_controld/dlm.conf.5
@@ -77,13 +77,22 @@ enable_helper
Options with (*) can be reloaded, see Reload config.
-.SH Reload config
+.SH Reload configuration
Some dlm.conf settings can be changed while dlm_controld is running using
dlm_tool reload_config. Edit dlm.conf, adding, removing, commenting or
changing values, then run dlm_tool reload_config to apply the changes in
dlm_controld. dlm_tool dump_config will show the new settings.
+.SH Protocol configuration
+
+Since the totem.rrp_mode configuration item was deprecated in Corosync 3,
+the DLM adjusts the protocol configuration item's style to ensure DLM
+functionality on both Corosync 2 and 3. The change is that the protocol
+configuration item no longer supports 'detect|2'. The default protocol is
+TCP if the user does not specify a protocol on the dlm_daemon command line
+or in dlm.conf.
+
.SH Fencing
A fence device definition begins with a
diff --git a/dlm_controld/dlm_controld.8 b/dlm_controld/dlm_controld.8
index 3aab388531df..d72ebb299f7d 100644
--- a/dlm_controld/dlm_controld.8
+++ b/dlm_controld/dlm_controld.8
@@ -31,7 +31,7 @@ For default settings, see dlm_controld -h.
.B --protocol | -r
.I str
- dlm kernel lowcomms protocol: tcp, sctp, detect
+ dlm kernel lowcomms protocol: tcp, sctp
.B --debug_logfile | -L
write debugging to log file
diff --git a/dlm_controld/main.c b/dlm_controld/main.c
index 1c4333373617..6fb6dffeadaf 100644
--- a/dlm_controld/main.c
+++ b/dlm_controld/main.c
@@ -1817,8 +1817,8 @@ static void set_opt_defaults(void)
set_opt_default(protocol_ind,
"protocol", 'r', req_arg_str,
- -1, "detect", 0, 0,
- "dlm kernel lowcomms protocol: tcp, sctp, detect");
+ 0, "tcp", 0, 0,
+ "dlm kernel lowcomms protocol: tcp, sctp");
set_opt_default(port_ind,
"port", 'R', req_arg_uint,
--
2.43.0

View File

@@ -0,0 +1,26 @@
From 536a527329f3b559c40154461c84e279bcb36cf4 Mon Sep 17 00:00:00 2001
From: David Teigland <teigland@redhat.com>
Date: Thu, 15 Aug 2024 11:05:54 -0500
Subject: [PATCH] dlm_controld: terminate uevent buffer
for checker
---
dlm_controld/main.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/dlm_controld/main.c b/dlm_controld/main.c
index 24f0b3f8e044..1c4333373617 100644
--- a/dlm_controld/main.c
+++ b/dlm_controld/main.c
@@ -714,6 +714,8 @@ static void process_uevent(int ci)
return;
}
+ buf[MAX_LINE_UEVENT-1] = '\0';
+
decode_uevent(buf, rv, uevent_vars, Env_Last, uevent_vals);
if (!uevent_vals[Env_ACTION] ||
--
2.43.0

View File

@@ -1,3 +1,14 @@
-------------------------------------------------------------------
Wed Mar 26 00:59:00 UTC 2025 - heming.zhao@suse.com
- libdlm supports corosync 3.x multi-link (jsc#PED-11932)
* add upstream patch
+ dlm_controld-terminate-uevent-buffer.patch
+ dlm_controld-Support-for-extended-value-of-kernel-DL.patch
+ dlm_controld-remove-detect-mode-from-config-item-pro.patch
* remove useless folder
- %{_datadir}/doc/packages/libdlm-%{version}
-------------------------------------------------------------------
Wed May 8 06:24:00 UTC 2024 - heming.zhao@suse.com - 4.3.0

View File

@@ -1,7 +1,7 @@
#
# spec file for package libdlm
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -41,7 +41,9 @@ Source: https://pagure.io/dlm/archive/dlm-%{version}/dlm-dlm-%{version}.
##################
#upstream patch
# n/a
Patch0001: dlm_controld-terminate-uevent-buffer.patch
Patch0002: dlm_controld-Support-for-extended-value-of-kernel-DL.patch
Patch0003: dlm_controld-remove-detect-mode-from-config-item-pro.patch
# suse special patch
Patch1001: 0001-makefile-for-diff-arch.patch
@@ -53,9 +55,9 @@ Patch1004: 0004-man-dlm.conf-add-note-that-the-file-is-not-creat.patch
BuildRequires: fdupes
BuildRequires: glib2-devel
BuildRequires: pkgconfig(corosync) >= 3.1.0
BuildRequires: libtool
BuildRequires: libxml2-devel
BuildRequires: pkgconfig(corosync) >= 3.1.0
BuildRequires: pkgconfig(pacemaker)
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(udev)
@@ -100,7 +102,6 @@ make all UDEVDIR="%{_udevrulesdir}"
%install
###########################################################
%make_install UDEVDIR="%{_udevrulesdir}"
mkdir -p $RPM_BUILD_ROOT%{_datadir}/doc/packages/libdlm-%{version}
install -Dm 0644 init/dlm.service $RPM_BUILD_ROOT%{_unitdir}/dlm.service
install -Dm 0644 init/dlm.sysconfig $RPM_BUILD_ROOT%{_fillupdir}/sysconfig.dlm
@@ -126,7 +127,6 @@ install -Dm 0644 init/dlm.sysconfig $RPM_BUILD_ROOT%{_fillupdir}/sysconfig.dlm
%postun -n libdlm3 -p /sbin/ldconfig
%files
%dir %{_datadir}/doc/packages/libdlm-%{version}
%{_udevrulesdir}/51-dlm.rules
%{_sbindir}/dlm_controld
%{_sbindir}/dlm_stonith
@@ -134,7 +134,6 @@ install -Dm 0644 init/dlm.sysconfig $RPM_BUILD_ROOT%{_fillupdir}/sysconfig.dlm
%{_datadir}/man/man8/*.gz
%{_datadir}/man/man3/*.gz
%{_datadir}/man/man5/*.gz
%{_datadir}/doc/packages/libdlm-%{version}
%{_unitdir}/dlm.service
%{_fillupdir}/sysconfig.dlm