Compare commits

...

No commits in common. 'i10c-beta' and 'c9' have entirely different histories.

2
.gitignore vendored

@ -1 +1 @@
SOURCES/sanlock-3.9.4.tar.gz
SOURCES/sanlock-3.8.4.tar.gz

@ -1 +1 @@
044f58080f9b445b3761408e37953d60d8257d49 SOURCES/sanlock-3.9.4.tar.gz
494d5efc260b643ed9a3ee6bbdb0d31ecb14c201 SOURCES/sanlock-3.8.4.tar.gz

@ -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

@ -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

@ -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

@ -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,23 +1,31 @@
Name: sanlock
Version: 3.9.4
Release: 2%{?dist}
Version: 3.8.4
Release: 4%{?dist}
Summary: A shared storage lock manager
License: GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.0-or-later
License: GPLv2 and GPLv2+ and LGPLv2+
URL: https://pagure.io/sanlock/
BuildRequires: gcc
BuildRequires: libaio-devel
BuildRequires: libblkid-devel
BuildRequires: libuuid-devel
BuildRequires: make
BuildRequires: python3
BuildRequires: python3-devel
BuildRequires: systemd-units
Requires: %{name}-lib = %{version}-%{release}
Requires(pre): /usr/sbin/groupadd
Requires(pre): /usr/sbin/useradd
Requires(post): systemd-units
Requires(post): systemd-sysv
Requires(preun): systemd-units
Requires(postun): systemd-units
Source0: https://releases.pagure.org/sanlock/%{name}-%{version}.tar.gz
Patch0: 0001-sanlock-fix-invalid-strcpy-in-direct-dump.patch
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
The sanlock daemon manages leases for applications on hosts using shared storage.
@ -25,6 +33,9 @@ The sanlock daemon manages leases for applications on hosts using shared storage
%prep
%setup -q
%patch0 -p1 -b .backup0
%patch1 -p1 -b .backup1
%patch2 -p1 -b .backup2
%patch3 -p1 -b .backup3
%build
%set_build_flags
@ -32,6 +43,7 @@ The sanlock daemon manages leases for applications on hosts using shared storage
# upstream does not support _smp_mflags
CFLAGS=$RPM_OPT_FLAGS make -C wdmd
CFLAGS=$RPM_OPT_FLAGS make -C src
CFLAGS=$RPM_OPT_FLAGS make -C python PY_VERSION=3
%install
rm -rf $RPM_BUILD_ROOT
@ -41,12 +53,15 @@ make -C src \
make -C wdmd \
install LIBDIR=%{_libdir} \
DESTDIR=$RPM_BUILD_ROOT
make -C python \
install LIBDIR=%{_libdir} \
DESTDIR=$RPM_BUILD_ROOT \
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 -p -D -m 0644 src/sanlock.sysusers $RPM_BUILD_ROOT/%{_sysusersdir}/sanlock.conf
install -D -m 0644 init.d/sanlock.service.native $RPM_BUILD_ROOT/%{_unitdir}/sanlock.service
install -D -m 0755 init.d/wdmd $RPM_BUILD_ROOT/usr/lib/systemd/systemd-wdmd
install -D -m 0644 init.d/wdmd.service.native $RPM_BUILD_ROOT/%{_unitdir}/wdmd.service
install -D -m 0644 src/logrotate.sanlock \
$RPM_BUILD_ROOT/etc/logrotate.d/sanlock
@ -61,7 +76,12 @@ install -Dd -m 0755 $RPM_BUILD_ROOT/etc/wdmd.d
install -Dd -m 0775 $RPM_BUILD_ROOT/%{_localstatedir}/run/sanlock
%pre
%sysusers_create_compat sanlock.sysusers
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
/usr/sbin/usermod -a -G disk sanlock
%post
%systemd_post wdmd.service sanlock.service
@ -86,7 +106,9 @@ install -Dd -m 0775 $RPM_BUILD_ROOT/%{_localstatedir}/run/sanlock
%config(noreplace) %{_sysconfdir}/logrotate.d/sanlock
%config(noreplace) %{_sysconfdir}/sanlock/sanlock.conf
%config(noreplace) %{_sysconfdir}/sysconfig/wdmd
%{_sysusersdir}/sanlock.conf
%doc init.d/sanlock
%doc init.d/sanlock.service
%doc init.d/wdmd.service
%package lib
Summary: A shared storage lock manager library
@ -104,6 +126,20 @@ access to the shared disks.
%{_libdir}/libsanlock_client.so.*
%{_libdir}/libwdmd.so.*
%package -n python3-sanlock
%{?python_provide:%python_provide python3-sanlock}
Summary: Python bindings for the sanlock library
Requires: %{name}-lib = %{version}-%{release}
%description -n python3-sanlock
The %{name}-python package contains a module that permits applications
written in the Python programming language to use the interface
supplied by the sanlock library.
%files -n python3-sanlock
%{python3_sitearch}/sanlock_python-*.egg-info
%{python3_sitearch}/sanlock*.so
%package devel
Summary: Development files for %{name}
Requires: %{name}-lib = %{version}-%{release}
@ -126,61 +162,26 @@ developing applications that use %{name}.
%{_libdir}/pkgconfig/libsanlock_client.pc
%changelog
* Tue Nov 26 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 3.9.4-2
- Rebuilt for MSVSphere 10
* Wed Aug 14 2024 David Teigland <teigland@redhat.com> - 3.9.4-2
- fix invalid strcpy in direct dump
* Fri Aug 09 2024 David Teigland <teigland@redhat.com> - 3.9.4-1
- new upstream release, adopt sysusers, drop python bindings
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 3.9.0-3
- Bump release for June 2024 mass rebuild
* Fri Apr 01 2022 David Teigland <teigland@redhat.com> - 3.8.4-4
- fixes for thread/memory leak
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.9.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Mon Aug 23 2021 David Teigland <teigland@redhat.com> - 3.8.4-1
- Update rhel9 beta version to match latest rhel8
* Fri Dec 15 2023 David Teigland <teigland@redhat.com> - 3.9.0-1
- rebase to new upstream release
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 3.8.1-11
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.5-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Mon Jun 28 2021 David Teigland <teigland@redhat.com> - 3.8.1-10
- fuck this process
* Tue Jun 13 2023 Python Maint <python-maint@redhat.com> - 3.8.5-3
- Rebuilt for Python 3.12
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Tue Oct 18 2022 David Teigland <teigland@redhat.com> - 3.8.5-1
- Update to sanlock-3.8.5
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.4-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Mon Jun 13 2022 Python Maint <python-maint@redhat.com> - 3.8.4-5
- Rebuilt for Python 3.11
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 3.8.4-2
- Rebuilt for Python 3.10
* Thu Jun 03 2021 David Teigland <teigland@redhat.com> 3.8.4-1
- New upstream release
* Wed Feb 24 2021 David Teigland <teigland@redhat.com> 3.8.3-1
- New upstream release
- Drop sanlk-reset which is not used.
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 3.8.1-9
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.1-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Sat Aug 08 2020 Nir Soffer <nsoffer@redhat.com> - 3.8.1-7
- Enable LTO
@ -194,7 +195,7 @@ developing applications that use %{name}.
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jul 08 2020 Jeff Law <law@redhat.com> - 3.8.1-3
* Tue Jul 07 2020 Jeff Law <law@redhat.com> - 3.8.1-3
- Disable LTO
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 3.8.1-2

Loading…
Cancel
Save