import CS sanlock-4.0.0-2.el9

This commit is contained in:
eabdullin 2025-09-15 12:42:58 +00:00
parent 1b2ca16714
commit 68488d838c
6 changed files with 40 additions and 207 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/sanlock-3.9.5.tar.gz
SOURCES/sanlock-4.0.0.tar.gz

View File

@ -1 +1 @@
4021b5ce81d08591d4ef992623a346e6dccb6ea1 SOURCES/sanlock-3.9.5.tar.gz
dfbea22e4e07ac3507be5585c101c1a281cf7271 SOURCES/sanlock-4.0.0.tar.gz

View File

@ -0,0 +1,25 @@
From 77ad5324fbad7558dd555cd7cabb0fa22a49e38a Mon Sep 17 00:00:00 2001
From: David Teigland <teigland@redhat.com>
Date: Wed, 30 Apr 2025 11:06:51 -0500
Subject: [PATCH] sanlock: fix zero io timeout for direct lockspace requests
---
src/direct.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/direct.c b/src/direct.c
index 208dd3509b14..e009de1a44b5 100644
--- a/src/direct.c
+++ b/src/direct.c
@@ -314,6 +314,8 @@ static int do_delta_action(int action,
if (!io_timeout)
io_timeout = com.io_timeout;
+ if (!io_timeout)
+ io_timeout = DEFAULT_IO_TIMEOUT;
rv = sizes_from_flags(ls->flags, &sector_size, &align_size, &max_hosts, "LSF");
if (rv)
--
2.48.1

View File

@ -1,29 +0,0 @@
From 9c626f97b25bf1973ece91c6f5dd67628bb0abd1 Mon Sep 17 00:00:00 2001
From: David Teigland <teigland@redhat.com>
Date: Fri, 18 Oct 2024 12:57:49 -0500
Subject: [PATCH] systemd-wdmd: work around race with udev setting softdog
label
After modprobe softdog, udev wants to set permission and/or label
on the watchdog device. Wait until that's done before trying to
test/probe the watchdog device. RHEL-56479
---
init.d/systemd-wdmd | 2 ++
1 file changed, 2 insertions(+)
diff --git a/init.d/systemd-wdmd b/init.d/systemd-wdmd
index 001609736287..c3126c408a89 100644
--- a/init.d/systemd-wdmd
+++ b/init.d/systemd-wdmd
@@ -19,6 +19,8 @@ watchdog_check() {
if [ $retval -ne 0 ]; then
echo -n $"Loading the softdog kernel module: "
modprobe softdog
+ # handle delay in udev setting permission/label
+ udevadm settle
watchdog_probe
retval=$?
--
2.46.2

View File

@ -1,167 +0,0 @@
From 6240d633b229e15d445868a8b1463fb8ee6ddbc6 Mon Sep 17 00:00:00 2001
From: David Teigland <teigland@redhat.com>
Date: Wed, 23 Oct 2024 14:51:04 -0500
Subject: [PATCH] sanlock: new NODELAY flag for add_lockspace
Forces the existing "no delay" path for acquiring a host_id
delta lease. This avoids delays in add_lockspace that are
used to detect machines using the same host_id. So, using
this flag is unsafe if multiple hosts may end up using the
same host_id.
---
src/cmd.c | 3 ++-
src/delta_lease.c | 8 ++++++--
src/delta_lease.h | 1 +
src/direct.c | 1 +
src/lockspace.c | 5 +++--
src/lockspace.h | 2 +-
src/sanlock_admin.h | 1 +
src/sanlock_internal.h | 1 +
8 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/src/cmd.c b/src/cmd.c
index e91da9d3eb41..47656bbb7f75 100644
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -1306,6 +1306,7 @@ static void cmd_add_lockspace(struct cmd_args *ca, uint32_t cmd)
struct space *sp;
uint32_t io_timeout;
int async = ca->header.cmd_flags & SANLK_ADD_ASYNC;
+ int nodelay = (ca->header.cmd_flags & SANLK_ADD_NODELAY) ? 1 : 0;
int fd, rv, result;
fd = client[ca->ci_in].fd;
@@ -1329,7 +1330,7 @@ static void cmd_add_lockspace(struct cmd_args *ca, uint32_t cmd)
if (!io_timeout)
io_timeout = com.io_timeout;
- rv = add_lockspace_start(&lockspace, io_timeout, &sp);
+ rv = add_lockspace_start(&lockspace, io_timeout, nodelay, &sp);
if (rv < 0) {
result = rv;
goto reply;
diff --git a/src/delta_lease.c b/src/delta_lease.c
index fb4a6402858d..144c0ea0ee11 100644
--- a/src/delta_lease.c
+++ b/src/delta_lease.c
@@ -332,6 +332,7 @@ int delta_lease_acquire(struct task *task,
char *space_name,
char *our_host_name,
uint64_t host_id,
+ int nodelay,
struct leader_record *leader_ret)
{
struct leader_record leader;
@@ -394,13 +395,16 @@ int delta_lease_acquire(struct task *task,
no_delay = 1;
if (is_same && our_host_name_matches_product_uuid)
no_delay = 1;
+ if (nodelay)
+ no_delay = 1;
- log_space(sp, "delta_acquire %s owner, %s free, %s our_product_uuid, %s delay, other_io_timeout %d",
+ log_space(sp, "delta_acquire %s owner, %s free, %s our_product_uuid, %s delay, other_io_timeout %d, flag_nodelay %d",
is_same ? "same" : "new",
is_free ? "is" : "not",
our_host_name_matches_product_uuid ? "is" : "not",
no_delay ? "no" : "short",
- other_io_timeout);
+ other_io_timeout,
+ nodelay);
goto write_new;
}
diff --git a/src/delta_lease.h b/src/delta_lease.h
index ec1c3468bf72..22c6faa16995 100644
--- a/src/delta_lease.h
+++ b/src/delta_lease.h
@@ -24,6 +24,7 @@ int delta_lease_acquire(struct task *task,
char *space_name,
char *our_host_name,
uint64_t host_id,
+ int nodelay,
struct leader_record *leader_ret);
int delta_lease_renew(struct task *task,
diff --git a/src/direct.c b/src/direct.c
index 3bc7659e905c..1f4064795c4a 100644
--- a/src/direct.c
+++ b/src/direct.c
@@ -364,6 +364,7 @@ static int do_delta_action(int action,
ls->name,
our_host_name,
ls->host_id,
+ 0,
&leader);
break;
case ACT_RENEW_ID:
diff --git a/src/lockspace.c b/src/lockspace.c
index a2bee3f478fd..1cea79d41618 100644
--- a/src/lockspace.c
+++ b/src/lockspace.c
@@ -973,7 +973,7 @@ static void *lockspace_thread(void *arg_in)
delta_result = delta_lease_acquire(&task, sp, &sp->host_id_disk,
sp->space_name, our_host_name_global,
- sp->host_id, &leader);
+ sp->host_id, sp->nodelay, &leader);
delta_length = monotime() - delta_begin;
if (delta_result == SANLK_OK)
@@ -1152,7 +1152,7 @@ static void free_sp(struct space *sp)
free(sp);
}
-int add_lockspace_start(struct sanlk_lockspace *ls, uint32_t io_timeout, struct space **sp_out)
+int add_lockspace_start(struct sanlk_lockspace *ls, uint32_t io_timeout, int nodelay, struct space **sp_out)
{
struct space *sp, *sp2;
int listnum = 0;
@@ -1178,6 +1178,7 @@ int add_lockspace_start(struct sanlk_lockspace *ls, uint32_t io_timeout, struct
sp->host_id_disk.fd = -1;
sp->host_id = ls->host_id;
sp->io_timeout = io_timeout;
+ sp->nodelay = nodelay;
sp->set_bitmap_seconds = calc_set_bitmap_seconds(io_timeout);
pthread_mutex_init(&sp->mutex, NULL);
diff --git a/src/lockspace.h b/src/lockspace.h
index 0c3cba324e31..790a5cc68499 100644
--- a/src/lockspace.h
+++ b/src/lockspace.h
@@ -42,7 +42,7 @@ int check_our_lease(struct space *sp, int *check_all, char *check_buf);
void check_other_leases(struct space *sp, char *buf);
/* locks spaces_mutex */
-int add_lockspace_start(struct sanlk_lockspace *ls, uint32_t io_timeout, struct space **sp_out);
+int add_lockspace_start(struct sanlk_lockspace *ls, uint32_t io_timeout, int nodelay, struct space **sp_out);
/* locks sp, locks spaces_mutex */
int add_lockspace_wait(struct space *sp);
diff --git a/src/sanlock_admin.h b/src/sanlock_admin.h
index 685cce11d6f3..10bfc49b312b 100644
--- a/src/sanlock_admin.h
+++ b/src/sanlock_admin.h
@@ -12,6 +12,7 @@
/* add flags */
#define SANLK_ADD_ASYNC 0x00000001
+#define SANLK_ADD_NODELAY 0x00000002 /* can be unsafe */
/* rem flags */
#define SANLK_REM_ASYNC 0x00000001
diff --git a/src/sanlock_internal.h b/src/sanlock_internal.h
index ebb0a9c319c1..e57127b17233 100644
--- a/src/sanlock_internal.h
+++ b/src/sanlock_internal.h
@@ -217,6 +217,7 @@ struct space {
uint32_t renewal_read_extend_sec; /* defaults to io_timeout */
uint32_t rindex_op;
unsigned int set_max_sectors_kb;
+ int nodelay;
int sector_size;
int align_size;
int max_hosts;
--
2.46.2

View File

@ -1,6 +1,6 @@
Name: sanlock
Version: 3.9.5
Release: 3%{?dist}
Version: 4.0.0
Release: 2%{?dist}
Summary: A shared storage lock manager
License: GPLv2 and GPLv2+ and LGPLv2+
@ -22,8 +22,7 @@ Requires(preun): systemd-units
Requires(postun): systemd-units
Source0: https://releases.pagure.org/sanlock/%{name}-%{version}.tar.gz
Patch0: 0001-systemd-wdmd-work-around-race-with-udev-setting-soft.patch
Patch1: 0002-sanlock-new-NODELAY-flag-for-add_lockspace.patch
Patch0: 0001-sanlock-fix-zero-io-timeout-for-direct-lockspace-req.patch
%description
The sanlock daemon manages leases for applications on hosts using shared storage.
@ -31,7 +30,6 @@ The sanlock daemon manages leases for applications on hosts using shared storage
%prep
%setup -q
%patch0 -p1 -b .backup0
%patch1 -p1 -b .backup1
%build
%set_build_flags
@ -55,9 +53,9 @@ make -C python \
PY_VERSION=3
install -D -m 0644 init.d/sanlock.service.native $RPM_BUILD_ROOT/%{_unitdir}/sanlock.service
install -D -m 0755 init.d/systemd-wdmd $RPM_BUILD_ROOT/usr/lib/systemd/systemd-wdmd
install -D -m 0644 init.d/wdmd.service $RPM_BUILD_ROOT/%{_unitdir}/wdmd.service
install -D -m 0644 init.d/sanlock.service.native $RPM_BUILD_ROOT%{_unitdir}/sanlock.service
install -D -m 0755 init.d/systemd-wdmd $RPM_BUILD_ROOT%{_prefix}/lib/systemd/systemd-wdmd
install -D -m 0644 init.d/wdmd.service $RPM_BUILD_ROOT%{_unitdir}/wdmd.service
install -D -m 0644 src/logrotate.sanlock \
$RPM_BUILD_ROOT/etc/logrotate.d/sanlock
@ -89,7 +87,7 @@ getent passwd sanlock > /dev/null || /usr/sbin/useradd \
%systemd_postun wdmd.service sanlock.service
%files
/usr/lib/systemd/systemd-wdmd
%{_prefix}/lib/systemd/systemd-wdmd
%{_unitdir}/sanlock.service
%{_unitdir}/wdmd.service
%{_sbindir}/sanlock
@ -155,6 +153,12 @@ developing applications that use %{name}.
%{_libdir}/pkgconfig/libsanlock_client.pc
%changelog
* Wed Aug 06 2025 Marian Csontos <mcsontos@redhat.com> - 4.0.0-2
- Bump release.
* Thu May 01 2025 David Teigland <teigland@redhat.com> - 4.0.0-1
- new upstream release
* Wed Oct 23 2024 David Teigland <teigland@redhat.com> - 3.9.5-3
- new nodelay flag for add_lockspace