From 6ac5a26cb125d975b53baace6ab6c35a521e2ec8 Mon Sep 17 00:00:00 2001 From: Benjamin Kaduk Date: Wed, 22 Oct 2014 22:51:44 -0400 Subject: [PATCH] Add systemd unit file for openafs-client --- debian/changelog | 14 ++++++ debian/openafs-client-precheck | 78 ++++++++++++++++++++++++++++++++++ debian/openafs-client.install | 1 + debian/openafs-client.service | 21 +++++++++ debian/rules | 2 +- 5 files changed, 115 insertions(+), 1 deletion(-) create mode 100755 debian/openafs-client-precheck create mode 100755 debian/openafs-client.service diff --git a/debian/changelog b/debian/changelog index bb5e0bf23..024f1e8e6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,20 @@ openafs (1.6.10-1) UNRELEASED; urgency=medium - fix segfault with aklog -path. * The 1.6.10~pre1-1 changelog entry contains a full summary of changes in the upstream release. + * Add a systemd unit file for openafs-client. + - The variables AFS_PRE_SHUTDOWN and AFS_POST_INIT from + /etc/openafs.afs.conf are no longer honored. They should be + converted to the systemd format and placed in + /etc/systemd/system/openafs-client.service.d/ ; automatic conversion + is not possible. In particular, the kill_all_afs functionality is + not available. + - The LIBAFS, MODULEROOT, MODULEDIR, and DKMSDIR settings from + /etc/openafs/afs.conf are not used by the unit file. + - The extra shutdown handling for when the NFS translator is used + was not converted to the systemd format; the necessary feature + was removed from the Linux kernel in 2008. + - Support for cold shutdowns is removed. They generally resulted + only in strange failures later on. -- Benjamin Kaduk Wed, 22 Oct 2014 13:10:59 -0400 diff --git a/debian/openafs-client-precheck b/debian/openafs-client-precheck new file mode 100755 index 000000000..e62d5f105 --- /dev/null +++ b/debian/openafs-client-precheck @@ -0,0 +1,78 @@ +#! /bin/sh +PATH=/bin:/usr/bin:/sbin:/usr/sbin + +# Gather up options and post startup script name, if present +if [ -f /etc/openafs/afs.conf ]; then + . /etc/openafs/afs.conf +fi + +CACHEINFO=${CACHEINFO:-/etc/openafs/cacheinfo} + +# Exit if the package is not installed. +[ -x /sbin/afsd ] || exit 1 + +# Do some other checks for prerequisites +if ! [ -f "${CACHEINFO}" ]; then + echo "required cacheinfo file does not exist" >&2 + exit 1 +fi +if ! [ -d $(awk -F : '{print $1}' < "${CACHEINFO}") ]; then + echo "AFS mountpoint is not a directory or does not exist" >&2 + exit 1 +fi +if pidof /sbin/afsd || pidof /usr/sbin/afsd; then + echo "afsd is already running?" >&2 + exit 1 +fi + +# Ensure that the kernel module is loaded. +if [ -z $(/sbin/lsmod | fgrep openafs) ]; then + modprobe openafs + status=$? + + if [ $status -ne 0 ] ; then + echo "Failed to load openafs.ko. Does it need to be built?" >&2 + exit $status + fi +fi + +# Determine which afsd options to use. /etc/openafs/afs.conf contains the +# settings that are checked here. +if [ -z "$OPTIONS" ] || [ "$OPTIONS" = "AUTOMATIC" ] ; then + AFSD_OPTIONS="$VERBOSE" +else + AFSD_OPTIONS="$OPTIONS $VERBOSE" +fi + +# These variables are from /etc/openafs/afs.conf.client and are managed +# automatically by debconf. +case "$AFS_AFSDB" in +[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]) + AFSD_OPTIONS="$AFSD_OPTIONS -afsdb" +esac +case "$AFS_DYNROOT" in +[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]) + AFSD_OPTIONS="$AFSD_OPTIONS -dynroot" + ;; +[Ss][Pp][Aa][Rr][Ss][Ee]) + AFSD_OPTIONS="$AFSD_OPTIONS -dynroot-sparse" +esac +case "$AFS_FAKESTAT" in +[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]) + AFSD_OPTIONS="$AFSD_OPTIONS -fakestat" +esac + +case "$AFS_CRYPT" in +[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]) + AFS_SETCRYPT=on + ;; +*) + AFS_SETCRYPT=off +esac + +# Generate an EnvironmentFile for use by systemd. +cat > /var/cache/openafs/openafs-client.env <