Rebase to sanlock upstream release 4.1.0
Resolves: RHEL-118947
This commit is contained in:
parent
0e00fa1aca
commit
ab3033380c
1
.gitignore
vendored
1
.gitignore
vendored
@ -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
|
||||
|
||||
@ -1,108 +0,0 @@
|
||||
From 5044719a27cb41889ec08177cba977596b783e83 Mon Sep 17 00:00:00 2001
|
||||
From: Nir Soffer <nsoffer@redhat.com>
|
||||
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 <teigland@redhat.com>
|
||||
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 <nsoffer@redhat.com>
|
||||
---
|
||||
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
|
||||
|
||||
@ -1,50 +0,0 @@
|
||||
From 5b34da78d33c2fca7dc3d2c49ae6d395d90c48c1 Mon Sep 17 00:00:00 2001
|
||||
From: David Teigland <teigland@redhat.com>
|
||||
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
|
||||
|
||||
@ -1,30 +0,0 @@
|
||||
From e82899fd996f4901e1ec89d77e4a17a1032fee8f Mon Sep 17 00:00:00 2001
|
||||
From: David Teigland <teigland@redhat.com>
|
||||
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
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
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, §or_size, &align_size, &max_hosts, "LSF");
|
||||
if (rv)
|
||||
--
|
||||
2.48.1
|
||||
|
||||
@ -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
|
||||
|
||||
@ -1,51 +0,0 @@
|
||||
From e44c47c48a3a71502deacbafda851cb6d93e78c8 Mon Sep 17 00:00:00 2001
|
||||
From: David Teigland <teigland@redhat.com>
|
||||
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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -1,42 +0,0 @@
|
||||
From 4ed90cfb2462d3463ae74935c5eeb9d9588ea098 Mon Sep 17 00:00:00 2001
|
||||
From: David Teigland <teigland@redhat.com>
|
||||
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
|
||||
|
||||
@ -1,63 +0,0 @@
|
||||
From 574d3cc3ecccd1e8a6c1a8a861dd4847a05789f5 Mon Sep 17 00:00:00 2001
|
||||
From: David Teigland <teigland@redhat.com>
|
||||
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
|
||||
|
||||
15
sanlock.spec
15
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 <mcsontos@redhat.com> - 4.1.0-1
|
||||
- new upstream release
|
||||
|
||||
* Wed Aug 06 2025 Marian Csontos <mcsontos@redhat.com> - 4.0.0-2
|
||||
- Bump release.
|
||||
|
||||
|
||||
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (sanlock-4.0.0.tar.gz) = a478c8bbc09043d5dad18cc3ddbcaeefec0dd5587ab2807721424a1efc9d58ab82deacaa2f88289dc9990a2a6f95a80dabb727670e7aeaeba5ed0a57a3849c27
|
||||
SHA512 (sanlock-4.1.0.tar.gz) = dd3786aa22a3bf94981141d244d1422bfbe12870c070d0f835b68601b9f0152265144e68426a6f112248df0dbfcb65914b1586f0cd83ab4aece79d8279f4438e
|
||||
|
||||
Loading…
Reference in New Issue
Block a user