import sanlock-3.8.4-4.el9
This commit is contained in:
parent
c1209cdf2b
commit
19d72de1d2
@ -0,0 +1,30 @@
|
|||||||
|
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
|
||||||
|
|
51
SOURCES/0002-sanlock-fix-pthread_create-error-check.patch
Normal file
51
SOURCES/0002-sanlock-fix-pthread_create-error-check.patch
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
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
|
||||||
|
|
@ -0,0 +1,42 @@
|
|||||||
|
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
|
||||||
|
|
63
SOURCES/0004-sanlock-fix-pthread_create-error-paths.patch
Normal file
63
SOURCES/0004-sanlock-fix-pthread_create-error-paths.patch
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
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
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
Name: sanlock
|
Name: sanlock
|
||||||
Version: 3.8.4
|
Version: 3.8.4
|
||||||
Release: 1%{?dist}
|
Release: 4%{?dist}
|
||||||
Summary: A shared storage lock manager
|
Summary: A shared storage lock manager
|
||||||
|
|
||||||
License: GPLv2 and GPLv2+ and LGPLv2+
|
License: GPLv2 and GPLv2+ and LGPLv2+
|
||||||
@ -22,11 +22,20 @@ Requires(preun): systemd-units
|
|||||||
Requires(postun): systemd-units
|
Requires(postun): systemd-units
|
||||||
Source0: https://releases.pagure.org/sanlock/%{name}-%{version}.tar.gz
|
Source0: https://releases.pagure.org/sanlock/%{name}-%{version}.tar.gz
|
||||||
|
|
||||||
|
Patch0: 0001-sanlock-fix-memory-leak-of-lockspace-renewal_history.patch
|
||||||
|
Patch1: 0002-sanlock-fix-pthread_create-error-check.patch
|
||||||
|
Patch2: 0003-Revert-sanlock-Shrink-thread-pool-when-there-is-no-w.patch
|
||||||
|
Patch3: 0004-sanlock-fix-pthread_create-error-paths.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The sanlock daemon manages leases for applications on hosts using shared storage.
|
The sanlock daemon manages leases for applications on hosts using shared storage.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
%patch0 -p1 -b .backup0
|
||||||
|
%patch1 -p1 -b .backup1
|
||||||
|
%patch2 -p1 -b .backup2
|
||||||
|
%patch3 -p1 -b .backup3
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%set_build_flags
|
%set_build_flags
|
||||||
@ -153,6 +162,9 @@ developing applications that use %{name}.
|
|||||||
%{_libdir}/pkgconfig/libsanlock_client.pc
|
%{_libdir}/pkgconfig/libsanlock_client.pc
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Apr 01 2022 David Teigland <teigland@redhat.com> - 3.8.4-4
|
||||||
|
- fixes for thread/memory leak
|
||||||
|
|
||||||
* Mon Aug 23 2021 David Teigland <teigland@redhat.com> - 3.8.4-1
|
* Mon Aug 23 2021 David Teigland <teigland@redhat.com> - 3.8.4-1
|
||||||
- Update rhel9 beta version to match latest rhel8
|
- Update rhel9 beta version to match latest rhel8
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user