#!/bin/sh /etc/rc.common # Copyright (C) 2006 OpenWrt.org START=99 STOP=60 USE_PROCD=1 NFS_DIR="/var/lib/nfs" RECOVERY_DIR="$NFS_DIR/v4recovery" LOCK_DIR="/var/lib/nfs/sm" PROCFS_DIR="/proc/fs/nfsd" VAR_NFS_DIR="/var/lib/nfs" NFSDCLD_DIR="$NFS_DIR/nfsdcld" RPC_PIPEFS_DIR="/tmp/lib/nfs/rpc_pipefs" start_service() { grep -q "$PROCFS_DIR" /proc/mounts || \ mount -t nfsd nfsd "$PROCFS_DIR" mkdir -p "$NFS_DIR" mkdir -p "$RECOVERY_DIR" mkdir -p "$LOCK_DIR" touch "$NFS_DIR/rmtab" mkdir -p "$VAR_NFS_DIR" chown -R nfs:nfs "$VAR_NFS_DIR" sysctl -w fs.nfs.nlm_tcpport=32777 fs.nfs.nlm_udpport=32777 >/dev/null procd_open_instance procd_set_param command /usr/sbin/rpc.statd -p 32778 -o 32779 -F procd_close_instance /usr/sbin/exportfs -r /usr/sbin/rpc.nfsd --grace-time 10 procd_open_instance procd_set_param command /usr/sbin/rpc.mountd -p 32780 -F procd_close_instance # nfsdcld if [ -x /usr/sbin/nfsdcld ]; then mkdir -p "$NFSDCLD_DIR" "$RPC_PIPEFS_DIR" chmod 755 "$NFSDCLD_DIR" "$RPC_PIPEFS_DIR" grep -q "$RPC_PIPEFS_DIR" /proc/mounts || \ mount -t rpc_pipefs none "$RPC_PIPEFS_DIR" procd_open_instance procd_set_param command /usr/sbin/nfsdcld procd_close_instance fi } stop_service() { rpc.nfsd 0 2>/dev/null /usr/sbin/exportfs -au # nfsdcld if [ -x /usr/sbin/nfsdcld ]; then pid=$(pgrep nfsdcld) if [ -n "$pid" ]; then kill "$pid" fi grep -q "$RPC_PIPEFS_DIR" /proc/mounts && \ umount "$RPC_PIPEFS_DIR" fi grep -q "$PROCFS_DIR" /proc/mounts && \ umount "$PROCFS_DIR" } service_triggers() { local export_dirs="$(while read mp _r; do echo -n "$mp "; done