From ab3033380c141af8556967b32be85f1ba49be846 Mon Sep 17 00:00:00 2001 From: Marian Csontos Date: Fri, 3 Oct 2025 15:26:22 +0200 Subject: [PATCH] Rebase to sanlock upstream release 4.1.0 Resolves: RHEL-118947 --- .gitignore | 1 + 0001-python-Remove-extra-link-args.patch | 108 ----------- ...ck-fix-invalid-strcpy-in-direct-dump.patch | 50 ------ ...ry-leak-of-lockspace-renewal_history.patch | 30 ---- ...-io-timeout-for-direct-lockspace-req.patch | 25 --- ...k-around-race-with-udev-setting-soft.patch | 29 --- ...nlock-fix-pthread_create-error-check.patch | 51 ------ ...k-new-NODELAY-flag-for-add_lockspace.patch | 167 ------------------ ...hrink-thread-pool-when-there-is-no-w.patch | 42 ----- ...nlock-fix-pthread_create-error-paths.patch | 63 ------- sanlock.spec | 15 +- sources | 2 +- 12 files changed, 10 insertions(+), 573 deletions(-) delete mode 100644 0001-python-Remove-extra-link-args.patch delete mode 100644 0001-sanlock-fix-invalid-strcpy-in-direct-dump.patch delete mode 100644 0001-sanlock-fix-memory-leak-of-lockspace-renewal_history.patch delete mode 100644 0001-sanlock-fix-zero-io-timeout-for-direct-lockspace-req.patch delete mode 100644 0001-systemd-wdmd-work-around-race-with-udev-setting-soft.patch delete mode 100644 0002-sanlock-fix-pthread_create-error-check.patch delete mode 100644 0002-sanlock-new-NODELAY-flag-for-add_lockspace.patch delete mode 100644 0003-Revert-sanlock-Shrink-thread-pool-when-there-is-no-w.patch delete mode 100644 0004-sanlock-fix-pthread_create-error-paths.patch diff --git a/.gitignore b/.gitignore index e70aaa2..1660fdf 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ /sanlock-3.9.3.tar.gz /sanlock-3.9.5.tar.gz /sanlock-4.0.0.tar.gz +/sanlock-4.1.0.tar.gz diff --git a/0001-python-Remove-extra-link-args.patch b/0001-python-Remove-extra-link-args.patch deleted file mode 100644 index 8524524..0000000 --- a/0001-python-Remove-extra-link-args.patch +++ /dev/null @@ -1,108 +0,0 @@ -From 5044719a27cb41889ec08177cba977596b783e83 Mon Sep 17 00:00:00 2001 -From: Nir Soffer -Date: Sun, 2 Aug 2020 02:01:06 +0300 -Subject: [PATCH] python: Remove extra link args - -Fedora 33 builds fails now with: - -/usr/bin/ld: /tmp/sanlock.cpython-39-x86_64-linux-gnu.so.mpvMfj.ltrans0.ltrans.o: -relocation R_X86_64_PC32 against undefined symbol `PyExc_ValueError' can -not be used when making a shared object; recompile with -fPIC - -We use these extra link args: - - extra_link_args=['-fPIE', '-Wl,-z,relro,-z,now'], - -Looking the generated compiler command[1]: - -gcc -pthread \ - -shared \ - -Wl,-z,relro \ - -Wl,--as-needed \ - -Wl,-z,now \ - -g \ - -Wl,-z,relro \ - -Wl,--as-needed \ - -Wl,-z,now \ - -g \ - -Wl,-z,relro \ - -Wl,--as-needed \ - -Wl,-z,now \ - -specs=/usr/lib/rpm/redhat/redhat-hardened-ld \ - -O2 \ - -fexceptions \ - -g \ - -grecord-gcc-switches \ - -pipe \ - -Wall \ - -Werror=format-security \ - -Wp,-D_FORTIFY_SOURCE=2 \ - -Wp,-D_GLIBCXX_ASSERTIONS \ - -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 \ - -fstack-protector-strong \ - -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 \ - -m64 \ - -mtune=generic \ - -fasynchronous-unwind-tables \ - -fstack-clash-protection \ - -fcf-protection build/temp.linux-x86_64-3.9/sanlock.o \ - -L../src \ - -L/usr/lib64 \ - -lsanlock \ - -o build/lib.linux-x86_64-3.9/sanlock.cpython-39-x86_64-linux-gnu.so \ - -fPIE \ - -Wl,-z,relro,-z,now - -This looks like a complete mess. These arguments are repeated 3 times: - - -Wl,-z,relro \ - -Wl,--as-needed \ - -Wl,-z,now \ - -And our extra compiler flags adds the forth copy. - -gcc says this about -fPIE: - - These options are similar to -fpic and -fPIC, but the generated - position-independent code can be only linked into executables - -But our python extension is a shared object, so I don't think -fPIE -makes sense. - -The extra arguments were added in: - -commit a1929080a6ce51879139eb8d05a425ccd3d37082 -Author: David Teigland -Date: Wed Oct 14 13:21:04 2015 -0500 - - python: add compile flags - -Without any justification. I assume the intent was good, but it looks -like this change was not needed, and somehow it worked until now. - -If some hardening is needed, it should be done by python build -infrastructure, not in sanlock. And it seems that python do use some -hardening specs (e.g. -specs=/usr/lib/rpm/redhat/redhat-hardened-ld). - -[1] https://kojipkgs.fedoraproject.org//work/tasks/8900/48358900/build.log - -Signed-off-by: Nir Soffer ---- - python/setup.py | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/python/setup.py b/python/setup.py -index 0f3d683..b3bfaf1 100644 ---- a/python/setup.py -+++ b/python/setup.py -@@ -12,7 +12,6 @@ sanlock = Extension(name='sanlock', - include_dirs=['../src'], - library_dirs=['../src'], - extra_compile_args=["-std=c99"], -- extra_link_args=['-fPIE', '-Wl,-z,relro,-z,now'], - libraries=sanlocklib) - - version = None --- -2.25.4 - diff --git a/0001-sanlock-fix-invalid-strcpy-in-direct-dump.patch b/0001-sanlock-fix-invalid-strcpy-in-direct-dump.patch deleted file mode 100644 index 22eb98b..0000000 --- a/0001-sanlock-fix-invalid-strcpy-in-direct-dump.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 5b34da78d33c2fca7dc3d2c49ae6d395d90c48c1 Mon Sep 17 00:00:00 2001 -From: David Teigland -Date: Wed, 14 Aug 2024 11:51:17 -0500 -Subject: [PATCH] sanlock: fix invalid strcpy in direct dump - -If a lockspace or resource name is the full 48 characters -in length, then the ondisk name field does not contain a -terminating null character and strcpy fails. ---- - src/direct.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/direct.c b/src/direct.c -index f70dc19d5ef2..3bc7659e905c 100644 ---- a/src/direct.c -+++ b/src/direct.c -@@ -730,8 +730,8 @@ int direct_dump(struct task *task, char *dump_path, int force_mode) - if (!lr->owner_id && !lr->owner_generation) - continue; - -- strcpy(sname, lr->space_name); -- strcpy(rname, lr->resource_name); -+ memcpy(sname, lr->space_name, NAME_ID_SIZE); -+ memcpy(rname, lr->resource_name, NAME_ID_SIZE); - - printf("%08llu %36s %48s %010llu %04llu %04llu", - (unsigned long long)(start_offset + ((sector_nr + i) * sector_size)), -@@ -754,8 +754,8 @@ int direct_dump(struct task *task, char *dump_path, int force_mode) - leader_record_in(lr_end, &lr_in); - lr = &lr_in; - -- strcpy(sname, lr->space_name); -- strcpy(rname, lr->resource_name); -+ memcpy(sname, lr->space_name, NAME_ID_SIZE); -+ memcpy(rname, lr->resource_name, NAME_ID_SIZE); - - printf("%08llu %36s %48s %010llu %04llu %04llu %llu", - (unsigned long long)(start_offset + (sector_nr * sector_size)), -@@ -806,7 +806,7 @@ int direct_dump(struct task *task, char *dump_path, int force_mode) - rindex_header_in(rh_end, &rh_in); - rh = &rh_in; - -- strcpy(sname, rh->lockspace_name); -+ memcpy(sname, rh->lockspace_name, NAME_ID_SIZE); - - printf("%08llu %36s rindex_header 0x%x %d %u %llu\n", - (unsigned long long)(start_offset + (sector_nr * sector_size)), --- -2.46.0 - diff --git a/0001-sanlock-fix-memory-leak-of-lockspace-renewal_history.patch b/0001-sanlock-fix-memory-leak-of-lockspace-renewal_history.patch deleted file mode 100644 index fffb9e2..0000000 --- a/0001-sanlock-fix-memory-leak-of-lockspace-renewal_history.patch +++ /dev/null @@ -1,30 +0,0 @@ -From e82899fd996f4901e1ec89d77e4a17a1032fee8f Mon Sep 17 00:00:00 2001 -From: David Teigland -Date: Thu, 3 Mar 2022 09:39:52 -0600 -Subject: [PATCH 1/4] sanlock: fix memory leak of lockspace renewal_history - -Leak was in original commit for "sanlock: renewal history" -6313c709722b3ba63234a75d1651a160bf1728ee. - -With the default renewal history size, each lockspace that -was created would leak about 4kb of memory. ---- - src/lockspace.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/lockspace.c b/src/lockspace.c -index 2ebc247dce41..d23dccd84815 100644 ---- a/src/lockspace.c -+++ b/src/lockspace.c -@@ -939,6 +939,8 @@ static void free_sp(struct space *sp) - { - if (sp->lease_status.renewal_read_buf) - free(sp->lease_status.renewal_read_buf); -+ if (sp->renewal_history) -+ free(sp->renewal_history); - free(sp); - } - --- -2.7.5 - diff --git a/0001-sanlock-fix-zero-io-timeout-for-direct-lockspace-req.patch b/0001-sanlock-fix-zero-io-timeout-for-direct-lockspace-req.patch deleted file mode 100644 index b0dd5d7..0000000 --- a/0001-sanlock-fix-zero-io-timeout-for-direct-lockspace-req.patch +++ /dev/null @@ -1,25 +0,0 @@ -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/0001-systemd-wdmd-work-around-race-with-udev-setting-soft.patch b/0001-systemd-wdmd-work-around-race-with-udev-setting-soft.patch deleted file mode 100644 index 669ae76..0000000 --- a/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/0002-sanlock-fix-pthread_create-error-check.patch b/0002-sanlock-fix-pthread_create-error-check.patch deleted file mode 100644 index 5809dc7..0000000 --- a/0002-sanlock-fix-pthread_create-error-check.patch +++ /dev/null @@ -1,51 +0,0 @@ -From e44c47c48a3a71502deacbafda851cb6d93e78c8 Mon Sep 17 00:00:00 2001 -From: David Teigland -Date: Wed, 9 Mar 2022 15:25:11 -0600 -Subject: [PATCH 2/4] sanlock: fix pthread_create error check - -for non-zero rather than less than zero ---- - src/lockspace.c | 4 ++-- - src/main.c | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/lockspace.c b/src/lockspace.c -index d23dccd84815..582a0e973566 100644 ---- a/src/lockspace.c -+++ b/src/lockspace.c -@@ -1070,8 +1070,8 @@ int add_lockspace_start(struct sanlk_lockspace *ls, uint32_t io_timeout, struct - (unsigned long long)sp->host_id_disk.offset); - - rv = pthread_create(&sp->thread, NULL, lockspace_thread, sp); -- if (rv < 0) { -- log_erros(sp, "add_lockspace create thread failed"); -+ if (rv) { -+ log_erros(sp, "add_lockspace create thread failed %d", rv); - goto fail_del; - } - -diff --git a/src/main.c b/src/main.c -index 5b6fabc6d0b8..613fb0ee23d5 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -995,7 +995,7 @@ static int thread_pool_add_work(struct cmd_args *ca) - if (!pool.free_workers && pool.num_workers < pool.max_workers) { - rv = pthread_create(&th, NULL, thread_pool_worker, - (void *)(long)pool.num_workers); -- if (rv < 0) { -+ if (rv) { - log_error("thread_pool_add_work ci %d error %d", ca->ci_in, rv); - list_del(&ca->list); - pthread_mutex_unlock(&pool.mutex); -@@ -1035,7 +1035,7 @@ static int thread_pool_create(int min_workers, int max_workers) - for (i = 0; i < min_workers; i++) { - rv = pthread_create(&th, NULL, thread_pool_worker, - (void *)(long)i); -- if (rv < 0) -+ if (rv) - break; - pool.num_workers++; - } --- -2.7.5 - diff --git a/0002-sanlock-new-NODELAY-flag-for-add_lockspace.patch b/0002-sanlock-new-NODELAY-flag-for-add_lockspace.patch deleted file mode 100644 index 4bdbd03..0000000 --- a/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/0003-Revert-sanlock-Shrink-thread-pool-when-there-is-no-w.patch b/0003-Revert-sanlock-Shrink-thread-pool-when-there-is-no-w.patch deleted file mode 100644 index f07cdcf..0000000 --- a/0003-Revert-sanlock-Shrink-thread-pool-when-there-is-no-w.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 4ed90cfb2462d3463ae74935c5eeb9d9588ea098 Mon Sep 17 00:00:00 2001 -From: David Teigland -Date: Thu, 17 Mar 2022 13:41:31 -0500 -Subject: [PATCH 3/4] Revert "sanlock: Shrink thread pool when there is no - work" - -This reverts commit 0ff9c1ab8852bec846822ee2af55ebcb7e5f5967. - -This patch causes unexplained growth in memory usage. -Part of the problem may be that the worker threads are -not joined and the detached state is not set, but an -initial test setting the detached state didn't seem -to fix the problem. ---- - src/main.c | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/src/main.c b/src/main.c -index 613fb0ee23d5..b447b723a490 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -946,9 +946,6 @@ static void *thread_pool_worker(void *data) - - while (1) { - while (!pool.quit && list_empty(&pool.work_data)) { -- if (pool.free_workers >= DEFAULT_MIN_WORKER_THREADS) -- goto out; -- - pool.free_workers++; - pthread_cond_wait(&pool.cond, &pool.mutex); - pool.free_workers--; -@@ -969,7 +966,6 @@ static void *thread_pool_worker(void *data) - break; - } - --out: - pool.num_workers--; - if (!pool.num_workers) - pthread_cond_signal(&pool.quit_wait); --- -2.7.5 - diff --git a/0004-sanlock-fix-pthread_create-error-paths.patch b/0004-sanlock-fix-pthread_create-error-paths.patch deleted file mode 100644 index 1b8fcd3..0000000 --- a/0004-sanlock-fix-pthread_create-error-paths.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 574d3cc3ecccd1e8a6c1a8a861dd4847a05789f5 Mon Sep 17 00:00:00 2001 -From: David Teigland -Date: Fri, 18 Mar 2022 09:32:06 -0500 -Subject: [PATCH 4/4] sanlock: fix pthread_create error paths - -The fix for pthread_create errors in commit - 5abb9d50616d399914958b99352b8cf016e4928a - sanlock: fix pthread_create error check -missed error handling further in the exit path. ---- - src/lockspace.c | 1 + - src/main.c | 8 ++++++-- - 2 files changed, 7 insertions(+), 2 deletions(-) - -diff --git a/src/lockspace.c b/src/lockspace.c -index 582a0e973566..d9b79f6de257 100644 ---- a/src/lockspace.c -+++ b/src/lockspace.c -@@ -1072,6 +1072,7 @@ int add_lockspace_start(struct sanlk_lockspace *ls, uint32_t io_timeout, struct - rv = pthread_create(&sp->thread, NULL, lockspace_thread, sp); - if (rv) { - log_erros(sp, "add_lockspace create thread failed %d", rv); -+ rv = -1; - goto fail_del; - } - -diff --git a/src/main.c b/src/main.c -index b447b723a490..5a0f9ba677ff 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -995,6 +995,7 @@ static int thread_pool_add_work(struct cmd_args *ca) - log_error("thread_pool_add_work ci %d error %d", ca->ci_in, rv); - list_del(&ca->list); - pthread_mutex_unlock(&pool.mutex); -+ rv = -1; - return rv; - } - pool.num_workers++; -@@ -1019,7 +1020,7 @@ static void thread_pool_free(void) - static int thread_pool_create(int min_workers, int max_workers) - { - pthread_t th; -- int i, rv; -+ int i, rv = 0; - - memset(&pool, 0, sizeof(pool)); - INIT_LIST_HEAD(&pool.work_data); -@@ -1031,8 +1032,11 @@ static int thread_pool_create(int min_workers, int max_workers) - for (i = 0; i < min_workers; i++) { - rv = pthread_create(&th, NULL, thread_pool_worker, - (void *)(long)i); -- if (rv) -+ if (rv) { -+ log_error("thread_pool_create failed %d", rv); -+ rv = -1; - break; -+ } - pool.num_workers++; - } - --- -2.7.5 - diff --git a/sanlock.spec b/sanlock.spec index 3fbb564..6dd4ea5 100644 --- a/sanlock.spec +++ b/sanlock.spec @@ -1,6 +1,6 @@ Name: sanlock -Version: 4.0.0 -Release: 2%{?dist} +Version: 4.1.0 +Release: 1%{?dist} Summary: A shared storage lock manager License: GPLv2 and GPLv2+ and LGPLv2+ @@ -22,14 +22,14 @@ Requires(preun): systemd-units Requires(postun): systemd-units Source0: https://releases.pagure.org/sanlock/%{name}-%{version}.tar.gz -Patch0: 0001-sanlock-fix-zero-io-timeout-for-direct-lockspace-req.patch +#Patch0: 0001- %description The sanlock daemon manages leases for applications on hosts using shared storage. %prep %setup -q -%patch0 -p1 -b .backup0 +#%%patch0 -p1 -b .backup0 %build %set_build_flags @@ -67,14 +67,13 @@ install -D -m 0644 init.d/wdmd.sysconfig \ $RPM_BUILD_ROOT/etc/sysconfig/wdmd install -Dd -m 0755 $RPM_BUILD_ROOT/etc/wdmd.d -install -Dd -m 0775 $RPM_BUILD_ROOT/run/sanlock %pre getent group sanlock > /dev/null || /usr/sbin/groupadd \ -g 179 sanlock getent passwd sanlock > /dev/null || /usr/sbin/useradd \ -u 179 -c "sanlock" -s /sbin/nologin -r \ - -g 179 -d /var/run/sanlock sanlock + -g 179 -d /run/sanlock sanlock /usr/sbin/usermod -a -G disk sanlock %post @@ -94,7 +93,6 @@ getent passwd sanlock > /dev/null || /usr/sbin/useradd \ %{_sbindir}/wdmd %dir %{_sysconfdir}/wdmd.d %dir %{_sysconfdir}/sanlock -%dir %attr(-,sanlock,sanlock) /run/sanlock %{_mandir}/man8/wdmd* %{_mandir}/man8/sanlock* %config(noreplace) %{_sysconfdir}/logrotate.d/sanlock @@ -153,6 +151,9 @@ developing applications that use %{name}. %{_libdir}/pkgconfig/libsanlock_client.pc %changelog +* Thu Oct 09 2025 Marian Csontos - 4.1.0-1 +- new upstream release + * Wed Aug 06 2025 Marian Csontos - 4.0.0-2 - Bump release. diff --git a/sources b/sources index 7ac36dd..4692a2e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sanlock-4.0.0.tar.gz) = a478c8bbc09043d5dad18cc3ddbcaeefec0dd5587ab2807721424a1efc9d58ab82deacaa2f88289dc9990a2a6f95a80dabb727670e7aeaeba5ed0a57a3849c27 +SHA512 (sanlock-4.1.0.tar.gz) = dd3786aa22a3bf94981141d244d1422bfbe12870c070d0f835b68601b9f0152265144e68426a6f112248df0dbfcb65914b1586f0cd83ab4aece79d8279f4438e