blob: 01c28e298d0795f5b1735ffe26ccf22c269ab299 [file] [log] [blame]
# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# statd - Network Status Monitor daemon
# statd is used by the lock daemon to implement lock recovery when the
# NFS server machine crashes and reboots
# This is modified from Ubuntu's statd.conf
description "NSM daemon"
author "chromium-os-dev@chromium.org"
start on (started rpcbind or mounting TYPE=nfs)
stop on stopping rpcbind
expect fork
respawn
env NEED_STATD
export NEED_STATD
# Uncomment to enable console output
#console output
env DEFAULTFILE=/etc/conf.d/nfs
pre-start script
. /etc/init/lib/nfs-check-setup
# create the NFS directories here
local d
for d in rpc_pipefs v4recovery v4root ; do
d="/var/lib/nfs/${d}"
[ ! -d "${d}" ] && mkdir -p "${d}"
done
# This doesn't stop upstart from starting the daemon, sadly.
# However, it does stop us from starting rpcbind, and if that
# is not already running then rpc.statd will fail to start!
[ "$NEED_STATD" = "yes" ] || { stop statd; exit 0; }
start rpcbind || true
status rpcbind | grep -q start/running
exec sm-notify
end script
script
if [ -f "$DEFAULTFILE" ]; then
. "$DEFAULTFILE"
fi
# We can't use grep here since the resulting fork will make upstart
# think we are done, and then it will be confused when grep exits
# We also can't use pattern matching since dash doesn't support it
# So how to check NFS_NEED_SERVICES? The environment variable
# NEED_STATD is not transferred to this script although from the
# Upstart documentation it looks like it should be.
# We rely on the 'stop statd' in the pre-start script to stop the
# daemon in this case. But upstart doesn't necessary honour that,
# probably because it is a race condition. Starting statd by mistake
# is probably not a big problem
# To fix properly:
# 1. Use bash / ash where =~ or == *pattern* or ${var/sub/rep} work
# 2. Enhance upstart so that the pre-start script can 'stop the start'
exec rpc.statd -L $OPTS_RPC_STATD
end script