diff options
author | William Hubbs <w.d.hubbs@gmail.com> | 2012-09-14 14:29:00 -0500 |
---|---|---|
committer | William Hubbs <w.d.hubbs@gmail.com> | 2012-09-15 12:08:09 -0500 |
commit | a0fe1c5a6082c751b570dc1db7dd32b914ebe5cd (patch) | |
tree | dc14e1e3431677632e5da64a0c6fde1bd12a7324 /init.d/netmount.in | |
parent | 6b1e806c8bfb9b72cba99162bcf20deb47b8670d (diff) |
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
Diffstat (limited to 'init.d/netmount.in')
-rw-r--r-- | init.d/netmount.in | 88 |
1 files changed, 23 insertions, 65 deletions
diff --git a/init.d/netmount.in b/init.d/netmount.in index 22597838..57ef6d7e 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 |