diff --git a/.gitignore b/.gitignore index 61fde41..20ac37e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/sanlock-3.8.4.tar.gz +sanlock-4.0.0.tar.gz 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 new file mode 100644 index 0000000..b0dd5d7 --- /dev/null +++ b/0001-sanlock-fix-zero-io-timeout-for-direct-lockspace-req.patch @@ -0,0 +1,25 @@ +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/SOURCES/0001-sanlock-fix-memory-leak-of-lockspace-renewal_history.patch b/SOURCES/0001-sanlock-fix-memory-leak-of-lockspace-renewal_history.patch deleted file mode 100644 index fffb9e2..0000000 --- a/SOURCES/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/SOURCES/0002-sanlock-fix-pthread_create-error-check.patch b/SOURCES/0002-sanlock-fix-pthread_create-error-check.patch deleted file mode 100644 index 5809dc7..0000000 --- a/SOURCES/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/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 deleted file mode 100644 index f07cdcf..0000000 --- a/SOURCES/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/SOURCES/0004-sanlock-fix-pthread_create-error-paths.patch b/SOURCES/0004-sanlock-fix-pthread_create-error-paths.patch deleted file mode 100644 index 1b8fcd3..0000000 --- a/SOURCES/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/SOURCES/0005-wdmd-adjust-values-for-iTCO_wdt.patch b/SOURCES/0005-wdmd-adjust-values-for-iTCO_wdt.patch deleted file mode 100644 index 2e293ab..0000000 --- a/SOURCES/0005-wdmd-adjust-values-for-iTCO_wdt.patch +++ /dev/null @@ -1,308 +0,0 @@ -From acc0021a9490ae4964c08a6839308efa2709f926 Mon Sep 17 00:00:00 2001 -From: David Teigland -Date: Tue, 16 Jan 2024 11:01:01 -0600 -Subject: [PATCH] wdmd: adjust values for iTCO_wdt - -iTCO_wdt does not fire until two successive timeouts, so the -values for set/get need to be adjusted by a factor or 2 to -make the watchdog fire at the correct time. ---- - wdmd/main.c | 162 ++++++++++++++++++++++++++++++++++++++++++++-------- - 1 file changed, 139 insertions(+), 23 deletions(-) - -diff --git a/wdmd/main.c b/wdmd/main.c -index aebacbea1ead..de54e6ddcdf1 100644 ---- a/wdmd/main.c -+++ b/wdmd/main.c -@@ -31,6 +31,7 @@ - #include - #include - #include -+#include - #include - #include - -@@ -55,6 +56,7 @@ - #define DEFAULT_SOCKET_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) - - #define WDPATH_SIZE 64 -+#define WD_ID_SIZE 64 - - static int test_interval = DEFAULT_TEST_INTERVAL; - static int fire_timeout = DEFAULT_FIRE_TIMEOUT; -@@ -68,6 +70,8 @@ static time_t last_closeunclean; - static char lockfile_path[PATH_MAX]; - static int dev_fd = -1; - static int shm_fd; -+static int forcefire; -+static int itco; /* watchdog_identity is "iTCO_wdt" */ - - static int allow_scripts; - static int kill_script_sec; -@@ -75,6 +79,7 @@ static const char *scripts_dir = "/etc/wdmd.d"; - static char watchdog_path[WDPATH_SIZE]; - static char option_path[WDPATH_SIZE]; - static char saved_path[WDPATH_SIZE]; -+static char watchdog_identity[WD_ID_SIZE]; - - struct script_status { - uint64_t start; -@@ -141,6 +146,19 @@ static uint64_t monotime(void) - return ts.tv_sec; - } - -+char time_str_buf[128]; -+ -+static char *time_str(void) -+{ -+ struct timeval cur_time; -+ struct tm time_info; -+ -+ gettimeofday(&cur_time, NULL); -+ localtime_r(&cur_time.tv_sec, &time_info); -+ strftime(time_str_buf, sizeof(time_str_buf), "%Y-%m-%d %H:%M:%S ", &time_info); -+ return time_str_buf; -+} -+ - /* - * test clients - */ -@@ -979,6 +997,49 @@ static void close_watchdog(void) - dev_fd = -1; - } - -+static int setup_identity(char *wdpath) -+{ -+ char sysfs_path[PATH_MAX] = { 0 }; -+ char *base, *p; -+ int fd, rv; -+ -+ /* -+ * This function will be called multiple times when probing -+ * different watchdog paths for one that works. -+ */ -+ itco = 0; -+ memset(watchdog_identity, 0, sizeof(watchdog_identity)); -+ -+ /* -+ * $ cat /sys/class/watchdog/watchdog0/identity -+ * iTCO_wdt -+ */ -+ if (!(base = basename(wdpath))) -+ return -1; -+ -+ snprintf(sysfs_path, PATH_MAX-1, "/sys/class/watchdog/%s/identity", base); -+ -+ if ((fd = open(sysfs_path, O_RDONLY)) < 0) -+ return -1; -+ -+ rv = read(fd, watchdog_identity, WD_ID_SIZE-1); -+ -+ close(fd); -+ -+ if (rv <= 0) -+ return -1; -+ -+ if ((p = strchr(watchdog_identity, '\n'))) -+ *p = '\0'; -+ -+ log_debug("%s %s %s", wdpath, sysfs_path, watchdog_identity); -+ -+ if (!strcmp(watchdog_identity, "iTCO_wdt")) -+ itco = 1; -+ -+ return 0; -+} -+ - static int _setup_watchdog(char *path) - { - struct stat buf; -@@ -991,6 +1052,8 @@ static int _setup_watchdog(char *path) - if (rv < 0) - return -1; - -+ setup_identity(path); /* Sets watchdog_identity and itco */ -+ - rv = open_dev(); - if (rv < 0) - return -1; -@@ -1004,10 +1067,15 @@ static int _setup_watchdog(char *path) - return -1; - } - -- if (timeout == fire_timeout) -- goto out; -- -- timeout = fire_timeout; -+ if (itco) { -+ if ((2 * timeout) == fire_timeout) -+ goto out; -+ timeout = fire_timeout / 2; -+ } else { -+ if (timeout == fire_timeout) -+ goto out; -+ timeout = fire_timeout; -+ } - - rv = ioctl(dev_fd, WDIOC_SETTIMEOUT, &timeout); - if (rv < 0) { -@@ -1016,13 +1084,20 @@ static int _setup_watchdog(char *path) - return -1; - } - -- if (timeout != fire_timeout) { -- log_error("%s failed to set new timeout", watchdog_path); -- close_watchdog(); -- return -1; -+ if (itco) { -+ if ((2 * timeout) != fire_timeout) { -+ log_error("%s failed to set new timeout", watchdog_path); -+ close_watchdog(); -+ return -1; -+ } -+ } else { -+ if (timeout != fire_timeout) { -+ log_error("%s failed to set new timeout", watchdog_path); -+ close_watchdog(); -+ return -1; -+ } - } - out: -- log_error("%s armed with fire_timeout %d", watchdog_path, fire_timeout); - - /* TODO: save watchdog_path in /run/wdmd/saved_path, - * and in startup read that file, copying it to saved_path */ -@@ -1102,6 +1177,8 @@ static int probe_dev(const char *path) - return -1; - } - -+ setup_identity((char *)path); /* Sets watchdog_identity and itco */ -+ - fd = open(path, O_WRONLY | O_CLOEXEC); - if (fd < 0) { - fprintf(stderr, "error %d open %s\n", errno, path); -@@ -1117,14 +1194,22 @@ static int probe_dev(const char *path) - goto out; - } - -- if (timeout == fire_timeout) { -- printf("%s\n", path); -- rv = 0; -- goto out; -+ if (itco) { -+ if ((2 * timeout) == fire_timeout) { -+ printf("%s\n", path); -+ rv = 0; -+ goto out; -+ } -+ timeout = fire_timeout / 2; -+ } else { -+ if (timeout == fire_timeout) { -+ printf("%s\n", path); -+ rv = 0; -+ goto out; -+ } -+ timeout = fire_timeout; - } - -- timeout = fire_timeout; -- - rv = ioctl(fd, WDIOC_SETTIMEOUT, &timeout); - if (rv < 0) { - fprintf(stderr, "error %d ioctl settimeout %s\n", errno, path); -@@ -1132,10 +1217,18 @@ static int probe_dev(const char *path) - goto out; - } - -- if (timeout != fire_timeout) { -- fprintf(stderr, "error %d invalid timeout %s\n", errno, path); -- rv = -1; -- goto out; -+ if (itco) { -+ if ((2 * timeout) != fire_timeout) { -+ fprintf(stderr, "error %d invalid timeout %s\n", errno, path); -+ rv = -1; -+ goto out; -+ } -+ } else { -+ if (timeout != fire_timeout) { -+ fprintf(stderr, "error %d invalid timeout %s\n", errno, path); -+ rv = -1; -+ goto out; -+ } - } - - printf("%s\n", path); -@@ -1518,6 +1611,7 @@ static void print_usage_and_exit(int status) - printf("--dump, -d print debug from daemon\n"); - printf("--probe, -p print path of functional watchdog device\n"); - printf("-D debug: no fork and print all logging to stderr\n"); -+ printf("-F force watchdog reset for testing (use with -D)\n"); - printf("-H 0|1 use high priority features (1 yes, 0 no, default %d)\n", - DEFAULT_HIGH_PRIORITY); - printf("-G group ownership for the socket\n"); -@@ -1556,11 +1650,12 @@ int main(int argc, char *argv[]) - {"help", no_argument, 0, 'h' }, - {"probe", no_argument, 0, 'p' }, - {"dump", no_argument, 0, 'd' }, -+ {"forcefire", no_argument, 0, 'F' }, - {"version", no_argument, 0, 'V' }, - {0, 0, 0, 0 } - }; - -- c = getopt_long(argc, argv, "hpdVDH:G:S:s:k:w:", -+ c = getopt_long(argc, argv, "hpdVDFH:G:S:s:k:w:", - long_options, &option_index); - if (c == -1) - break; -@@ -1581,6 +1676,9 @@ int main(int argc, char *argv[]) - case 'D': - daemon_debug = 1; - break; -+ case 'F': -+ forcefire = 1; -+ break; - case 'G': - socket_gname = strdup(optarg); - break; -@@ -1633,9 +1731,6 @@ int main(int argc, char *argv[]) - - openlog("wdmd", LOG_CONS | LOG_PID, LOG_DAEMON); - -- log_error("wdmd started S%d H%d G%d", allow_scripts, high_priority, -- socket_gid); -- - setup_priority(); - - rv = lockfile(); -@@ -1666,6 +1761,27 @@ int main(int argc, char *argv[]) - if (rv < 0) - goto out_clients; - -+ log_error("wdmd started S%d H%d G%d using %s \"%s\"", allow_scripts, high_priority, -+ socket_gid, watchdog_path, watchdog_identity[0] ? watchdog_identity : "unknown"); -+ log_error("%s armed with fire_timeout %d", watchdog_path, fire_timeout); -+ -+ if (daemon_debug && forcefire) { -+ int sleep_sec = 0; -+ int i; -+ setbuf(stdout, NULL); -+ printf("%s waiting for watchdog to reset machine:\n", time_str()); -+ for (i = 1; i < fire_timeout + 5; i++) { -+ sleep(1); -+ sleep_sec++; -+ if (sleep_sec >= fire_timeout+1) -+ printf("%s %d %s failed to fire after timeout %d seconds\n", time_str(), i, watchdog_path, fire_timeout); -+ else -+ printf("%s %d\n", time_str(), i); -+ } -+ close_watchdog(); -+ return -1; -+ } -+ - rv = test_loop(); - - close_watchdog(); --- -2.43.0 - diff --git a/SPECS/sanlock.spec b/sanlock.spec similarity index 51% rename from SPECS/sanlock.spec rename to sanlock.spec index a825d08..e90a0a0 100644 --- a/SPECS/sanlock.spec +++ b/sanlock.spec @@ -1,54 +1,37 @@ Name: sanlock -Version: 3.8.4 -Release: 5%{?dist} +Version: 4.0.0 +Release: 1%{?dist} Summary: A shared storage lock manager - -Group: System Environment/Base -License: GPLv2 and GPLv2+ and LGPLv2+ +License: GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.0-or-later 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 -Patch1: 0001-sanlock-fix-memory-leak-of-lockspace-renewal_history.patch -Patch2: 0002-sanlock-fix-pthread_create-error-check.patch -Patch3: 0003-Revert-sanlock-Shrink-thread-pool-when-there-is-no-w.patch -Patch4: 0004-sanlock-fix-pthread_create-error-paths.patch -Patch5: 0005-wdmd-adjust-values-for-iTCO_wdt.patch - -%global python_package python3-%{name} +Patch0: 0001-sanlock-fix-zero-io-timeout-for-direct-lockspace-req.patch %description The sanlock daemon manages leases for applications on hosts using shared storage. %prep %setup -q -%patch1 -p1 -b .backup1 -%patch2 -p1 -b .backup2 -%patch3 -p1 -b .backup3 -%patch4 -p1 -b .backup4 -%patch5 -p1 -b .backup5 +%patch0 -p1 -b .backup0 %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.6 -CFLAGS=$RPM_OPT_FLAGS make -C reset %install rm -rf $RPM_BUILD_ROOT @@ -58,19 +41,12 @@ 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.6 -make -C reset \ - install LIBDIR=%{_libdir} \ - DESTDIR=$RPM_BUILD_ROOT - 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 init.d/sanlk-resetd.service $RPM_BUILD_ROOT/%{_unitdir}/sanlk-resetd.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 src/logrotate.sanlock \ $RPM_BUILD_ROOT/etc/logrotate.d/sanlock @@ -82,10 +58,11 @@ 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/%{_rundir}/sanlock -install -Dd -m 0775 $RPM_BUILD_ROOT/%{_rundir}/sanlk-resetd %pre +# As libvirt does, install a sysusers file, but also directly +# create the user and group to avoid rpm installation errors +# (sysusers rpm macros seem to be insufficient to avoid problems.) getent group sanlock > /dev/null || /usr/sbin/groupadd \ -g 179 sanlock getent passwd sanlock > /dev/null || /usr/sbin/useradd \ @@ -110,19 +87,15 @@ getent passwd sanlock > /dev/null || /usr/sbin/useradd \ %{_sbindir}/wdmd %dir %{_sysconfdir}/wdmd.d %dir %{_sysconfdir}/sanlock -%dir %attr(-,sanlock,sanlock) %{_rundir}/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 +%{_sysusersdir}/sanlock.conf %package lib Summary: A shared storage lock manager library -Group: System Environment/Libraries %description lib The %{name}-lib package contains the runtime libraries for sanlock, @@ -137,23 +110,8 @@ access to the shared disks. %{_libdir}/libsanlock_client.so.* %{_libdir}/libwdmd.so.* -%package -n %{python_package} -Summary: Python bindings for the sanlock library -Group: Development/Libraries -Requires: %{name}-lib = %{version}-%{release} - -%description -n %{python_package} -The %{python_package} package contains a module that permits applications -written in the Python programming language to use the interface -supplied by the sanlock library. - -%files -n %{python_package} -%{python3_sitearch}/sanlock_python-*.egg-info -%{python3_sitearch}/sanlock*.so - %package devel Summary: Development files for %{name} -Group: Development/Libraries Requires: %{name}-lib = %{version}-%{release} %description devel @@ -173,65 +131,146 @@ developing applications that use %{name}. %{_libdir}/pkgconfig/libsanlock.pc %{_libdir}/pkgconfig/libsanlock_client.pc -%package -n sanlk-reset -Summary: Host reset daemon and client using sanlock -Group: System Environment/Base -Requires: sanlock = %{version}-%{release} -Requires: sanlock-lib = %{version}-%{release} - -%description -n sanlk-reset -The sanlk-reset package contains the reset daemon and client. -A cooperating host running the daemon can be reset by a host -running the client, so long as both maintain access to a -common sanlock lockspace. - -%files -n sanlk-reset -%{_sbindir}/sanlk-reset -%{_sbindir}/sanlk-resetd -%{_unitdir}/sanlk-resetd.service -%dir %attr(-,root,root) %{_rundir}/sanlk-resetd -%{_mandir}/man8/sanlk-reset* - - %changelog -* Tue Jan 30 2024 David Teigland - 3.8.4-5 -- adjust wdmd values for iTCO_wdt watchdog driver +* Wed Apr 30 2025 David Teigland - 4.0.0-1 +- new upstream release -* Wed Jul 06 2022 David Teigland - 3.8.4-4 -- rebuild with larger release number +* Wed Jan 08 2025 David Teigland - 3.9.5-4 +- restore useradd and groupadd in place of sysusers rpm macros -* Fri Mar 18 2022 David Teigland - 3.8.4-2 -- Resolves: rhbz#2058438 +* Tue Oct 29 2024 Troy Dawson - 3.9.5-3 +- Bump release for October 2024 mass rebuild: + Resolves: RHEL-64018 -* Tue Jun 01 2021 David Teigland 3.8.4-1 -- Update to sanlock-3.8.4 +* Wed Oct 23 2024 David Teigland - 3.9.5-2 +- new nodelay flag for add_lockspace -* Thu May 20 2021 David Teigland 3.8.3-2 -- Fix connection close and add python inquire api +* Tue Oct 22 2024 David Teigland - 3.9.5-1 +- new upstream release -* Tue Jan 19 2021 David Teigland 3.8.3-1 -- Update to sanlock-3.8.3 +* Thu Oct 03 2024 David Teigland - 3.9.4-3 +- fix install of sanlock.sysusers -* Mon Aug 10 2020 David Teigland 3.8.2-1 -- Update to sanlock-3.8.2 +* Wed Aug 14 2024 David Teigland - 3.9.4-2 +- fix invalid strcpy in direct dump -* Thu Jul 09 2020 David Teigland 3.8.1-1 +* Fri Aug 09 2024 David Teigland - 3.9.4-1 +- new upstream release, adopt sysusers, drop python bindings + +* Mon Jun 24 2024 Troy Dawson - 3.9.0-3 +- Bump release for June 2024 mass rebuild + +* Sat Jan 27 2024 Fedora Release Engineering - 3.9.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Dec 15 2023 David Teigland - 3.9.0-1 +- rebase to new upstream release + +* Sat Jul 22 2023 Fedora Release Engineering - 3.8.5-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jun 13 2023 Python Maint - 3.8.5-3 +- Rebuilt for Python 3.12 + +* Sat Jan 21 2023 Fedora Release Engineering - 3.8.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Oct 18 2022 David Teigland - 3.8.5-1 +- Update to sanlock-3.8.5 + +* Sat Jul 23 2022 Fedora Release Engineering - 3.8.4-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Jun 13 2022 Python Maint - 3.8.4-5 +- Rebuilt for Python 3.11 + +* Sat Jan 22 2022 Fedora Release Engineering - 3.8.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 3.8.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Jun 04 2021 Python Maint - 3.8.4-2 +- Rebuilt for Python 3.10 + +* Thu Jun 03 2021 David Teigland 3.8.4-1 +- New upstream release + +* Wed Feb 24 2021 David Teigland 3.8.3-1 +- New upstream release +- Drop sanlk-reset which is not used. + +* 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 08 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 -* Wed Jun 12 2019 Nir Soffer 3.8.0-2 -- kick the gating tests to run +* Thu Jan 30 2020 Fedora Release Engineering - 3.8.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild -* Wed Jun 12 2019 Nir Soffer 3.8.0-1 -- Cleanup spec and convert to python3 +* Mon Aug 19 2019 Miro Hrončok - 3.8.0-3 +- Rebuilt for Python 3.8 -* Thu Dec 06 2018 David Teigland - 3.6.0-5 -- Fix selinux lockfile error +* Fri Jul 26 2019 Fedora Release Engineering - 3.8.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild -* Thu Oct 04 2018 David Teigland - 3.6.0-4 -- makefile gcc flags +* Wed Jun 12 2019 Nir Soffer - 3.8.0-1 +- Update to sanlock-3.8.0 +- Convert spec to python 3 -* Tue Jun 12 2018 Charalampos Stratakis - 3.6.0-3 -- Conditionalize the python2 subpackage +* 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 diff --git a/sources b/sources new file mode 100644 index 0000000..7ac36dd --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (sanlock-4.0.0.tar.gz) = a478c8bbc09043d5dad18cc3ddbcaeefec0dd5587ab2807721424a1efc9d58ab82deacaa2f88289dc9990a2a6f95a80dabb727670e7aeaeba5ed0a57a3849c27