init.d/sanlock | 31 ++++--
sanlock.spec | 259 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/main.c | 2
3 files changed, 281 insertions(+), 11 deletions(-)
New commits:
commit 9c035920195eb8d63e8d0351c829252058d28a36
Author: Federico Simoncelli <fsimonce(a)redhat.com>
Date: Fri May 25 14:23:28 2012 +0000
build: add a generic rpm spec file
diff --git a/sanlock.spec b/sanlock.spec
new file mode 100644
index 0000000..242a185
--- /dev/null
+++ b/sanlock.spec
@@ -0,0 +1,259 @@
+Name: sanlock
+Version: 2.2
+Release: 2%{?dist}
+Summary: A shared disk lock manager
+
+Group: System Environment/Base
+License: GPLv2 and GPLv2+ and LGPLv2+
+URL:
https://fedorahosted.org/sanlock/
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRequires: libblkid-devel libaio-devel python python-devel
+Requires: %{name}-lib = %{version}-%{release}
+Source0:
https://fedorahosted.org/releases/s/a/sanlock/%{name}-%{version}.tar.gz
+
+%description
+sanlock uses disk paxos to manage leases on shared storage.
+Hosts connected to a common SAN can use this to synchronize their
+access to the shared disks.
+
+%prep
+%setup -q
+
+%build
+# 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
+
+%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
+
+%if 0%{?fedora} >= 16
+install -D -m 0755 init.d/sanlock $RPM_BUILD_ROOT/lib/systemd/systemd-sanlock
+install -D -m 0644 init.d/sanlock.service $RPM_BUILD_ROOT/%{_unitdir}/sanlock.service
+install -D -m 0755 init.d/wdmd $RPM_BUILD_ROOT/lib/systemd/systemd-wdmd
+install -D -m 0644 init.d/wdmd.service $RPM_BUILD_ROOT/%{_unitdir}/wdmd.service
+%else
+install -D -m 755 init.d/sanlock $RPM_BUILD_ROOT/%{_initddir}/sanlock
+install -D -m 755 init.d/wdmd $RPM_BUILD_ROOT/%{_initddir}/wdmd
+%endif
+
+install -Dm 0644 src/logrotate.sanlock \
+ $RPM_BUILD_ROOT/etc/logrotate.d/sanlock
+
+install -Dm 0644 src/sysconfig.sanlock \
+ $RPM_BUILD_ROOT/etc/sysconfig/sanlock
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%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
+
+%post
+if [ $1 -eq 1 ] ; then
+%if 0%{?fedora} >= 16
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+%else
+ /sbin/chkconfig --add sanlock
+ /sbin/chkconfig --add wdmd
+%endif
+fi
+
+%preun
+if [ $1 = 0 ]; then
+%if 0%{?fedora} >= 16
+ /bin/systemctl --no-reload sanlock.service > /dev/null 2>&1 || :
+ /bin/systemctl --no-reload wdmd.service > /dev/null 2>&1 || :
+ /bin/systemctl stop sanlock.service > /dev/null 2>&1 || :
+ /bin/systemctl stop wdmd.service > /dev/null 2>&1 || :
+%else
+ /sbin/service sanlock stop > /dev/null 2>&1
+ /sbin/service wdmd stop > /dev/null 2>&1
+ /sbin/chkconfig --del sanlock
+ /sbin/chkconfig --del wdmd
+%endif
+fi
+
+%postun
+if [ $1 -ge 1 ] ; then
+%if 0%{?fedora} >= 16
+ /bin/systemctl try-restart sanlock.service >/dev/null 2>&1 || :
+ /bin/systemctl try-restart wdmd.service >/dev/null 2>&1 || :
+%else
+ /sbin/service sanlock condrestart >/dev/null 2>&1 || :
+ /sbin/service wdmd condrestart >/dev/null 2>&1 || :
+%endif
+fi
+
+%files
+%defattr(-,root,root,-)
+%if 0%{?fedora} >= 16
+/lib/systemd/systemd-sanlock
+/lib/systemd/systemd-wdmd
+%{_unitdir}/sanlock.service
+%{_unitdir}/wdmd.service
+%else
+%{_initddir}/sanlock
+%{_initddir}/wdmd
+%endif
+%{_sbindir}/sanlock
+%{_sbindir}/wdmd
+%{_mandir}/man8/wdmd*
+%{_mandir}/man8/sanlock*
+%config(noreplace) %{_sysconfdir}/logrotate.d/sanlock
+%config(noreplace) %{_sysconfdir}/sysconfig/sanlock
+
+%package lib
+Summary: A shared disk lock manager library
+Group: System Environment/Libraries
+
+%description lib
+The %{name}-lib package contains the runtime libraries for sanlock,
+a shared disk lock manager.
+Hosts connected to a common SAN can use this to synchronize their
+access to the shared disks.
+
+%post lib -p /sbin/ldconfig
+
+%postun lib -p /sbin/ldconfig
+
+%files lib
+%defattr(-,root,root,-)
+%{_libdir}/libsanlock.so.*
+%{_libdir}/libsanlock_client.so.*
+%{_libdir}/libwdmd.so.*
+
+%package python
+Summary: Python bindings for the sanlock library
+Group: Development/Libraries
+Requires: %{name}-lib = %{version}-%{release}
+
+%description python
+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 python
+%defattr(-,root,root,-)
+%{python_sitearch}/Sanlock-1.0-py*.egg-info
+%{python_sitearch}/sanlock.so
+
+%package devel
+Summary: Development files for %{name}
+Group: Development/Libraries
+Requires: %{name}-lib = %{version}-%{release}
+
+%description devel
+The %{name}-devel package contains libraries and header files for
+developing applications that use %{name}.
+
+%files devel
+%defattr(-,root,root,-)
+%{_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
+
+%changelog
+* Fri May 25 2012 Federico Simoncelli <fsimonce(a)redhat.com> 2.2-2
+- Support multiple platforms in the spec file
+
+* Mon May 07 2012 David Teigland <teigland(a)redhat.com> - 2.2-1
+- Update to sanlock-2.2
+
+* Thu Apr 05 2012 David Teigland <teigland(a)redhat.com> - 2.1-2
+- Install service files instead of init files
+
+* Wed Mar 21 2012 David Teigland <teigland(a)redhat.com> - 2.1-1
+- Update to sanlock-2.1
+
+* Fri Mar 02 2012 David Teigland <teigland(a)redhat.com> - 2.0-1
+- Update to sanlock-2.0
+
+* Tue Sep 20 2011 David Teigland <teigland(a)redhat.com> - 1.8-2
+- fix useradd command in spec file
+
+* Fri Sep 16 2011 Chris Feist <cfeist(a)redhat.com - 1.8-1
+- Update to sanlock-1.8
+
+* Fri Aug 19 2011 Dan HorĂ¡k <dan[at]danny.cz> - 1.6-2
+- build on all arches again
+
+* Sun Aug 07 2011 Chris Feist <cfeist(a)redhat.com> - 1.7-4
+- Fix for minor file include issues
+
+* Fri Aug 05 2011 David Teigland <teigland(a)redhat.com> - 1.7-3
+- fix man page mode
+
+* Fri Aug 05 2011 David Teigland <teigland(a)redhat.com> - 1.7-1
+- Update to sanlock-1.7
+
+* Fri Jul 08 2011 David Teigland <teigland(a)redhat.com> - 1.6-1
+- Update to sanlock-1.6
+
+* Thu Jun 30 2011 David Teigland <teigland(a)redhat.com> - 1.5-1
+- Update to sanlock-1.5
+
+* Tue Jun 21 2011 David Teigland <teigland(a)redhat.com> - 1.4-1
+- Update to sanlock-1.4
+
+* Fri Jun 10 2011 David Teigland <teigland(a)redhat.com> - 1.3-6
+- fix python version, build i686 also
+
+* Thu Jun 09 2011 David Teigland <teigland(a)redhat.com> - 1.3-5
+- build exclusive x86_64, at least for now
+
+* Thu Jun 09 2011 David Teigland <teigland(a)redhat.com> - 1.3-4
+- build only x86_64, at least for now
+
+* Thu Jun 09 2011 David Teigland <teigland(a)redhat.com> - 1.3-3
+- fix libwdmd linking
+
+* Thu Jun 09 2011 David Teigland <teigland(a)redhat.com> - 1.3-2
+- shut up build warnings for wdmd and sanlock
+
+* Thu Jun 09 2011 David Teigland <teigland(a)redhat.com> - 1.3-1
+- Update to sanlock-1.3
+
+* Mon May 09 2011 Chris Feist <cfeist(a)redhat.com> - 1.2.0-3
+- Add python and python-devel to build requires
+
+* Mon May 09 2011 Chris Feist <cfeist(a)redhat.com> - 1.2.0-1
+- Use latest sources
+- Sync .spec file
+
+* Mon Apr 4 2011 Federico Simoncelli <fsimonce(a)redhat.com> - 1.1.0-3
+- Add sanlock_admin.h header
+
+* Fri Feb 18 2011 Chris Feist <cfeist(a)redhat.com> - 1.1.0-2
+- Fixed install for wdmd
+
+* Thu Feb 17 2011 Chris Feist <cfeist(a)redhat.com> - 1.1.0-1
+- Updated to latest sources
+- Now include wdmd
+
+* Tue Feb 8 2011 Angus Salkeld <asalkeld(a)redhat.com> - 1.0-2
+- SPEC: Add docs and make more consistent with the fedora template
+
+* Mon Jan 10 2011 Fabio M. Di Nitto <fdinitto(a)redhat.com> - 1.0-1
+- first cut at rpm packaging
commit 6a89f57bab4f3b771c941c4be21c0159564ffe56
Author: Federico Simoncelli <fsimonce(a)redhat.com>
Date: Fri May 25 14:23:27 2012 +0000
init: add a stop timeout for the sanlock service
Signed-off-by: Federico Simoncelli <fsimonce(a)redhat.com>
diff --git a/init.d/sanlock b/init.d/sanlock
index b2cf012..ae5843b 100644
--- a/init.d/sanlock
+++ b/init.d/sanlock
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
#
# sanlock - SAN-based lock manager
#
@@ -42,28 +42,39 @@ start() {
daemon $prog daemon $SANLOCKOPTS
retval=$?
echo
- [ $retval -eq 0 ]
+
return $retval
}
stop() {
- echo -n $"Stopping $prog: "
+ echo -n $"Sending stop signal $prog: "
killproc -p $lockfile $prog -TERM
retval=$?
echo
- [ $retval -eq 0 ]
-}
-wait_for_stop() {
+ if [ $retval -ne 0 ]; then
+ return $retval
+ fi
+
+ echo -n $"Waiting for $prog to stop:"
+ timeout=10
while [ -e $lockfile ]; do
- sleep .5
+ sleep 1
+ timeout=$((timeout - 1))
+ if [ "$timeout" -le 0 ]; then
+ failure; echo
+ return 1
+ fi
done
+
+ success; echo
+ return $retval
}
restart() {
- stop
- wait_for_stop
- start
+ stop && start
+ retval=$?
+ return $retval
}
reload() {
commit c846501955d94ad4e39b0823246ae76b058b926e
Author: Federico Simoncelli <fsimonce(a)redhat.com>
Date: Fri May 25 14:23:26 2012 +0000
sanlock: fix an rv check typo in setup_groups
Signed-off-by: Federico Simoncelli <fsimonce(a)redhat.com>
diff --git a/src/main.c b/src/main.c
index f8c74af..c513dc4 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1210,7 +1210,7 @@ static void setup_groups(void)
sngroups = ngroups_max;
rv = getgrouplist(com.uname, com.gid, sgroup, &sngroups);
- if (rv < -1) {
+ if (rv < 0) {
log_error("cannot get the user %s groups %i", com.uname, errno);
goto out;
}