On Apr. 02, 2009, 20:45 +0300, Benny Halevy <bhalevy@xxxxxxxxxxx> wrote: > On Apr. 02, 2009, 19:54 +0300, "J. Bruce Fields" <bfields@xxxxxxxxxxxx> wrote: >> On Thu, Apr 02, 2009 at 07:34:29PM +0300, Benny Halevy wrote: >>> On Apr. 02, 2009, 17:31 +0300, "J. Bruce Fields" <bfields@xxxxxxxxxxxx> wrote: >>>> On Thu, Apr 02, 2009 at 10:25:55AM -0400, Trond Myklebust wrote: >>>>> On Thu, 2009-04-02 at 10:22 -0400, J. Bruce Fields wrote: >>>>>> On Thu, Apr 02, 2009 at 10:16:40AM -0400, Trond Myklebust wrote: >>>>>>> On Thu, 2009-04-02 at 16:46 +0300, Benny Halevy wrote: >>>>>>>> Trond, please speak up if you want to remove CONFIG_NFS_V4_1 as well. >>>>>>>> On the client side minorversion 1 will be used only if the user >>>>>>>> explicitly asked for it with mount -o minorversion=1. >>>>>>> I'd feel more comfortable with being able to compile it out until the >>>>>>> stability of the code has been established. I'd certainly want to be >>>>>>> able to do that on the server side, since it has no other means to >>>>>>> restrict the protocol version should it turn out that NFSv4.1 has some >>>>>>> fatal condition. >>>>>> I think it's acceptable given an interface that allows choosing the >>>>>> supported minorversion at runtime (and that defaults 4.1 to off). >>>>> Is there such an interface on the server? >>>> That's the patch Benny just posted. It seems like a pretty simple >>>> extension of the existing version-choosing interface >>>> (/proc/fs/nfsd/versions), though I think the version he posted defaults >>>> 4.1 to on? I need to take another look. >>> That's right. This can be changed trivially, >>> but I'll have to find and work the reason why the settings reset on >>> service nfs restart, otherwise it will reset itself. >> Maybe you're starting and stopping the server using distro init scripts >> that load and unload the nfsd module? > > I'm using redhat's /etc/init.d/nfs > My impression was that it doesn't unload the nfsd module when the service > is stopped. However it does run modprobe on "start". I wonder if that's > causing the module to reload. Hmm, after "stop" nfsd is up and must stay up to keep serving /proc/fs/nfsd/versions. Giving modprobe the --first-time option reports: FATAL: Module nfsd already in kernel. Benny > > Here's their script for Fedora 9: > > #!/bin/sh > # > # nfs This shell script takes care of starting and stopping > # the NFS services. > # > # chkconfig: - 60 20 > # description: NFS is a popular protocol for file sharing across TCP/IP \ > # networks. This service provides NFS server functionality, \ > # which is configured via the /etc/exports file. > # probe: true > # config: /etc/sysconfig/nfs > > # Source function library. > . /etc/rc.d/init.d/functions > > # Source networking configuration. > if [ ! -f /etc/sysconfig/network ]; then > exit 6 > fi > > . /etc/sysconfig/network > > # Check that networking is up. > [ "${NETWORKING}" = "no" ] && exit 6 > > [ -x /usr/sbin/rpc.nfsd ] || exit 5 > [ -x /usr/sbin/rpc.mountd ] || exit 5 > [ -x /usr/sbin/exportfs ] || exit 5 > > # Don't fail if /etc/exports doesn't exist; create a bare-bones version and continue. > [ -r /etc/exports ] || \ > { touch /etc/exports && chmod u+rw,g+r,o+r /etc/exports ; } || \ > { echo "/etc/exports does not exist" ; exit 0 ; } > > # Check for and source configuration file otherwise set defaults > [ -f /etc/sysconfig/nfs ] && . /etc/sysconfig/nfs > > [ -z "$MOUNTD_NFS_V2" ] && MOUNTD_NFS_V2=default > [ -z "$MOUNTD_NFS_V3" ] && MOUNTD_NFS_V3=default > > # Number of servers to be started by default > [ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=8 > > # Remote quota server > [ -z "$RQUOTAD" ] && RQUOTAD=`type -path rpc.rquotad` > > RETVAL=0 > > # See how we were called. > case "$1" in > start) > # Start daemons. > [ -x /usr/sbin/rpc.svcgssd ] && /sbin/service rpcsvcgssd start > > # Load the nfsd module so /proc/fs/nfsd will exist > [ "$NFSD_MODULE" != "noload" ] && { > [ -x /sbin/modprobe ] && /sbin/modprobe nfsd > } > > action $"Starting NFS services: " /usr/sbin/exportfs -r > > # Set the ports lockd should listen on > if [ -n "$LOCKD_TCPPORT" ]; then > /sbin/sysctl -w fs.nfs.nlm_tcpport=$LOCKD_TCPPORT >/dev/null 2>&1 > fi > if [ -n "$LOCKD_UDPPORT" ]; then > /sbin/sysctl -w fs.nfs.nlm_udpport=$LOCKD_UDPPORT >/dev/null 2>&1 > fi > > if [ -n "$RQUOTAD" -a "$RQUOTAD" != "no" ]; then > echo -n $"Starting NFS quotas: " > [ -n "$RQUOTAD_PORT" ] \ > && RPCRQUOTADOPTS="$RPCRQUOTADOPTS -p $RQUOTAD_PORT" > daemon rpc.rquotad $RPCRQUOTADOPTS > RETVAL=$? > echo > fi > echo -n $"Starting NFS daemon: " > daemon rpc.nfsd $RPCNFSDARGS $RPCNFSDCOUNT > RETVAL=$? > echo > [ $RETVAL -ne 0 ] && exit $RETVAL > > [ -n "$MOUNTD_PORT" ] \ > && RPCMOUNTDOPTS="$RPCMOUNTDOPTS -p $MOUNTD_PORT" > > case $MOUNTD_NFS_V1 in > no|NO) > RPCMOUNTDOPTS="$RPCMOUNTDOPTS --no-nfs-version 1" ;; > esac > > case $MOUNTD_NFS_V2 in > no|NO) > RPCMOUNTDOPTS="$RPCMOUNTDOPTS --no-nfs-version 2" ;; > esac > > case $MOUNTD_NFS_V3 in > no|NO) > RPCMOUNTDOPTS="$RPCMOUNTDOPTS --no-nfs-version 3" ;; > esac > > echo -n $"Starting NFS mountd: " > daemon rpc.mountd $RPCMOUNTDOPTS > RETVAL=$? > echo > touch /var/lock/subsys/nfs > > # Let rpc.idmapd know that rpc.mountd just started > [ -x /usr/sbin/rpc.idmapd ] && /sbin/service rpcidmapd condstart > > ;; > stop) > # Stop daemons. > echo -n $"Shutting down NFS mountd: " > killproc rpc.mountd > echo > echo -n $"Shutting down NFS daemon: " > killproc nfsd -2 > echo > if [ -n "$RQUOTAD" -a "$RQUOTAD" != "no" ]; then > echo -n $"Shutting down NFS quotas: " > killproc rpc.rquotad > RETVAL=$? > echo > fi > # Reset the lockd ports if they were set > if [ -n "$LOCKD_TCPPORT" ]; then > /sbin/sysctl -w fs.nfs.nlm_tcpport=0 >/dev/null 2>&1 > fi > if [ -n "$LOCKD_UDPPORT" ]; then > /sbin/sysctl -w fs.nfs.nlm_udpport=0 >/dev/null 2>&1 > fi > # Do it the last so that clients can still access the server > # when the server is running. > cnt=`/usr/sbin/exportfs -v | /usr/bin/wc -l` > if [ $cnt -gt 0 ]; then > action $"Shutting down NFS services: " /usr/sbin/exportfs -au > else > action $"Shutting down NFS services: " /bin/false > fi > [ -x /usr/sbin/rpc.svcgssd ] && /sbin/service rpcsvcgssd stop > rm -f /var/lock/subsys/nfs > ;; > status) > [ -x /usr/sbin/rpc.svcgssd ] && /sbin/service rpcsvcgssd status > status rpc.mountd > status nfsd > if [ -n "$RQUOTAD" -a "$RQUOTAD" != "no" ]; then > status rpc.rquotad > fi > RETVAL=$? > ;; > restart) > $0 stop > $0 start > ;; > reload) > /usr/sbin/exportfs -r > touch /var/lock/subsys/nfs > ;; > probe) > if [ ! -f /var/lock/subsys/nfs ] ; then > echo $"start"; exit 0 > fi > /sbin/pidof rpc.mountd >/dev/null 2>&1; MOUNTD="$?" > /sbin/pidof nfsd >/dev/null 2>&1; NFSD="$?" > if [ $MOUNTD = 1 -o $NFSD = 1 ] ; then > echo $"restart"; exit 0 > fi > if [ /etc/exports -nt /var/lock/subsys/nfs ] ; then > echo $"reload"; exit 0 > fi > ;; > condrestart) > [ -x /usr/sbin/rpc.svcgssd ] && /sbin/service rpcsvcgssd condrestart > [ -f /var/lock/subsys/nfs ] && { > $0 stop > $0 start > } > ;; > *) > echo $"Usage: nfs {start|stop|status|restart|reload|condrestart}" > RETVAL=3 > ;; > esac > > exit $RETVAL > > > >> --b. > _______________________________________________ > pNFS mailing list > pNFS@xxxxxxxxxxxxx > http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs -- Benny Halevy Software Architect Panasas, Inc. bhalevy@xxxxxxxxxxx Tel/Fax: +972-3-647-8340 Mobile: +972-54-802-8340 Panasas: The Leader in Parallel Storage www.panasas.com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html