summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Hubbs <w.d.hubbs@gmail.com>2012-09-14 14:29:00 -0500
committerWilliam Hubbs <w.d.hubbs@gmail.com>2012-09-15 12:08:09 -0500
commita0fe1c5a6082c751b570dc1db7dd32b914ebe5cd (patch)
treedc14e1e3431677632e5da64a0c6fde1bd12a7324
parent6b1e806c8bfb9b72cba99162bcf20deb47b8670d (diff)
downloadopenrc-a0fe1c5a6082c751b570dc1db7dd32b914ebe5cd.tar.gz
openrc-a0fe1c5a6082c751b570dc1db7dd32b914ebe5cd.tar.bz2
openrc-a0fe1c5a6082c751b570dc1db7dd32b914ebe5cd.tar.xz
netmount: do not handle NFS mounts
Since nfs and nfs4 file systems require extra daemons to be running on the client to function properly, netmount should not try to handle these file systems. Reported-by: <devurandom@gmx.net> X-Gentoo-Bug: 427996 X-Gentoo-Bug-URL: http://bugs.gentoo.org/show_bug.cgi?id=427996
-rw-r--r--init.d/netmount.in88
1 files changed, 23 insertions, 65 deletions
diff --git a/init.d/netmount.in b/init.d/netmount.in
index 2259783..57ef6d7 100644
--- a/init.d/netmount.in
+++ b/init.d/netmount.in
@@ -2,83 +2,27 @@
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license.
-description="Mounts network shares according to /etc/fstab."
-
-need_portmap()
-{
- local opts=
- local IFS="
-"
- set -- $(fstabinfo --options --fstype nfs,nfs4)
- for opts; do
- case ,$opts, in
- *,noauto,*|*,nolock,*);;
- *) return 0;;
- esac
- done
- return 1
-}
-
-need_idmap()
-{
- local opts=
- local IFS="
-"
- set -- $(fstabinfo --options --fstype nfs4)
- for opts; do
- case ,$opts, in
- *,noauto,*|*,nolock,*);;
- *) return 0;;
- esac
- done
- return 1
-}
+description="Mounts network shares, other than NFS, according to /etc/fstab."
+# We skip all NFS shares in this script because they require extra
+# daemons to be running on the client in order to work correctly.
+# It is best to allow nfs-utils to handle all nfs shares.
depend()
{
- # Only have portmap as a dependency if there is a nfs mount in fstab
- # that is set to mount at boot
- local pmap=
- if need_portmap; then
- pmap="rpc.statd"
- [ -x @SYSCONFDIR@/init.d/rpcbind ] \
- && pmap="$pmap rpcbind" \
- || pmap="$pmap portmap"
- fi
-
- # Only have rpc.idmapd as a dependency if there is a nfs4 mount in fstab
- # that is set to mount at boot
- if need_idmap; then
- pmap="$pmap rpc.idmapd"
- fi
-
config /etc/fstab
- need net $pmap
+ need net
use afc-client amd autofs openvpn
- use dns nfs nfsmount portmap rpcbind rpc.statd rpc.lockd
+ use dns
keyword -jail -prefix -vserver
}
start()
{
- local myneed= myuse= pmap="portmap" nfsmounts=
- [ -x @SYSCONFDIR@/init.d/rpcbind ] && pmap="rpcbind"
-
local x= fs= rc=
for x in $net_fs_list $extra_net_fs_list; do
case "$x" in
nfs|nfs4)
- # If the nfsmount script took care of the nfs
- # filesystems, then there's no point in trying
- # them twice
- service_started nfsmount && continue
-
- # Only try to mount NFS filesystems if portmap was
- # started. This is to fix "hang" problems for new
- # users who do not add portmap to the default runlevel.
- if need_portmap && ! service_started "$pmap"; then
- continue
- fi
+ continue
;;
esac
fs="$fs${fs:+,}$x"
@@ -103,7 +47,14 @@ stop()
. "$RC_LIBEXECDIR"/sh/rc-mount.sh
for x in $net_fs_list $extra_net_fs_list; do
- fs="$fs${fs:+,}$x"
+ case "$x" in
+ nfs|nfs4)
+ continue
+ ;;
+ *)
+ fs="$fs${fs:+,}$x"
+ ;;
+ esac
done
if [ -n "$fs" ]; then
umount -at $fs || eerror "Failed to simply unmount filesystems"
@@ -112,7 +63,14 @@ stop()
eindent
fs=
for x in $net_fs_list $extra_net_fs_list; do
- fs="$fs${fs:+|}$x"
+ case "$x" in
+ nfs|nfs4)
+ continue
+ ;;
+ *)
+ fs="$fs${fs:+|}$x"
+ ;;
+ esac
done
[ -n "$fs" ] && fs="^($fs)$"
do_unmount umount ${fs:+--fstype-regex} $fs --netdev