* Re: nfsd/sunrpc boot on reboot in 2.5.44
2002-10-20 17:31 nfsd/sunrpc boot on reboot in 2.5.44 bert hubert
@ 2002-10-20 18:21 ` bert hubert
2002-10-20 23:21 ` Hirokazu Takahashi
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: bert hubert @ 2002-10-20 18:21 UTC (permalink / raw)
To: linux-kernel, neilb
On Sun, Oct 20, 2002 at 07:31:42PM +0200, bert hubert wrote:
> I'm looking if I can reproduce this.
Like clockwork, it happens just after 'Unexporting directories'. If you run
exportfs -au first, nothing happens. the error only happens when the entire
script runs.
stop)
printf "Stopping $DESC: mountd"
start-stop-daemon --stop --oknodo --quiet \
--name rpc.mountd --user 0
printf " nfsd"
start-stop-daemon --stop --oknodo --quiet \
--name nfsd --user 0 --signal 2
echo "."
printf "Unexporting directories for $DESC..."
$PREFIX/sbin/exportfs -au
echo "done."
;;
This is /etc/exports:
# /etc/exports: the access control list for filesystems which may be
exported
# to NFS clients. See exports(5)
/ 10.0.0.0/255.0.0.0(rw)
/mnt 10.0.0.0/255.0.0.0(rw)
Regards,
bert
--
http://www.PowerDNS.com Versatile DNS Software & Services
http://lartc.org Linux Advanced Routing & Traffic Control HOWTO
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: nfsd/sunrpc boot on reboot in 2.5.44
2002-10-20 17:31 nfsd/sunrpc boot on reboot in 2.5.44 bert hubert
2002-10-20 18:21 ` bert hubert
@ 2002-10-20 23:21 ` Hirokazu Takahashi
2002-10-21 3:25 ` Neil Brown
2002-10-21 3:26 ` Neil Brown
3 siblings, 0 replies; 7+ messages in thread
From: Hirokazu Takahashi @ 2002-10-20 23:21 UTC (permalink / raw)
To: ahu; +Cc: linux-kernel, neilb
[-- Attachment #1: Type: Text/Plain, Size: 789 bytes --]
Hello,
I think auth_domain_drop() may call NULL function.
I believe the followin patch will fix your problem.
Can you try it with my patch?
ahu> My Debian sid machine oopses when I run 'sudo reboot'.
ahu>
ahu> $ mount
ahu> /dev/hdb2 on / type ext3 (rw,errors=remount-ro)
ahu> proc on /proc type proc (rw)
ahu> devpts on /dev/pts type devpts (rw,gid=5,mode=620)
ahu> /dev/hdb4 on /mnt type ext2 (rw,errors=remount-ro)
ahu> nodev on /dev/oprofile type oprofilefs (rw)
ahu> /dev/hda1 on /images type ext2 (rw)
ahu>
ahu> No NFS activity involved.
ahu>
ahu> By the way, can anybody tell me how to convert this:
ahu> Oct 20 19:21:32 hubert kernel: [<c8831060>] auth_domain_drop+0x50/0x60 [sunrpc]
ahu>
ahu> To a line in auth_domain_drop()?
ahu>
ahu> I'm looking if I can reproduce this.
[-- Attachment #2: rpcdomain-fix2.5.43.patch --]
[-- Type: Text/Plain, Size: 532 bytes --]
--- linux/net/sunrpc/svcauth.c.ORG Sun Oct 20 15:47:26 2030
+++ linux/net/sunrpc/svcauth.c Sun Oct 20 15:50:37 2030
@@ -143,8 +143,9 @@ static struct cache_head *auth_domain_ta
void auth_domain_drop(struct cache_head *item, struct cache_detail *cd)
{
struct auth_domain *dom = container_of(item, struct auth_domain, h);
- if (cache_put(item,cd))
- authtab[dom->flavour]->domain_release(dom);
+ void (*fn)(struct auth_domain *) = authtab[dom->flavour]->domain_release;
+ if (cache_put(item,cd) && fn != NULL)
+ fn(dom);
}
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: nfsd/sunrpc boot on reboot in 2.5.44
2002-10-20 17:31 nfsd/sunrpc boot on reboot in 2.5.44 bert hubert
2002-10-20 18:21 ` bert hubert
2002-10-20 23:21 ` Hirokazu Takahashi
@ 2002-10-21 3:25 ` Neil Brown
2002-10-21 3:26 ` Neil Brown
3 siblings, 0 replies; 7+ messages in thread
From: Neil Brown @ 2002-10-21 3:25 UTC (permalink / raw)
To: bert hubert; +Cc: linux-kernel, nfs
On Sunday October 20, ahu@ds9a.nl wrote:
> My Debian sid machine oopses when I run 'sudo reboot'.
>
Sorry 'bout that. Appended patch should fix it.
When the last daemon exits all exports are automatically unexported,
and it was releasing too much so when "exportfs -a" came along it
tried to access some deallocated data strctures.
NeilBrown
-------------------------
Fix nfs shutdown problem.
The 'unexport everything' that happens when the
last nfsd thread dies was shuting down too much -
things that should only be shut down on module unload.
----------- Diffstat output ------------
./fs/nfsd/export.c | 31 ++++++++++++-------------------
./fs/nfsd/nfssvc.c | 2 +-
./include/linux/nfsd/export.h | 1 +
./net/sunrpc/sunrpc_syms.c | 1 +
4 files changed, 15 insertions(+), 20 deletions(-)
--- ./fs/nfsd/export.c 2002/10/20 23:48:51 1.1
+++ ./fs/nfsd/export.c 2002/10/21 03:23:44 1.2
@@ -738,23 +738,6 @@ exp_do_unexport(svc_export *unexp)
exp_fsid_unhash(unexp);
}
-/*
- * Revoke all exports for a given client.
- */
-static void
-exp_unexport_all(svc_client *clp)
-{
- struct svc_export *exp;
- int index;
-
- dprintk("unexporting all fs's for clnt %p\n", clp);
-
- cache_for_each(exp, &svc_export_cache, index, h)
- if (exp->ex_client == clp)
- exp_do_unexport(exp);
- cache_flush();
-
-}
/*
* unexport syscall.
@@ -1109,6 +1092,18 @@ nfsd_export_init(void)
}
/*
+ * Flush exports table - called when last nfsd thread is killed
+ */
+void
+nfsd_export_flush(void)
+{
+ exp_writelock();
+ cache_purge(&svc_expkey_cache);
+ cache_purge(&svc_export_cache);
+ exp_writeunlock();
+}
+
+/*
* Shutdown the exports module.
*/
void
@@ -1119,8 +1114,6 @@ nfsd_export_shutdown(void)
exp_writelock();
- exp_unexport_all(NULL);
-
if (cache_unregister(&svc_expkey_cache))
printk(KERN_ERR "nfsd: failed to unregister expkey cache\n");
if (cache_unregister(&svc_export_cache))
--- ./fs/nfsd/nfssvc.c 2002/10/20 23:53:59 1.1
+++ ./fs/nfsd/nfssvc.c 2002/10/21 03:23:44 1.2
@@ -238,7 +238,7 @@ nfsd(struct svc_rqst *rqstp)
printk(KERN_WARNING "nfsd: last server has exited\n");
if (err != SIG_NOCLEAN) {
printk(KERN_WARNING "nfsd: unexporting all filesystems\n");
- nfsd_export_shutdown();
+ nfsd_export_flush();
}
nfsd_serv = NULL;
nfsd_racache_shutdown(); /* release read-ahead cache */
--- ./include/linux/nfsd/export.h 2002/10/20 23:53:38 1.1
+++ ./include/linux/nfsd/export.h 2002/10/21 03:23:44 1.2
@@ -83,6 +83,7 @@ struct svc_expkey {
*/
void nfsd_export_init(void);
void nfsd_export_shutdown(void);
+void nfsd_export_flush(void);
void exp_readlock(void);
void exp_readunlock(void);
struct svc_expkey * exp_find_key(struct auth_domain *clp,
--- ./net/sunrpc/sunrpc_syms.c 2002/10/20 23:53:09 1.1
+++ ./net/sunrpc/sunrpc_syms.c 2002/10/21 03:23:44 1.2
@@ -101,6 +101,7 @@ EXPORT_SYMBOL(auth_unix_lookup);
EXPORT_SYMBOL(cache_check);
EXPORT_SYMBOL(cache_clean);
EXPORT_SYMBOL(cache_flush);
+EXPORT_SYMBOL(cache_purge);
EXPORT_SYMBOL(cache_fresh);
EXPORT_SYMBOL(cache_init);
EXPORT_SYMBOL(cache_register);
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: nfsd/sunrpc boot on reboot in 2.5.44
2002-10-20 17:31 nfsd/sunrpc boot on reboot in 2.5.44 bert hubert
` (2 preceding siblings ...)
2002-10-21 3:25 ` Neil Brown
@ 2002-10-21 3:26 ` Neil Brown
2002-10-21 6:34 ` bert hubert
3 siblings, 1 reply; 7+ messages in thread
From: Neil Brown @ 2002-10-21 3:26 UTC (permalink / raw)
To: bert hubert; +Cc: linux-kernel
On Sunday October 20, ahu@ds9a.nl wrote:
>
> By the way, can anybody tell me how to convert this:
> Oct 20 19:21:32 hubert kernel: [<c8831060>] auth_domain_drop+0x50/0x60 [sunrpc]
>
> To a line in auth_domain_drop()?
>
gdb sunrpc.o
disassemble auth_domain_drop
stare at assembler listing, stare at source code....
NeilBrown
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: nfsd/sunrpc boot on reboot in 2.5.44
2002-10-21 3:26 ` Neil Brown
@ 2002-10-21 6:34 ` bert hubert
2002-10-21 14:37 ` Kai Germaschewski
0 siblings, 1 reply; 7+ messages in thread
From: bert hubert @ 2002-10-21 6:34 UTC (permalink / raw)
To: Neil Brown; +Cc: linux-kernel
On Mon, Oct 21, 2002 at 01:26:26PM +1000, Neil Brown wrote:
> > By the way, can anybody tell me how to convert this:
> > Oct 20 19:21:32 hubert kernel: [<c8831060>] auth_domain_drop+0x50/0x60 [sunrpc]
> >
> > To a line in auth_domain_drop()?
>
> gdb sunrpc.o
> disassemble auth_domain_drop
>
> stare at assembler listing, stare at source code....
I also found this to work:
touch sunrpc.c
make
[ observe how sunrpc.o gets compiled ]
[ add a -g to the commandline ]
gdb sunrpc.o
l *(auth_domain_drop+0x50)
"A #kernelnewbies discovery".
Thanks for the switch patch! Will check if it helps.
Regards,
bert hubert
--
http://www.PowerDNS.com Versatile DNS Software & Services
http://lartc.org Linux Advanced Routing & Traffic Control HOWTO
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: nfsd/sunrpc boot on reboot in 2.5.44
2002-10-21 6:34 ` bert hubert
@ 2002-10-21 14:37 ` Kai Germaschewski
0 siblings, 0 replies; 7+ messages in thread
From: Kai Germaschewski @ 2002-10-21 14:37 UTC (permalink / raw)
To: bert hubert; +Cc: Neil Brown, linux-kernel
On Mon, 21 Oct 2002, bert hubert wrote:
> I also found this to work:
>
> touch sunrpc.c
> make
> [ observe how sunrpc.o gets compiled ]
> [ add a -g to the commandline ]
> gdb sunrpc.o
> l *(auth_domain_drop+0x50)
Or even
make fs/sunrpc/svc_auth.lst
and stare at fs/sunrpc/svc_auth.lst ;)
(it also gives you a svc_auth.o compiled with -g, so you can use the gdb
thing above, too)
--Kai
^ permalink raw reply [flat|nested] 7+ messages in thread