mountcritremote revision 301004
1290001Sglebius#!/bin/sh 2290001Sglebius# 3290001Sglebius# $FreeBSD: head/etc/rc.d/mountcritremote 301004 2016-05-30 19:59:51Z ngie $ 4290001Sglebius# 5290001Sglebius 6290001Sglebius# PROVIDE: mountcritremote 7290001Sglebius# REQUIRE: NETWORKING FILESYSTEMS ipsec netwait 8290001Sglebius# KEYWORD: nojail 9290001Sglebius 10290001Sglebius. /etc/rc.subr 11290001Sglebius 12290001Sglebiusname="mountcritremote" 13290001Sglebiusdesc="Mount critical remote filesystems" 14290001Sglebiusstop_cmd=":" 15290001Sglebiusstart_cmd="mountcritremote_start" 16290001Sglebiusstart_precmd="mountcritremote_precmd" 17290001Sglebius 18290001Sglebius# Mount NFS filesystems if present in /etc/fstab 19290001Sglebius# 20290001Sglebius# XXX When the vfsload() issues with nfsclient support and related sysctls 21290001Sglebius# have been resolved, this block can be removed, and the condition that 22290001Sglebius# skips nfs in the following block (for "other network filesystems") can 23290001Sglebius# be removed. 24290001Sglebius# 25290001Sglebiusmountcritremote_precmd() 26290001Sglebius{ 27290001Sglebius case "`mount -d -a -t nfs 2> /dev/null`" in 28290001Sglebius *mount_nfs*) 29290001Sglebius # Handle absent nfs client support 30290001Sglebius load_kld -m nfs nfscl || return 1 31290001Sglebius ;; 32290001Sglebius esac 33290001Sglebius return 0 34290001Sglebius} 35290001Sglebius 36290001Sglebiusmountcritremote_start() 37290001Sglebius{ 38290001Sglebius local mounted_remote_filesystem=false 39290001Sglebius 40290001Sglebius # Mount nfs filesystems. 41290001Sglebius # 42290001Sglebius case "`/sbin/mount -d -a -t nfs`" in 43290001Sglebius '') 44290001Sglebius ;; 45290001Sglebius *) 46290001Sglebius mounted_remote_filesystem=true 47290001Sglebius echo -n 'Mounting NFS filesystems:' 48290001Sglebius mount -a -t nfs 49290001Sglebius echo '.' 50290001Sglebius ;; 51290001Sglebius esac 52290001Sglebius 53290001Sglebius # Mount other network filesystems if present in /etc/fstab. 54290001Sglebius case ${extra_netfs_types} in 55290001Sglebius [Nn][Oo]) 56290001Sglebius ;; 57290001Sglebius *) 58290001Sglebius netfs_types="${netfs_types} ${extra_netfs_types}" 59290001Sglebius ;; 60290001Sglebius esac 61290001Sglebius 62290001Sglebius for i in ${netfs_types}; do 63290001Sglebius fstype=${i%:*} 64290001Sglebius fsdecr=${i#*:} 65290001Sglebius 66290001Sglebius [ "${fstype}" = "nfs" ] && continue 67290001Sglebius 68290001Sglebius case "`mount -d -a -t ${fstype}`" in 69290001Sglebius *mount_${fstype}*) 70290001Sglebius mounted_remote_filesystem=true 71290001Sglebius echo -n "Mounting ${fsdecr} filesystems:" 72290001Sglebius mount -a -t ${fstype} 73290001Sglebius echo '.' 74290001Sglebius ;; 75290001Sglebius esac 76290001Sglebius done 77290001Sglebius 78290001Sglebius if $mounted_remote_filesystem; then 79290001Sglebius # Cleanup /var again just in case it's a network mount. 80290001Sglebius /etc/rc.d/cleanvar quietreload 81290001Sglebius rm -f /var/run/clean_var /var/spool/lock/clean_var 82290001Sglebius 83290001Sglebius # Regenerate the ldconfig hints in case there are additional 84290001Sglebius # library paths on remote file systems 85290001Sglebius /etc/rc.d/ldconfig quietstart 86290001Sglebius fi 87290001Sglebius} 88290001Sglebius 89290001Sglebiusload_rc_config $name 90290001Sglebiusrun_rc_command "$1" 91290001Sglebius