systemd: RemainAfterExit in openafs-client.service
authorAndrew Deason <adeason@sinenomine.net>
Tue, 2 Sep 2014 22:51:46 +0000 (17:51 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Sat, 22 Nov 2014 22:17:38 +0000 (17:17 -0500)
Currently, if the client is started without any options that require
an extra thread (like -afsdb), all processes spawned by afsd will
exit. There may be some kernel threads still active, but those are
spawned by the kernel module, and are not child processes of the
parent afsd process, or anything like that.

Since we are a Type=forking service in systemd, systemd interprets
this situation to mean that the service has stopped successfully, and
then runs the ExecStop commands. So, for example, if our AFSD_ARGS in
our sysconfig is "-fakestat -afsdb", the service starts as normal. But
if it is changed to "-fakestat", then when openafs-client.service is
started, it immediately stops again.

To avoid this, turn on the systemd option RemainAfterExit, which tells
systemd that the service has not stopped if all of our processes have
exited. The client service will thus remain running until it is
stopped.

Issue reported by Rich Sudlow.

Change-Id: If760d3617d4afbcfac923df726eb58b03ce25771
Reviewed-on: http://gerrit.openafs.org/11440
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Anders Kaseorg <andersk@mit.edu>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

src/packaging/RedHat/openafs-client.service

index 1a34c0c..cc20631 100644 (file)
@@ -6,6 +6,7 @@ Before=remote-fs.target
 
 [Service]
 Type=forking
+RemainAfterExit=true
 EnvironmentFile=/etc/sysconfig/openafs
 ExecStartPre=/bin/sed -n 'w/usr/vice/etc/CellServDB' /usr/vice/etc/CellServDB.local /usr/vice/etc/CellServDB.dist
 ExecStartPre=/bin/chmod 0644 /usr/vice/etc/CellServDB