Andrew Morton's [interview] latest patchset, 2.6.3-rc1-mm1 [story], seems to have some issues with nfsd. A user on the Kernel Mailing List stated that after his upgrade, "Exportfs just hangs". Andrew released a patch for this soon after the release, which can be found here. Read on for more information.
From: Philippe Gramoullé [email blocked] To: Kernel Mailing List [email blocked] Date: Mon, 9 Feb 2004 15:18:18 +0100 Subject: Re: 2.6.3-rc1-mm1 Hello Andrew, On Mon, 9 Feb 2004 01:40:35 -0800 Andrew Morton [email blocked] wrote: | | | ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.3-rc1/2.6.3-rc1-mm1/ | | | - NFSD update | Starting with 2.6.3-rc1-mm1, nfsd isn't working any more. Exportfs just hangs. Previous version (2.6.2-mm1) worked fine. Reverting the following patches makes it work again: nfsd-01-schedule-in-spinlock-fix.patch nfsd-02-ip_map_init-kmalloc-check.patch nfsd-03-sunrpc-cache-init-fixes.patch nfsd-04-convert-proc-to-seq_file.patch nfsd-05-no-procfs-build-fix.patch You can find my .config here: http://philou.org/linux/2.6.3-rc1-mm1/config-2.6.3-rc1-mm1 You can find an strace of the nfsd server startup as well as a sysrq-t capture here: http://philou.org/linux/2.6.3-rc1-mm1/nfsd-sysrq.txt System is a Dell 2650 SMP (ia32), running Debian Sid. Thanks, Philippe -- Philippe Gramoullé [email blocked] Senior System and Network Architect Lycos Europe
From: Andrew Morton [email blocked] To: Kernel Mailing List [email blocked] Subject Re: 2.6.3-rc1-mm1 Date: Mon, 9 Feb 2004 15:58:23 -0800 Philippe Gramoullé [email blocked] wrote: > Starting with 2.6.3-rc1-mm1, nfsd isn't working any more. Exportfs just hangs. Yes, sorry. The nfsd patches had a painful birth. This chunk got lost. --- 25/net/sunrpc/svcauth.c~nfsd-02-sunrpc-cache-init-fixes Mon Feb 9 14:04:03 2004 +++ 25-akpm/net/sunrpc/svcauth.c Mon Feb 9 14:06:26 2004 @@ -150,7 +150,13 @@ DefineCacheLookup(struct auth_domain, &auth_domain_cache, auth_domain_hash(item), auth_domain_match(tmp, item), - kfree(new); if(!set) return NULL; + kfree(new); if(!set) { + if (new) + write_unlock(&auth_domain_cache.hash_lock); + else + read_unlock(&auth_domain_cache.hash_lock); + return NULL; + } new=item; atomic_inc(&new->h.refcnt), /* no update */, 0 /* no inplace updates */ _