f298c45195
the line continuation backslash doesn't cause "warn" to print "return". 2. Group "warn" and "return" together as the "return 1" should be performed only if the "kldload nfsclient" also failed (and not already if the "vfs.nfs" sysctl(8) check failed). MFC after: 3 days
79 lines
1.6 KiB
Bash
Executable File
79 lines
1.6 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# $NetBSD: mountcritremote,v 1.7 2002/04/29 12:29:53 lukem Exp $
|
|
# $FreeBSD$
|
|
#
|
|
|
|
# PROVIDE: mountcritremote
|
|
# REQUIRE: NETWORKING root mountcritlocal cleanvar ipsec
|
|
# KEYWORD: nojail
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="mountcritremote"
|
|
stop_cmd=":"
|
|
start_cmd="mountcritremote_start"
|
|
start_precmd="mountcritremote_precmd"
|
|
|
|
# Mount NFS filesystems if present in /etc/fstab
|
|
#
|
|
# XXX When the vfsload() issues with nfsclient support and related sysctls
|
|
# have been resolved, this block can be removed, and the condition that
|
|
# skips nfs in the following block (for "other network filesystems") can
|
|
# be removed.
|
|
#
|
|
mountcritremote_precmd()
|
|
{
|
|
case "`mount -d -a -t nfs 2> /dev/null`" in
|
|
*mount_nfs*)
|
|
# Handle absent nfs client support
|
|
if ! sysctl vfs.nfs >/dev/null 2>&1; then
|
|
kldload nfsclient || { warn 'nfs mount ' \
|
|
'requested, but no nfs client in kernel'; \
|
|
return 1; }
|
|
fi
|
|
;;
|
|
esac
|
|
return 0
|
|
}
|
|
|
|
mountcritremote_start()
|
|
{
|
|
# Mount nfs filesystems.
|
|
#
|
|
echo -n 'Mounting NFS file systems:'
|
|
mount -a -t nfs
|
|
echo '.'
|
|
|
|
# Mount other network filesystems if present in /etc/fstab.
|
|
case ${extra_netfs_types} in
|
|
[Nn][Oo])
|
|
;;
|
|
*)
|
|
netfs_types="${netfs_types} ${extra_netfs_types}"
|
|
;;
|
|
esac
|
|
|
|
for i in ${netfs_types}; do
|
|
fstype=${i%:*}
|
|
fsdecr=${i#*:}
|
|
|
|
[ "${fstype}" = "nfs" ] && continue
|
|
|
|
case "`mount -d -a -t ${fstype}`" in
|
|
*mount_${fstype}*)
|
|
echo -n "Mounting ${fsdecr} file systems:"
|
|
mount -a -t ${fstype}
|
|
echo '.'
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Cleanup /var again just in case it's a network mount.
|
|
/etc/rc.d/cleanvar reload
|
|
rm -f /var/run/clean_var /var/spool/lock/clean_var
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|