commit 8ef664d7851a885342cb42d944c57de7d879f95b Author: MSVSphere Packaging Team Date: Wed Mar 15 20:43:37 2023 +0300 import sanlock-3.8.4-4.el9 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..61fde41 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/sanlock-3.8.4.tar.gz diff --git a/.sanlock.metadata b/.sanlock.metadata new file mode 100644 index 0000000..b069991 --- /dev/null +++ b/.sanlock.metadata @@ -0,0 +1 @@ +494d5efc260b643ed9a3ee6bbdb0d31ecb14c201 SOURCES/sanlock-3.8.4.tar.gz diff --git a/SOURCES/0001-sanlock-fix-memory-leak-of-lockspace-renewal_history.patch b/SOURCES/0001-sanlock-fix-memory-leak-of-lockspace-renewal_history.patch new file mode 100644 index 0000000..fffb9e2 --- /dev/null +++ b/SOURCES/0001-sanlock-fix-memory-leak-of-lockspace-renewal_history.patch @@ -0,0 +1,30 @@ +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/SOURCES/0002-sanlock-fix-pthread_create-error-check.patch b/SOURCES/0002-sanlock-fix-pthread_create-error-check.patch new file mode 100644 index 0000000..5809dc7 --- /dev/null +++ b/SOURCES/0002-sanlock-fix-pthread_create-error-check.patch @@ -0,0 +1,51 @@ +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/SOURCES/0003-Revert-sanlock-Shrink-thread-pool-when-there-is-no-w.patch b/SOURCES/0003-Revert-sanlock-Shrink-thread-pool-when-there-is-no-w.patch new file mode 100644 index 0000000..f07cdcf --- /dev/null +++ b/SOURCES/0003-Revert-sanlock-Shrink-thread-pool-when-there-is-no-w.patch @@ -0,0 +1,42 @@ +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/SOURCES/0004-sanlock-fix-pthread_create-error-paths.patch b/SOURCES/0004-sanlock-fix-pthread_create-error-paths.patch new file mode 100644 index 0000000..1b8fcd3 --- /dev/null +++ b/SOURCES/0004-sanlock-fix-pthread_create-error-paths.patch @@ -0,0 +1,63 @@ +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/SPECS/sanlock.spec b/SPECS/sanlock.spec new file mode 100644 index 0000000..8694dd8 --- /dev/null +++ b/SPECS/sanlock.spec @@ -0,0 +1,338 @@ +Name: sanlock +Version: 3.8.4 +Release: 4%{?dist} +Summary: A shared storage lock manager + +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-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. + +%prep +%setup -q +%patch0 -p1 -b .backup0 +%patch1 -p1 -b .backup1 +%patch2 -p1 -b .backup2 +%patch3 -p1 -b .backup3 + +%build +%set_build_flags +# upstream does not require configure +# 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 +make -C src \ + install LIBDIR=%{_libdir} \ + DESTDIR=$RPM_BUILD_ROOT +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/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 + +install -D -m 0644 src/sanlock.conf \ + $RPM_BUILD_ROOT/etc/sanlock/sanlock.conf + +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/%{_localstatedir}/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 +/usr/sbin/usermod -a -G disk sanlock + +%post +%systemd_post wdmd.service sanlock.service + +%preun +%systemd_preun wdmd.service sanlock.service + +%postun +%systemd_postun wdmd.service sanlock.service + +%files +/usr/lib/systemd/systemd-wdmd +%{_unitdir}/sanlock.service +%{_unitdir}/wdmd.service +%{_sbindir}/sanlock +%{_sbindir}/wdmd +%dir %{_sysconfdir}/wdmd.d +%dir %{_sysconfdir}/sanlock +%dir %attr(-,sanlock,sanlock) %{_localstatedir}/run/sanlock +%{_mandir}/man8/wdmd* +%{_mandir}/man8/sanlock* +%config(noreplace) %{_sysconfdir}/logrotate.d/sanlock +%config(noreplace) %{_sysconfdir}/sanlock/sanlock.conf +%config(noreplace) %{_sysconfdir}/sysconfig/wdmd +%doc init.d/sanlock +%doc init.d/sanlock.service +%doc init.d/wdmd.service + +%package lib +Summary: A shared storage lock manager library + +%description lib +The %{name}-lib package contains the runtime libraries for sanlock, +a shared storage lock manager. +Hosts connected to a common SAN can use this to synchronize their +access to the shared disks. + +%ldconfig_scriptlets lib + +%files lib +%{_libdir}/libsanlock.so.* +%{_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} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%files devel +%{_libdir}/libwdmd.so +%{_includedir}/wdmd.h +%{_libdir}/libsanlock.so +%{_libdir}/libsanlock_client.so +%{_includedir}/sanlock.h +%{_includedir}/sanlock_rv.h +%{_includedir}/sanlock_admin.h +%{_includedir}/sanlock_resource.h +%{_includedir}/sanlock_direct.h +%{_libdir}/pkgconfig/libsanlock.pc +%{_libdir}/pkgconfig/libsanlock_client.pc + +%changelog +* Wed Mar 15 2023 MSVSphere Packaging Team - 3.8.4-4 +- Rebuilt for MSVSphere 9.1. + +* Fri Apr 01 2022 David Teigland - 3.8.4-4 +- fixes for thread/memory leak + +* Mon Aug 23 2021 David Teigland - 3.8.4-1 +- Update rhel9 beta version to match latest rhel8 + +* Tue Aug 10 2021 Mohan Boddu - 3.8.1-11 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Mon Jun 28 2021 David Teigland - 3.8.1-10 +- fuck this process + +* Fri Apr 16 2021 Mohan Boddu - 3.8.1-9 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Wed Jan 27 2021 Fedora Release Engineering - 3.8.1-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + + +* Sat Aug 08 2020 Nir Soffer - 3.8.1-7 +- Enable LTO + +* Sun Aug 02 2020 Nir Soffer - 3.8.1-6 +- Removing extra linkeer args, hopefully fix python build + +* Sat Aug 01 2020 Fedora Release Engineering - 3.8.1-5 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 3.8.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 07 2020 Jeff Law - 3.8.1-3 +- Disable LTO + +* Tue May 26 2020 Miro Hrončok - 3.8.1-2 +- Rebuilt for Python 3.9 + +* Sat May 2 2020 Nir Soffer - 3.8.1-1 +- Update to sanlock-3.8.1 + +* Thu Jan 30 2020 Fedora Release Engineering - 3.8.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Aug 19 2019 Miro Hrončok - 3.8.0-3 +- Rebuilt for Python 3.8 + +* Fri Jul 26 2019 Fedora Release Engineering - 3.8.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Jun 12 2019 Nir Soffer - 3.8.0-1 +- Update to sanlock-3.8.0 +- Convert spec to python 3 + +* Tue May 21 2019 Nir Soffer - 3.7.3-1 +- Update to sanlock-3.7.3 +- Add missing BuildRequires and Requires + +* Fri Apr 12 2019 Nir Soffer - 3.7.1-2 +- Cleanup up align and sector constants + +* Mon Apr 8 2019 Nir Soffer - 3.7.1-1 +- Update to sanlock 3.7.1 +- Fix read_resource_owners (414abfe) + +* Wed Mar 20 2019 Nir Soffer - 3.7.0-1 +- remove unneeded with_systemd macro +- update to sanlock 3.7.0 + +* Sat Feb 2 2019 Nir Soffer - 3.6.0-8 +- fix build on Fedora rawhide + +* Thu Jan 24 2019 David Teigland - 3.6.0-7 +- lockfile ownership + +* Sat Jul 14 2018 Fedora Release Engineering - 3.6.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu Apr 12 2018 Iryna Shcherbina - 3.6.0-5 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Wed Mar 14 2018 David Teigland - 3.6.0-4 +- change makefile flags + +* Wed Mar 14 2018 David Teigland - 3.6.0-3 +- rebuild with set_build_flags + +* Fri Feb 09 2018 Fedora Release Engineering - 3.6.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Dec 12 2017 David Teigland - 3.6.0-1 +- Update to sanlock-3.6.0, drop fence_sanlock + +* Sun Aug 20 2017 Zbigniew Jędrzejewski-Szmek - 3.5.0-6 +- Add Provides for the old name without %%_isa + +* Sun Aug 20 2017 Zbigniew Jędrzejewski-Szmek - 3.5.0-5 +- Add Provides for the old name without %%_isa + +* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek - 3.5.0-4 +- Python 2 binary package renamed to python2-sanlock + See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 + +* Thu Aug 03 2017 Fedora Release Engineering - 3.5.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 3.5.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon May 01 2017 David Teigland - 3.5.0-1 +- Update to sanlock-3.5.0 + +* Sat Feb 11 2017 Fedora Release Engineering - 3.4.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Jul 19 2016 Fedora Release Engineering - 3.4.0-2 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Fri Jun 10 2016 David Teigland - 3.4.0-1 +- Update to sanlock-3.4.0 + +* Tue Feb 23 2016 David Teigland - 3.3.0-2 +- remove exclusive arch + +* Mon Feb 22 2016 David Teigland - 3.3.0-1 +- Update to sanlock-3.3.0 + +* Tue Dec 01 2015 David Teigland - 3.2.4-2 +- wdmd: prevent probe while watchdog is used + +* Fri Jun 19 2015 David Teigland - 3.2.4-1 +- Update to sanlock-3.2.4 + +* Fri May 22 2015 David Teigland - 3.2.3-2 +- add pkgconfig files + +* Wed May 20 2015 David Teigland - 3.2.3-1 +- Update to sanlock-3.2.3 + +* Thu Oct 30 2014 David Teigland - 3.2.2-2 +- checksum endian fix + +* Mon Sep 29 2014 David Teigland - 3.2.2-1 +- Update to sanlock-3.2.2 + +* Thu Aug 21 2014 David Teigland - 3.2.1-1 +- Update to sanlock-3.2.1 + +* Mon Aug 18 2014 David Teigland - 3.2.0-1 +- Update to sanlock-3.2.0 + +* Wed Jan 29 2014 David Teigland - 3.1.0-2 +- version interface + +* Tue Jan 07 2014 David Teigland - 3.1.0-1 +- Update to sanlock-3.1.0 + +* Fri Dec 27 2013 Daniel Mach - 3.0.1-3 +- Mass rebuild 2013-12-27 + +* Thu Aug 01 2013 David Teigland - 3.0.1-2 +- use /usr/lib instead of /lib + +* Wed Jul 31 2013 David Teigland - 3.0.1-1 +- Update to sanlock-3.0.1 + +* Wed Jul 24 2013 David Teigland - 3.0.0-1 +- Update to sanlock-3.0.0 +