Hey Neil, Neil Brown wrote: > Hi, > I'd like to put out nfs-utils-1.0.9 by the end of the week. > There is (or will soon be) a -pre1 in > http://www.kernel.org/pub/linux/utils/nfs/ > and > git://linux-nfs.org/nfs-utils > > Recent changes can been seen at > http://linux-nfs.org/cgi-bin/gitweb.cgi?p=nfs-utils;a=log > > If anyone cares to do some testing that would be great. Well using the nfs-utils-1.0.9-pre1 tarball from kernel.org and the recent kernel patch set you posted here is what I found. Starting and stopping nfsds did not kill neither the TCP or UDP connections. There were two problems with this. One, rpc.nfsd was incorrectly increasing nfsd_serv->sv_nrthreads in nfsd_svc() by calling nfsd_create_serv(); (Note: another side effect of this problem was only 7 nfsd process were start instead of 8) So the solution I've come up with is to only have nfsd_create_serv() called when it needs to... basically: if (nfsd_serv == NULL) { error = nfsd_create_serv(); if (error) goto out; } The second problem was an oops that occurred when the sv_nrthreads was incremented correctly... and Neil your going to love this one... ;-) In svc_delete_socket(), sock_release() was being called with a socket that was already closed... The socket was closed by the previous sockfd_put() when svsk->sk_sock->file != NULL... So the code changed from if (svsk->sk_sock->file) sockfd_put(svsk->sk_sock); sock_release(svsk->sk_sock); to if (svsk->sk_sock->file) sockfd_put(svsk->sk_sock); else sock_release(svsk->sk_sock); The reason Neil is going to love this is I asked him to make this change because in my previous testing, the only way I could get the connections to come down was to always call sock_release() even after the fput() of the file pointer... So it appears in Neil's rewrite, fput() is actually doing the release which is how it should work... Once I got the connections to come up and down as expected, I noticed I could not turn off any versions... In the patches I sent Neil, I had to reverse the order of when nfssvc_setfds() and nfssvc_versbits() were called in rpc.nfsd. But in Neil's patch it appears nfssvc_versbits() is expect to be called before nfssvc_setfds(). After I switching the order of those calls... things started to work as expected.. That patches are attached.... steved.