diff --git a/.gitignore b/.gitignore index a69559c..ecdf3b1 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/sanlock-3.9.5.tar.gz +SOURCES/sanlock-4.0.0.tar.gz diff --git a/.sanlock.metadata b/.sanlock.metadata index b176551..5dd45ef 100644 --- a/.sanlock.metadata +++ b/.sanlock.metadata @@ -1 +1 @@ -4021b5ce81d08591d4ef992623a346e6dccb6ea1 SOURCES/sanlock-3.9.5.tar.gz +dfbea22e4e07ac3507be5585c101c1a281cf7271 SOURCES/sanlock-4.0.0.tar.gz diff --git a/SOURCES/0001-sanlock-fix-zero-io-timeout-for-direct-lockspace-req.patch b/SOURCES/0001-sanlock-fix-zero-io-timeout-for-direct-lockspace-req.patch new file mode 100644 index 0000000..b0dd5d7 --- /dev/null +++ b/SOURCES/0001-sanlock-fix-zero-io-timeout-for-direct-lockspace-req.patch @@ -0,0 +1,25 @@ +From 77ad5324fbad7558dd555cd7cabb0fa22a49e38a Mon Sep 17 00:00:00 2001 +From: David Teigland +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, §or_size, &align_size, &max_hosts, "LSF"); + if (rv) +-- +2.48.1 + diff --git a/SOURCES/0001-systemd-wdmd-work-around-race-with-udev-setting-soft.patch b/SOURCES/0001-systemd-wdmd-work-around-race-with-udev-setting-soft.patch deleted file mode 100644 index 669ae76..0000000 --- a/SOURCES/0001-systemd-wdmd-work-around-race-with-udev-setting-soft.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 9c626f97b25bf1973ece91c6f5dd67628bb0abd1 Mon Sep 17 00:00:00 2001 -From: David Teigland -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 - diff --git a/SOURCES/0002-sanlock-new-NODELAY-flag-for-add_lockspace.patch b/SOURCES/0002-sanlock-new-NODELAY-flag-for-add_lockspace.patch deleted file mode 100644 index 4bdbd03..0000000 --- a/SOURCES/0002-sanlock-new-NODELAY-flag-for-add_lockspace.patch +++ /dev/null @@ -1,167 +0,0 @@ -From 6240d633b229e15d445868a8b1463fb8ee6ddbc6 Mon Sep 17 00:00:00 2001 -From: David Teigland -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 - diff --git a/SPECS/sanlock.spec b/SPECS/sanlock.spec index 5d6f50c..3fbb564 100644 --- a/SPECS/sanlock.spec +++ b/SPECS/sanlock.spec @@ -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 - 4.0.0-2 +- Bump release. + +* Thu May 01 2025 David Teigland - 4.0.0-1 +- new upstream release + * Wed Oct 23 2024 David Teigland - 3.9.5-3 - new nodelay flag for add_lockspace