#!/bin/sh
# nfsmount calls this script when mounting a filesystem with locking
# enabled, but when statd does not seem to be running (based on
# /run/rpc.statd.pid).
# It should run statd with whatever flags are apropriate for this
# site.
PATH="/sbin:/usr/sbin:/bin:/usr/bin"

# Use flock to serialize the running of this script
exec 9> /run/rpc.statd.lock
flock -e 9

if [ -s /run/rpc.statd.pid ] &&
       [ "1$(cat /run/rpc.statd.pid)" -gt 1 ] &&
       kill -0 "$(cat /run/rpc.statd.pid)" > /dev/null 2>&1
then
    # statd already running - must have been slow to respond.
    exit 0
fi

# Read config
DEFAULTFILE=/etc/default/nfs-common
NEED_IDMAPD=
if [ -f $DEFAULTFILE ]; then
    . $DEFAULTFILE
fi

# First try systemd if it's installed.
if [ -d /run/systemd/system ]; then
    # Quit only if the call worked.
    if systemctl start nfs-statd.service; then
        # Ensure systemd knows not to stop rpc.statd or its dependencies
        # on 'systemctl isolate ..'
        systemctl add-wants --runtime remote-fs.target nfs-statd.service
        exit 0
    fi
fi

cd /
# Fall back to launching it ourselves.
exec rpc.statd --no-notify $STATDOPTS
