summaryrefslogtreecommitdiffstats
path: root/utils/statd/start-statd
blob: b11a7d91a7f611b8026450a26532f778d42d7a89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/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
# First try systemd if it's installed.
if [ -d /run/systemd/system ]; then
    # Quit only if the call worked.
    if systemctl start rpc-statd.service; then
        # Ensure systemd knows not to stop rpc.statd or its dependencies
        # on 'systemctl isolate ..'
        systemctl add-wants --runtime remote-fs.target rpc-statd.service
        exit 0
    fi
fi

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