File: //usr/syno/lib/systemd/scripts/nfsd.sh
#!/bin/bash
# Copyright (c) 2000-2018 Synology Inc. All rights reserved.
. /etc.defaults/rc.subr
LinuxVersionCode=$(KernelVersionCode "$(KernelVersion)")
case $1 in
pre-start)
/usr/sbin/exportfs -r
exit 0
;;
start)
/bin/mkdir -p /var/lib/nfs/v4recovery
/usr/syno/sbin/synonfsudc --set-syno-file-stats
# custom port
EnableCustomPort=`/bin/get_key_value /etc/nfs/syno_nfs_conf nfs_custom_port_enable`
if [ x"$EnableCustomPort" == xyes ] ; then
NlmPort=`/bin/get_key_value /etc/nfs/syno_nfs_conf nlm_port`
echo "$NlmPort" > /proc/sys/fs/nfs/nlm_tcpport
echo "$NlmPort" > /proc/sys/fs/nfs/nlm_udpport
else
echo 4045 > /proc/sys/fs/nfs/nlm_tcpport
echo 4045 > /proc/sys/fs/nfs/nlm_udpport
fi
# versions
EnableVersion4=`/bin/get_key_value /etc/nfs/syno_nfs_conf nfsv4_enable`
if [ x"$EnableVersion4" == xyes ] ; then
Version="-V 2 -V 3 -V 4"
# add minor version if it does exist (old version conf)
EnabledMinorVersion=`/bin/get_key_value /etc/nfs/syno_nfs_conf nfs_minor_ver_enable`
if [ "$EnabledMinorVersion" == "" ]; then
if [ "$LinuxVersionCode" -ge "$(KernelVersionCode "4.4")" ]; then
echo "nfs_minor_ver_enable=1" >> /etc/nfs/syno_nfs_conf
EnabledMinorVersion=1
else
echo "nfs_minor_ver_enable=0" >> /etc/nfs/syno_nfs_conf
EnabledMinorVersion=0
fi
fi
if [ $EnabledMinorVersion -ge 1 ]; then
Version=$Version" -V 4.1"
else
Version=$Version" -N 4.1"
fi
else
Version="-V 2 -V 3 -N 4 -N 4.1"
fi
if [ "$LinuxVersionCode" -ge "$(KernelVersionCode "4.4")" ]; then
Version=$Version" -N 4.2"
fi
# nfsd count
N=`cat /proc/meminfo | grep MemTotal: | awk '{ m = ($2 / 1024 / 32) ; print int(m) +1;}'`
N=$((N > 128 ? 128 : N))
/usr/sbin/nfsd $Version $N -u
;;
stop-post)
/usr/sbin/exportfs -au
/usr/sbin/exportfs -f
/bin/rm -rf /var/lib/nfs/v4recovery
/usr/syno/sbin/synonfsudc --clean-syno-file-stats
;;
stop)
/usr/syno/sbin/synonfs_udc_sub_collector.py --save
/usr/syno/sbin/synonfs_udc_sub_collector.py --init
/usr/sbin/nfsd 0
;;
*)
echo "Usages: $0 [pre-start|start|stop-post|stop]"
;;
esac