2 commits - sanlock.spec src/main.c wdmd/main.c
by David Teigland
sanlock.spec | 8 ++++++--
src/main.c | 2 +-
wdmd/main.c | 2 +-
3 files changed, 8 insertions(+), 4 deletions(-)
New commits:
commit b3bc7930d7a399d73dd5cb5c4812377faceae87e
Author: David Teigland <teigland(a)redhat.com>
Date: Wed May 30 09:41:00 2012 -0500
latest spec file
Signed-off-by: David Teigland <teigland(a)redhat.com>
diff --git a/sanlock.spec b/sanlock.spec
index 242a185..732472a 100644
--- a/sanlock.spec
+++ b/sanlock.spec
@@ -1,12 +1,13 @@
Name: sanlock
-Version: 2.2
-Release: 2%{?dist}
+Version: 2.3
+Release: 1%{?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)
+ExclusiveArch: x86_64
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
@@ -175,6 +176,9 @@ developing applications that use %{name}.
%{_includedir}/sanlock_direct.h
%changelog
+* Wed May 30 2012 David Teigland <teigland(a)redhat.com> - 2.3
+- Update to sanlock-2.3
+
* Fri May 25 2012 Federico Simoncelli <fsimonce(a)redhat.com> 2.2-2
- Support multiple platforms in the spec file
commit acd0d65a072c281de621e5c6dcc92b0e355f3232
Author: David Teigland <teigland(a)redhat.com>
Date: Wed May 30 09:05:18 2012 -0500
release 2.3
Signed-off-by: David Teigland <teigland(a)redhat.com>
diff --git a/src/main.c b/src/main.c
index c513dc4..abc35fd 100644
--- a/src/main.c
+++ b/src/main.c
@@ -50,7 +50,7 @@
#include "client_cmd.h"
#include "cmd.h"
-#define RELEASE_VERSION "2.2"
+#define RELEASE_VERSION "2.3"
struct thread_pool {
int num_workers;
diff --git a/wdmd/main.c b/wdmd/main.c
index bd95f9d..6b6b411 100644
--- a/wdmd/main.c
+++ b/wdmd/main.c
@@ -41,7 +41,7 @@
#define GNUC_UNUSED __attribute__((__unused__))
#endif
-#define RELEASE_VERSION "2.2"
+#define RELEASE_VERSION "2.3"
#define DEFAULT_TEST_INTERVAL 10
#define DEFAULT_FIRE_TIMEOUT 60
11 years
Changes to 'refs/tags/sanlock-2.3'
by David Teigland
Changes since the dawn of time:
Daniel P. Berrange (15):
Fix const-ness of many APIs.
Fix warnings in watchdog module
Fix function prototypes for no-arg methods
Remove use of 'index' as a variable name
Make many functions static
Fix missing include in logging file
Annotate many unused parameters to avoid warnings
Remove redundant redeclaration of 'to' variable
Fix args to execv()
Remove redundant arg to 'run_command'
Rename optarg to optionarg to avoid clashing with getopt.h
Disable the read_request method since it is unused
Add many more compiler warning flags & safety checks
Hard code a sector size of 512 if the lease volume is a regular file
Ensure libsanlock.so is built with debug/warning flags
David Teigland (340):
sync_manager: initial commit
sync_manager: misc updates
sync_manager: misc updates
sync_manager: misc updates
sync_manager: misc updates
sync_manager: add more logging
sync_manager: misc updates
sync_manager: misc updates
sync_manager: num_hosts/MAX_HOSTS stuff
daemon: reworking notions of resource_id/token_name
sync_manager: resource lockfiles
sync_manager: lease arg processing
sync_manager: Began multiple lease support
sync_manager: use first command line arg as action
sync_manager: leader record changes and verify
sync_manager: clean up released leases
sync_manager: move functions around
sync_manager: add more tool actions
sync_manager: naming changes
sync_manager: separate token index and id
sync_manager: fix index usage and other misc
sync_manager: use pthread cond in acquire
sync_manager: write all log entries
sync_manager: simplify polling
sync_manager: fix waitpid use
sync_manager: acquire can fail early
sync_manager: write log entries at exit
sync_manager: add test program
sync_manager: move secondary pid check
sync_manager: fix disk paxos contention
devcount: fix verify checks
sync_manager: add GPL license file
sync_manager: fix leader block offsets
sync_manager: increase COMMAND_MAX
sync_manager: renewal should verify
sync_manager: use sector size from libblkid
sync_manager: use a real checksum function
sync_manager: add libblkid to spec file
sync_manager: print status info
sync_manager: one watchdog file per lease
sync_manager: lease_threads handle watchdog files
sync_manager: fix/add some text/comments
sync_manager: refactor read/write
sync_manager: move disk io functions
sync_manager: remove token arg
sync_manager: rename paxos_disk sync_disk
sync_manager: add aio read/write
sync_manager: make io_timeout_seconds a diskio arg
sync_manager: forgot to add new files
sync_manager: use log thread
sync_manager: client connections
sync_manager: connection processing
sync_manager: send/recv pid
sync_manager: add write_sectors
sync_manager: restructuring
sync_manager: write_sectors code factoring
sync_manager: daemonize
sync_manager: releasing leases
sync_manager: async releasing
sync_manager: release fixes
sync_manager: add direct and indirect acquire/release
sync_manager: reacquire resources
sync_manager: move code
sync_manager: same pid may reacquire resource
sync_manager: lease migration
sync_manager: handle client errors
sync_manager: improve error handling
sync_manager: host_id leases
sync_manager: remove empty files
sync_manager: print initialization info
sync_manager: rename files
sync_manager: clean up header org
sync_manager: delta_lease implementation
sync_manager: accept offset units
sync_manager: fix up init output
sync_manager: put back watchdog calls
sync_manager: fix start_host_id error paths
sync_manager: add log_error's for watchdog file errors
sync_manager: actual timeouts
sync_manager: change timeouts on cmd line
sanlock: create new external api
sanlock: build libsanlock
sanlock: use MAX_LEASES everywhere
sanlock: add libvirt plugin
sanlock plugin: couple minor fixes
sanlock: clean up /var file names
sanlock plugin: fix symbol needed by libvirt
sanlock: add some debug output
sanlock plugin: fix uuid copy
sanlock plugin: fix names
sanlock: add "owner_name"
sanlock: fix renewal checks
sanlock: clean up host_id types
sanlock: set_host_id command
sanlock: fix killing pids
sanlock: add status command
sanlock: set version to 1.0
sanlock: delta_lease cleanup
sanlock: changing num_hosts
sanlock: add dump command
sanlock: renewal timings
sanlock: add direct option
sanlock: check for watchdog file
sanlock: recovery fixes
lock_driver_sanlock: fix compile problems
sanlock: improve command options
sanlock: tidying help text
sanlock: move binary to /usr/sbin
sanlock: add init script
sanlock: fix sigterm shutdown
sanlock: init stop
sanlock: add wdtest command
sanlock.spec: new url
lock_driver_sanlock: remove close
sanlock: introduce lockspaces
lock_driver_sanlock: remove files
sanlock: better logging functions
sanlock: misc log message
sanlock.spec: sbin not libexec
sanlock init: remove watchdog reference
wdmd: watchdog multiplexing daemon
sanlock: add code to use wdmd
sanlock/wdmd: use wdmd in sanlock
sanlock/wdmd: add copyright header to source files
sanlock: rename sanlock source dir
sanlock: move tests dir
move COPYING file
wdmd: use signalfd for signal handling
Fix Makefile comments
wdmd: fix daemon debug option
wdmd: add init script
sanlock.spec: updates
sanlock.spec: src dir
sanlock: build with uninstalled libwdmd
sanlock: version 1.1
sanlock: high priority options
wdmd: high priority options
sanlock: return migration state
sanlock: migration.txt describes libvirt/sanlock steps
libsanlock: include admin functions
sanlock: fix host_id expiration check
sanlock: migration working
devcount: migrate test
sanlock: setowner improvements
sanlock: migrate to target fix
sanlock: fix wdmd stop order
sanlock: various fixes
sanlock: remove wdtest
sanlock: remove migration
sanlock: clean up command return data
sanlock: add resource string conversion functions
sanlock: rework internal structs
devcount: add relock test
sanlock: fix release and inquire
sanlock: add_lockspace EEXIST
sanlock: rework client handling
sanlock: clean up warnings
sanlock: debug message changes
sanlock: add lockspace checks
wdmd: enable test scripts
sanlock: add str_to_lockspace to lib
WIP devcount migrate
devcount: new migrate test
sanlock: read_id and live_id commands
sanlock: check lockspace name and host_id
sanlock: remove remaining cluster_mode
sanlock: add libsanlock_direct
devcountn: start multiple devcount tests
devcount: small changes
sanlock: new return values
sanlock: misc changes and fix
sanlock: log error of full bad block
sanlock: interval between renewal checks
sanlock: renewal changes
sanlock: fix log_dump
sanlock: fix find_client_pid
sanlock: fix host_id reads from paxos_acquire
sanlock: init with one write
devcount: improve output
devcount: new pause/resume
devcount: add expire test
sanlock: correct paxos usage
sanlock: direct read_leader
sanlock: paxos delays
sanlock: use thread pool
sanlock: client status output format changes
sanlock: fix inquire of dead pid
sanlock: use native linux aio
sanlock: i/o changes
sanlock: aio changes
sanlock: reduce paxos acquire read ops
sanlock: quiet error case
sanlock: don't free aio buf until event completes
sanlock: io timeout related changes
sanlock: read dblocks in single aligned io
sanlock: add sanlock_restrict api
sanlock: add sanlock_direct_sector_size api
sanlock: add checksum to dblocks
sanlock: fix init restart
sanlock: don't release tokens in dead lockspace
sanlock: fix adding lockspace
sanlock: official 1MB/8MB alignment
devcount: use aio in init
libsanlock: link with LDFLAGS
sanlock: increase version to 1.3
sanlock/wdmd: shut up warnings
sanlock: fix libwdmd linking
remove spec file
sanlock: use a completed read after renewal timeout
sanlock: use unique host name in delta leases
sanlock: remove sector_size api
sanlock: abort delta wait on shutdown
sanlock: fix add_lockspace failure
sanlk_load: add new test
sanlock: fix recv and inquire
sanlock: initial pid_dead check in acquire
sanlock: release 1.4
sanlock: generate a uuid for host id
sanlock: return -EINPROGRESS from add_lockspace
sanlk_load: periodically kill and replace a pid
sanlock: zero num_hosts uses DEFAULT_MAX_HOSTS
tests: misc changes
sanlock: break paxos_acquire wait loop
sanlock: increase log line to 512 bytes
sanlock: change a log_error to log_debug
sanlock: fail host_id when corrupted
sanlock: release 1.5
sanlock: release 1.6
sanlock: handle colon escaping in path strings
wdmd: add option for high priority
wdmd: use accept4 with SOCK_NONBLOCK
wdmd: tidy sun_addr snprintf
wdmd: pid and sock file changes
wdmd: add man page
wdmd: disable test scripts
sanlock: use accept4 with SOCK_NONBLOCK
sanlock: tidy sun_addr snprintf
sanlock: add explicit -luuid
sanlock: pid and sock file changes
sanlock: add man page
sanlock/wdmd: improve mkdir of run dir
wdmd: new build flags
sanlock: new build flags
sanlock/wdmd: use monotonic time
sanlock: build with pie
sanlock/wdmd: nonblocking listening/accept
sanlock: add missing monotime files
sanlock: update man page
sanlock: man page update
sanlock: update man page and help text
sanlock: print connections limit
release: sanlock 1.7
makefile: install mode for man pages
sanlock: read align_size in renewal
sanlock: check other host_id leases
sanlock: minor fixes and cleanups
sanlock: add request api/cmd
sanlock: crc code tidying
sanlock/wdmd: add license header to files
sanlock: create libsanlock_client
sanlock: move client code
remove COPYING file
sanlock: remove internal header from sanlock_sock
libsanlock_client: use LGPLv2+
libwdmd: use LGPLv2+
sanlock_rv.h: switch to LGPLv2+
README.license: document licenses
sanlock: client align and init
sanlock: write request record
sanlock: request struct magic and version numbers
sanlock: set bitmap for requests
sanlock: examine resource requests
sanlock: update man page
sanlock: remove old comment
sanlock: renaming functions
sanlock: optimize paxos wait
sanlock: use flags in struct resource
sanlock: restructure lockspace checks
sanlock: remove BLOCK_WD force mode
libsanlock: fix function stubs
sanlock: new status and host_status
sanlock: improve status output
sanlock: status output sorting
sanlock: SIGTERM and SIGKILL for REQ_KILL_PID
sanlock: add flag RESTRICT_SIGKILL
sanlock: setup fewer aio events
sanlock: move cmd processing
sanlock: suppress log messages
sanlock: rename source files
sanlock: improve killing pids
sanlock: fix log_dump
version 1.8
sanlock: quick host_id reacquire
sanlock: add force option to shutdown command
simpler copyright line
default to GPLv2+ for our original files
sanlock: improve daemon permission errors
add systemd files
fixing up init stuff
release 1.9
sanlock: setmode
Revert "sanlock: setmode"
sanlock: fix error exit
sanlock: fix debug line
init scripts: fix path to restorecon
sanlock: shared mode for leases
sanlock: fix missing close_disks
sanlock: fix problem in paxos
sanlock: add paxos sanity check
sanlock: fix leaking fd
sanlock: change to paxos algorithm
sanlock: change ondisk version
sanlock: remove log noise
sanlock: ignore SIGTERM if lockspaces exist
sanlock: quiet more error messages
sanlk_load: munging variable names
sanlk_load: add shared locks
sanlock: kill client connection on recv error
sanlk_load: ignore release errors
sanlock: set sector_size in shared tokens
sanlock man page: mention SH
release 2.0
sanlock: clean up warnings
sanlock: fix inquire state string
sanlock: retry transient sh failures
sanlock: status for all shared tokens
sanlock: add a logrotate file
release 2.1
python: fix path strncpy
sanlock: remove physical sector size requirement
sanlock: add sample sysconfig file
sanlock: ASYNC flag for lockspace add and rem
sanlock: UNUSED flag for lockspace rem
release 2.2
sanlock.log: empty file to install from rpm
Revert "sanlock.log: empty file to install from rpm"
sanlock: remove limits.conf
sysconfig: remove user option
init: root user
release 2.3
David Weber (2):
Fix order of linking
Install another symlink to shared library
Fabio M. Di Nitto (5):
build: sanlock should link with libsanlock
build: install shared lib header files and fix DESTDIR usage
build: drop rpm target
spec file: do first cut for total spec file
build: fix linking with libsanlock and install target
Federico Simoncelli (49):
rpm: sync specfile with fedora
rpm: add sanlock_admin.h header
rpm: add the lib package, install the initscripts
python: remove unused python code
python: add python binding
python: release the gil during sanlock operations
python: wrap sanlock extension with a module
rpm: add python binding package
python: pass a lockspace copy to str_to_lockspace
makefile: fix install typo
rpm: add sanlock_direct header
python: add sanlock init functions and exception
direct: close disks after initialization
python: register process only once
daemon: configurable socket permissions
rpm: add sanlock user and group
python: exceptions must contain the errno
rpm: add missing libaio-devel dependency
rpm: add daemon options in the init file
python: add missing aio library
python: add get_alignment function
libs: include libsanlock_direct into libsanlock
python: align num_hosts and max_hosts defaults
python: expose sanlock file descriptor
python: improve error reporting
python: parse lockspaces and resources natively
python: add usage example
python: initial support for sanlock errors
python: document the sanlock module
python: module cleanup
build: fix documentation install path
client: return appropriate errno on failure
python: expose errno in the exception
python: acquire leases for other processes
sanlock: implement the inq_lockspace command
python: add the inq_lockspace command binding
misc: run sanlock daemon as sanlock user
wdmd: use getopt to parse the command line
wdmd: make socket group ownership configurable
python: add shared resource parameter to acquire
python: release leases for other processes
python: ASYNC flag for lockspace add and rem
python: UNUSED flag for lockspace rem
log: add full time and date to the log messages
sanlock: set the supplementary groups at startup
log: add the thread id in the log messages
sanlock: fix an rv check typo in setup_groups
init: add a stop timeout for the sanlock service
build: add a generic rpm spec file
Saggi Mizrahi (21):
Added the begining of the testing and debugging tools
Better handling of max hosts
sync_manager: Updated tests to work with new lease struct
sync_manager: fixed skipping first arg in command
sync_manager: acquire and release actions
sync_manager: minor fixes
sync_manager: renamed stuff
sync_manager: made acquire synchronous again
sync_manager: added set_host_id action
sync_manager: use kill(0) for secondary pid check
sync_manager: make rpm and install
sync_manager: spec file update
sync_manager: Allow longer resource names
sync_manager: allow repeated set_host_id
sync_manager: Added escaping for the leases arg
sync_manager: Created the python bindings for sync_manager
sync_manager: listener socket permissions
sync_manager: Updated python binding and tests
sync_manager: Made 'token' a const in log_level
sync_manager: refactor messaging system
sync_manager: use getsockopt PEERCRED
11 years
3 commits - init.d/sanlock sanlock.spec src/main.c
by David Teigland
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;
}
11 years
[PATCH 1/3] sanlock: fix an rv check typo in setup_groups
by Federico Simoncelli
Signed-off-by: Federico Simoncelli <fsimonce(a)redhat.com>
---
src/main.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
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;
}
--
1.7.1
11 years
Changes to 'helper'
by David Teigland
New branch 'helper' available with the following commits:
commit 0095bdd9d9d5bf97767e38f1641c884c409c5288
Author: David Teigland <teigland(a)redhat.com>
Date: Thu May 24 11:07:17 2012 -0500
daemon: helper process for killing pids
Create a helper process that can kill pids.
Signed-off-by: David Teigland <teigland(a)redhat.com>
11 years
src/log.c
by David Teigland
src/log.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
New commits:
commit 4ee0b253e6b5ccba730def74e3864f528678a663
Author: Federico Simoncelli <fsimonce(a)redhat.com>
Date: Wed May 23 13:27:24 2012 +0000
log: add the thread id in the log messages
Signed-off-by: Federico Simoncelli <fsimonce(a)redhat.com>
diff --git a/src/log.c b/src/log.c
index 614a855..fc516bc 100644
--- a/src/log.c
+++ b/src/log.c
@@ -21,6 +21,8 @@
#include <pthread.h>
#include <sys/socket.h>
#include <sys/time.h>
+#include <sys/syscall.h>
+#include <sys/types.h>
#include <stdarg.h>
#include "sanlock_internal.h"
@@ -120,6 +122,7 @@ void log_level(uint32_t space_id, uint32_t token_id, char *name_in, int level, c
int len = LOG_STR_LEN - 2; /* leave room for \n\0 */
struct timeval cur_time;
struct tm time_info;
+ pid_t tid;
memset(name, 0, sizeof(name));
@@ -137,11 +140,13 @@ void log_level(uint32_t space_id, uint32_t token_id, char *name_in, int level, c
gettimeofday(&cur_time, NULL);
localtime_r(&cur_time.tv_sec, &time_info);
ret = strftime(log_str + pos, len - pos,
- "%Y-%m-%d %H:%M:%S%z: ", &time_info);
+ "%Y-%m-%d %H:%M:%S%z ", &time_info);
pos += ret;
- ret = snprintf(log_str + pos, len - pos, "%llu %s",
- (unsigned long long)monotime(), name);
+ tid = syscall(SYS_gettid);
+
+ ret = snprintf(log_str + pos, len - pos, "%llu [%u]: %s",
+ (unsigned long long) monotime(), tid, name);
pos += ret;
va_start(ap, fmt);
11 years
5 commits - init.d/sanlock src/limits.conf src/main.c src/sanlock.log src/sanlock_internal.h src/sysconfig.sanlock
by David Teigland
init.d/sanlock | 4 +-
src/limits.conf | 2 -
src/main.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++
src/sanlock_internal.h | 2 +
src/sysconfig.sanlock | 5 ---
5 files changed, 71 insertions(+), 9 deletions(-)
New commits:
commit ae2b4f95c06e91ee6958e3f48a37c74bd6b7cc41
Author: David Teigland <teigland(a)redhat.com>
Date: Thu May 24 10:00:43 2012 -0500
init: root user
Don't need sanlock:sanlock owner for run dir.
Signed-off-by: David Teigland <teigland(a)redhat.com>
diff --git a/init.d/sanlock b/init.d/sanlock
index 5f049a6..b2cf012 100644
--- a/init.d/sanlock
+++ b/init.d/sanlock
@@ -34,7 +34,7 @@ start() {
[ -x $exec ] || exit 5
if [ ! -d /var/run/$prog ]; then
- install -d -o $SANLOCKUSER -g $SANLOCKUSER -m 775 /var/run/$prog
+ install -d -m 775 /var/run/$prog
[ -x /sbin/restorecon ] && restorecon /var/run/$prog
fi
commit 19362c0e16174d074e7ace48331ba4e2e184475c
Author: David Teigland <teigland(a)redhat.com>
Date: Thu May 24 09:59:43 2012 -0500
sysconfig: remove user option
sanlock will always run as root.
Signed-off-by: David Teigland <teigland(a)redhat.com>
diff --git a/src/sysconfig.sanlock b/src/sysconfig.sanlock
index 1c14d4f..89b6fa3 100644
--- a/src/sysconfig.sanlock
+++ b/src/sysconfig.sanlock
@@ -1,8 +1,3 @@
-# SANLOCKUSER -- the daemon should run as this user
-#
-# To run as root user instead of sanlock user
-#SANLOCKUSER="root"
-
# SANLOCKOPTS -- set the command line options for the sanlock daemon
# See sanlock man page for full list of command line options.
#
commit b8137b97ee3e55d64a9f279bf1b4836b6ba2f619
Author: David Teigland <teigland(a)redhat.com>
Date: Thu May 24 09:58:26 2012 -0500
sanlock: remove limits.conf
Not needed since we're back to running as root.
Signed-off-by: David Teigland <teigland(a)redhat.com>
diff --git a/src/limits.conf b/src/limits.conf
deleted file mode 100644
index f6fcedf..0000000
--- a/src/limits.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-sanlock - memlock -1
-sanlock - rtprio -1
commit f4f9cddcef656e51055267905382d74f3b2c84c7
Author: David Teigland <teigland(a)redhat.com>
Date: Thu May 24 09:57:39 2012 -0500
Revert "sanlock.log: empty file to install from rpm"
Not needed since we're back to running as root.
This reverts commit 1fe89953ba73f61c63e8d555ec7f69f0345bd4a1.
diff --git a/src/sanlock.log b/src/sanlock.log
deleted file mode 100644
index e69de29..0000000
commit defe1cadea058dcd4b186ec7f3bef8ff9aa94692
Author: Federico Simoncelli <fsimonce(a)redhat.com>
Date: Thu May 24 13:38:52 2012 +0000
sanlock: set the supplementary groups at startup
This is mostly required to access leases that resides on NFS exports
with the root_squash option enabled. The sanlock process will acquire
all the supplementary groups of the sanlock user.
Signed-off-by: Federico Simoncelli <fsimonce(a)redhat.com>
diff --git a/init.d/sanlock b/init.d/sanlock
index 7004f1f..5f049a6 100644
--- a/init.d/sanlock
+++ b/init.d/sanlock
@@ -39,7 +39,7 @@ start() {
fi
echo -n $"Starting $prog: "
- daemon --user=$SANLOCKUSER $prog daemon $SANLOCKOPTS
+ daemon $prog daemon $SANLOCKOPTS
retval=$?
echo
[ $retval -eq 0 ]
diff --git a/src/main.c b/src/main.c
index 82c39af..f8c74af 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1182,6 +1182,69 @@ static void setup_host_name(void)
uuid, name.nodename);
}
+static void setup_groups(void)
+{
+ int rv, i, j, h;
+ int pngroups, sngroups, ngroups_max;
+ gid_t *pgroup, *sgroup;
+
+ ngroups_max = sysconf(_SC_NGROUPS_MAX);
+ if (ngroups_max < 0) {
+ log_error("cannot get the max number of groups %i", errno);
+ return;
+ }
+
+ pgroup = malloc(ngroups_max * 2 * sizeof(gid_t));
+ if (!pgroup) {
+ log_error("cannot malloc the group list %i", errno);
+ exit(EXIT_FAILURE);
+ }
+
+ pngroups = getgroups(ngroups_max, pgroup);
+ if (pngroups < 0) {
+ log_error("cannot get the process groups %i", errno);
+ goto out;
+ }
+
+ sgroup = pgroup + ngroups_max;
+ sngroups = ngroups_max;
+
+ rv = getgrouplist(com.uname, com.gid, sgroup, &sngroups);
+ if (rv < -1) {
+ log_error("cannot get the user %s groups %i", com.uname, errno);
+ goto out;
+ }
+
+ for (i = 0, j = pngroups; i < sngroups; i++) {
+ if (j >= ngroups_max) {
+ log_error("too many groups for the user %s", com.uname);
+ break;
+ }
+
+ /* check if the groups is already present in the list */
+ for (h = 0; h < j; h++) {
+ if (pgroup[h] == sgroup[i]) {
+ goto skip_gid;
+ }
+ }
+
+ pgroup[j] = sgroup[i];
+ j++;
+
+ skip_gid:
+ ; /* skipping the gid because it's already present */
+ }
+
+ rv = setgroups(j, pgroup);
+ if (rv < 0) {
+ log_error("cannot set the user %s groups %i", com.uname, errno);
+ goto out;
+ }
+
+ out:
+ free(pgroup);
+}
+
static int do_daemon(void)
{
struct sigaction act;
@@ -1223,6 +1286,8 @@ static int do_daemon(void)
setup_host_name();
+ setup_groups();
+
log_error("sanlock daemon started %s aio %d %d renew %d %d host %s time %llu",
RELEASE_VERSION,
main_task.use_aio, main_task.io_timeout_seconds,
@@ -1635,9 +1700,11 @@ static int read_command_line(int argc, char *argv[])
parse_arg_resource(optionarg); /* com.res_args[] */
break;
case 'U':
+ com.uname = optionarg;
com.uid = user_to_uid(optionarg);
break;
case 'G':
+ com.gname = optionarg;
com.gid = group_to_gid(optionarg);
break;
diff --git a/src/sanlock_internal.h b/src/sanlock_internal.h
index 4565855..d3ab366 100644
--- a/src/sanlock_internal.h
+++ b/src/sanlock_internal.h
@@ -531,7 +531,9 @@ struct command_line {
int max_worker_threads;
int aio_arg;
int io_timeout_arg;
+ char *uname; /* -U */
int uid; /* -U */
+ char *gname; /* -G */
int gid; /* -G */
int pid; /* -p */
char sort_arg;
11 years
[PATCHv2] sanlock: set the supplementary groups at startup
by Federico Simoncelli
This is mostly required to access leases that resides on NFS exports
with the root_squash option enabled. The sanlock process will acquire
all the supplementary groups of the sanlock user.
Signed-off-by: Federico Simoncelli <fsimonce(a)redhat.com>
---
init.d/sanlock | 2 +-
src/main.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++
src/sanlock_internal.h | 2 +
3 files changed, 70 insertions(+), 1 deletions(-)
diff --git a/init.d/sanlock b/init.d/sanlock
index 7004f1f..5f049a6 100644
--- a/init.d/sanlock
+++ b/init.d/sanlock
@@ -39,7 +39,7 @@ start() {
fi
echo -n $"Starting $prog: "
- daemon --user=$SANLOCKUSER $prog daemon $SANLOCKOPTS
+ daemon $prog daemon $SANLOCKOPTS
retval=$?
echo
[ $retval -eq 0 ]
diff --git a/src/main.c b/src/main.c
index 82c39af..f8c74af 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1182,6 +1182,69 @@ static void setup_host_name(void)
uuid, name.nodename);
}
+static void setup_groups(void)
+{
+ int rv, i, j, h;
+ int pngroups, sngroups, ngroups_max;
+ gid_t *pgroup, *sgroup;
+
+ ngroups_max = sysconf(_SC_NGROUPS_MAX);
+ if (ngroups_max < 0) {
+ log_error("cannot get the max number of groups %i", errno);
+ return;
+ }
+
+ pgroup = malloc(ngroups_max * 2 * sizeof(gid_t));
+ if (!pgroup) {
+ log_error("cannot malloc the group list %i", errno);
+ exit(EXIT_FAILURE);
+ }
+
+ pngroups = getgroups(ngroups_max, pgroup);
+ if (pngroups < 0) {
+ log_error("cannot get the process groups %i", errno);
+ goto out;
+ }
+
+ sgroup = pgroup + ngroups_max;
+ sngroups = ngroups_max;
+
+ rv = getgrouplist(com.uname, com.gid, sgroup, &sngroups);
+ if (rv < -1) {
+ log_error("cannot get the user %s groups %i", com.uname, errno);
+ goto out;
+ }
+
+ for (i = 0, j = pngroups; i < sngroups; i++) {
+ if (j >= ngroups_max) {
+ log_error("too many groups for the user %s", com.uname);
+ break;
+ }
+
+ /* check if the groups is already present in the list */
+ for (h = 0; h < j; h++) {
+ if (pgroup[h] == sgroup[i]) {
+ goto skip_gid;
+ }
+ }
+
+ pgroup[j] = sgroup[i];
+ j++;
+
+ skip_gid:
+ ; /* skipping the gid because it's already present */
+ }
+
+ rv = setgroups(j, pgroup);
+ if (rv < 0) {
+ log_error("cannot set the user %s groups %i", com.uname, errno);
+ goto out;
+ }
+
+ out:
+ free(pgroup);
+}
+
static int do_daemon(void)
{
struct sigaction act;
@@ -1223,6 +1286,8 @@ static int do_daemon(void)
setup_host_name();
+ setup_groups();
+
log_error("sanlock daemon started %s aio %d %d renew %d %d host %s time %llu",
RELEASE_VERSION,
main_task.use_aio, main_task.io_timeout_seconds,
@@ -1635,9 +1700,11 @@ static int read_command_line(int argc, char *argv[])
parse_arg_resource(optionarg); /* com.res_args[] */
break;
case 'U':
+ com.uname = optionarg;
com.uid = user_to_uid(optionarg);
break;
case 'G':
+ com.gname = optionarg;
com.gid = group_to_gid(optionarg);
break;
diff --git a/src/sanlock_internal.h b/src/sanlock_internal.h
index 4565855..d3ab366 100644
--- a/src/sanlock_internal.h
+++ b/src/sanlock_internal.h
@@ -531,7 +531,9 @@ struct command_line {
int max_worker_threads;
int aio_arg;
int io_timeout_arg;
+ char *uname; /* -U */
int uid; /* -U */
+ char *gname; /* -G */
int gid; /* -G */
int pid; /* -p */
char sort_arg;
--
1.7.1
11 years
[PATCH] sanlock: set the supplementary groups at startup
by Federico Simoncelli
This is mostly required to access leases that resides on NFS exports
with the root_squash option enabled. The sanlock process will acquire
all the supplementary groups of the sanlock user.
Signed-off-by: Federico Simoncelli <fsimonce(a)redhat.com>
---
init.d/sanlock | 2 +-
src/main.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++
src/sanlock_internal.h | 2 +
3 files changed, 75 insertions(+), 1 deletions(-)
diff --git a/init.d/sanlock b/init.d/sanlock
index 7004f1f..5f049a6 100644
--- a/init.d/sanlock
+++ b/init.d/sanlock
@@ -39,7 +39,7 @@ start() {
fi
echo -n $"Starting $prog: "
- daemon --user=$SANLOCKUSER $prog daemon $SANLOCKOPTS
+ daemon $prog daemon $SANLOCKOPTS
retval=$?
echo
[ $retval -eq 0 ]
diff --git a/src/main.c b/src/main.c
index 82c39af..3894ac1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1182,6 +1182,74 @@ static void setup_host_name(void)
uuid, name.nodename);
}
+static void setup_groups(void)
+{
+ int rv, i, j, h;
+ int pngroups, sngroups, ngroups_max;
+ gid_t *pgroup, *sgroup;
+
+ ngroups_max = sysconf(_SC_NGROUPS_MAX) + 1;
+ if (ngroups_max < 0) {
+ log_error("cannot determine the max number of groups %i", errno);
+ return;
+ }
+
+ pgroup = malloc(ngroups_max * sizeof(gid_t));
+ if (!pgroup) {
+ log_error("cannot malloc the pgroup list %i", errno);
+ exit(EXIT_FAILURE);
+ }
+
+ sgroup = malloc(ngroups_max * sizeof(gid_t));
+ if (!sgroup) {
+ log_error("cannot malloc the sgroup list %i", errno);
+ exit(EXIT_FAILURE);
+ }
+
+ pngroups = getgroups(ngroups_max, pgroup);
+ if (pngroups < 0) {
+ log_error("cannot get the process groups %i", errno);
+ goto out;
+ }
+
+ sngroups = ngroups_max;
+
+ rv = getgrouplist(com.uname, com.gid, sgroup, &sngroups);
+ if (rv < -1) {
+ log_error("cannot get the user %s groups %i", com.uname, errno);
+ goto out;
+ }
+
+ for (i = 0, j = pngroups; i < sngroups; i++) {
+ if (j >= ngroups_max) {
+
+ }
+
+ /* check if the groups is already present in the list */
+ for (h = 0; h < j; h++) {
+ if (pgroup[h] == sgroup[i]) {
+ goto skip_gid;
+ }
+ }
+
+ pgroup[j] = sgroup[i];
+ j++;
+
+ skip_gid:
+ ; /* skipping the gid because it's already present */
+ }
+
+ rv = setgroups(j, pgroup);
+ if (rv < 0) {
+ log_error("cannot set the user %s groups %i", com.uname, errno);
+ goto out;
+ }
+
+ out:
+ free(pgroup);
+ free(sgroup);
+}
+
static int do_daemon(void)
{
struct sigaction act;
@@ -1223,6 +1291,8 @@ static int do_daemon(void)
setup_host_name();
+ setup_groups();
+
log_error("sanlock daemon started %s aio %d %d renew %d %d host %s time %llu",
RELEASE_VERSION,
main_task.use_aio, main_task.io_timeout_seconds,
@@ -1635,9 +1705,11 @@ static int read_command_line(int argc, char *argv[])
parse_arg_resource(optionarg); /* com.res_args[] */
break;
case 'U':
+ com.uname = optionarg;
com.uid = user_to_uid(optionarg);
break;
case 'G':
+ com.gname = optionarg;
com.gid = group_to_gid(optionarg);
break;
diff --git a/src/sanlock_internal.h b/src/sanlock_internal.h
index 4565855..d3ab366 100644
--- a/src/sanlock_internal.h
+++ b/src/sanlock_internal.h
@@ -531,7 +531,9 @@ struct command_line {
int max_worker_threads;
int aio_arg;
int io_timeout_arg;
+ char *uname; /* -U */
int uid; /* -U */
+ char *gname; /* -G */
int gid; /* -G */
int pid; /* -p */
char sort_arg;
--
1.7.1
11 years