reassign 433386 initscripts tags 433386 + patch thanks Hi,
As discussed with Petter on IRC, initscripts is going to need fixing in addition to the latest nfs-common changes. The following patch is a fixed version of a previous patch I proposed; I've been asked to wait for feedback for a few days before NMUing. (I'm probably going to NMU Friday 20th if nothing else happens.) The problem is that ifupdown fires up mountnfs asynchronously by default, and as such having portmap and nfs-common in S43 and S44 doesn't really help anything (or rather, it creates a race condition), so mountnfs will still have to start portmap and nfs-common if there are any NFS mounts (that are not nolock). Note that the minuses and pluses made by diff can be slightly confusing in this case; it's probably better to just read the script after applying the patch. --- /etc/network/if-up.d/mountnfs 2006-11-26 15:53:36.000000000 +0100 +++ ./debian/initscripts/etc/network/if-up.d/mountnfs 2007-07-17 12:59:45.000000000 +0200 @@ -27,10 +27,9 @@ exec 9<&0 </etc/fstab - portmap=no + start_nfs=no NETFS="" NETDEV="" - gss_or_idmap=no while read DEV MTPT FSTYPE OPTS REST do case "$DEV" in @@ -47,19 +46,29 @@ ;; esac case "$FSTYPE" in - nfs|nfs4) + nfs) + # NFS filsystems normally require statd and portmap. However, + # if nolock is set, portmap and statd are not required for this + # file system. case "$OPTS" in nolock|*,nolock|nolock,*|*,nolock,*) + # no action ;; *) - portmap=yes + start_nfs=yes ;; esac + + # However, Kerberos requires gssd, so start nfs-common anyway. case "$OPTS" in sec=krb5|*,sec=krb5|sec=krb5,*|*,sec=krb5i,*|sec=krb5i|*,sec=krb5i|sec=krb5i,*|*,sec=krb5i,*|sec=krb5p|*,sec=krb5p|sec=krb5p,*|*,sec=krb5p,*) - gss_or_idmap=yes + start_nfs=yes ;; esac + ;; + nfs4) + # NFSv4 requires idmapd, so start nfs-common no matter what the options are. + start_nfs=yes ;; smbfs|cifs|coda|ncp|ncpfs|ocfs2|gfs) ;; @@ -77,40 +86,18 @@ ;; esac fi - if [ "$FSTYPE" = "nfs4" ] - then - gss_or_idmap=yes - fi done exec 0<&9 9<&- # - # With contemporary portmap packages it is no longer necessary - # to start portmap here because the package has its own initscript. - # This code will disappear after etch. - # - if [ "$portmap" = yes ] - then - if [ -x /sbin/portmap ] && ! pidof portmap >/dev/null 2>&1 - then - if [ -x /etc/init.d/portmap ] - then - /etc/init.d/portmap start - else - start-stop-daemon --start --quiet --oknodo --exec /sbin/portmap - sleep 1 # FIXME: Actually synchronize with the process? - fi - fi - fi - - # - # Initialize nfs-common (which starts rpc.gssd and/or - # rpc.idmapd, and loads the right kernel modules if + # Initialize nfs-common (which starts rpc.statd, rpc.gssd + # and/or rpc.idmapd, and loads the right kernel modules if # applicable) if we use Kerberos and/or NFSv4 mounts. # - if [ "$gss_or_idmap" = yes ] && [ -x /etc/init.d/nfs-common ] + if [ "$start_nfs" = yes ] && [ -x /etc/init.d/portmap ] && [ -x /etc/init.d/nfs-common ] then + /etc/init.d/portmap start /etc/init.d/nfs-common start fi /* Steinar */ -- Homepage: http://www.sesse.net/ -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]