2006-08-10 19:21:43

by Chuck Lever

[permalink] [raw]
Subject: rpc.idmapd oops with latest NFS bits from your web site

I ran connectathon basic tests 20 times against a Linux NFSv3 server.
At the end of the test I got this oops. This is repeatable, but not
100% of the time.

My test client is a dual core 1.83GHz laptop running over GbE. FC5 is
installed. Mount options are "rw,intr,tcp,vers=3"

Aug 10 15:16:31 picasso kernel: BUG: unable to handle kernel paging
request at virtual address 6b6b6bc3
Aug 10 15:16:31 picasso kernel: printing eip:
Aug 10 15:16:31 picasso kernel: c015a1dc
Aug 10 15:16:31 picasso kernel: *pde = 00000000
Aug 10 15:16:31 picasso kernel: Oops: 0000 [#1]
Aug 10 15:16:31 picasso kernel: SMP
Aug 10 15:16:31 picasso kernel: Modules linked in: nfs lockd nfs_acl
sunrpc ext3 jbd dm_mirror dm_mod parport_pc parport usbhid nvram
uhci_hcd ehci_hcd sr_mod snd_hda_intel snd_hda_codec snd_seq_dummy
snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss
snd_mixer_oss tg3 snd_pcm i2c_i801 snd_timer snd
soundcore intel_agp snd_page_alloc i2c_core agpgart rtc usbcore xfs
ata_piix libata sd_mod scsi_mod
Aug 10 15:16:31 picasso kernel: CPU: 1
Aug 10 15:16:31 picasso kernel: EIP: 0060:[<c015a1dc>] Not tainted VLI
Aug 10 15:16:31 picasso kernel: EFLAGS: 00010202 (2.6.18-rc4 #2)
Aug 10 15:16:31 picasso kernel: EIP is at cdev_put+0x8/0x3d
Aug 10 15:16:31 picasso kernel: eax: 6b6b6b6b ebx: 40000010 ecx:
00000000 edx: f6a26604
Aug 10 15:16:31 picasso kernel: esi: f6a26604 edi: f5532984 ebp:
f7f5df60 esp: f7f5df5c
Aug 10 15:16:31 picasso kernel: ds: 007b es: 007b ss: 0068
Aug 10 15:16:31 picasso kernel: Process rpc.idmapd (pid: 3203,
ti=f7f5d000 task=f711f4d0 task.ti=f7f5d000)
Aug 10 15:16:31 picasso kernel: Stack: 40000010 f7f5df80 c01538df
f5302124 f6e77370 f6a26604 f5532984 f7f56ca8
Aug 10 15:16:31 picasso kernel: 00000000 f7f5df88 c015398e
f7f5df9c c01512dd f7f56ca8 00000009 f7f56d28
Aug 10 15:16:31 picasso kernel: f7f5dfb4 c0152544 f5532984
00000009 80014940 80013810 f7f5d000 c01028f1
Aug 10 15:16:31 picasso kernel: Call Trace:
Aug 10 15:16:31 picasso kernel: [<c01538df>] __fput+0xc5/0x15d
Aug 10 15:16:31 picasso kernel: [<c015398e>] fput+0x17/0x19
Aug 10 15:16:31 picasso kernel: [<c01512dd>] filp_close+0x51/0x5b
Aug 10 15:16:31 picasso kernel: [<c0152544>] sys_close+0x7b/0x8f
Aug 10 15:16:31 picasso kernel: [<c01028f1>] sysenter_past_esp+0x56/0x8d
Aug 10 15:16:31 picasso kernel: DWARF2 unwinder stuck at
sysenter_past_esp+0x56/0x8d
Aug 10 15:16:31 picasso kernel: Leftover inexact backtrace:
Aug 10 15:16:31 picasso kernel: [<c0103b98>] show_stack_log_lvl+0x8c/0x97
Aug 10 15:16:31 picasso kernel: [<c0103ccf>] show_registers+0x12c/0x199
Aug 10 15:16:31 picasso kernel: [<c0103ebd>] die+0x181/0x26d
Aug 10 15:16:31 picasso kernel: [<c02d55ab>] do_page_fault+0x3e5/0x4ad
Aug 10 15:16:31 picasso kernel: [<c01035a9>] error_code+0x39/0x40
Aug 10 15:16:31 picasso kernel: [<c01538df>] __fput+0xc5/0x15d
Aug 10 15:16:31 picasso kernel: [<c015398e>] fput+0x17/0x19
Aug 10 15:16:31 picasso kernel: [<c01512dd>] filp_close+0x51/0x5b
Aug 10 15:16:31 picasso kernel: [<c0152544>] sys_close+0x7b/0x8f
Aug 10 15:16:31 picasso kernel: [<c01028f1>] sysenter_past_esp+0x56/0x8d
Aug 10 15:16:31 picasso kernel: Code: c3 55 89 e5 89 50 68 89 48 6c 50
68 79 a2 15 c0 68 24 a0 15 c0 6a 00 a1 20 58 61 c0 e8 69 ee 0b 00 c9
c3 55 89 e5 53 85
c0 74 32 <8b> 58 58 e8 ae f7 04 00 85 db 74 26 89 e0 25 00 f0 ff ff 8b 40
Aug 10 15:16:31 picasso kernel: EIP: [<c015a1dc>] cdev_put+0x8/0x3d
SS:ESP 0068:f7f5df5c

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs


2006-08-10 19:35:17

by Trond Myklebust

[permalink] [raw]
Subject: Re: rpc.idmapd oops with latest NFS bits from your web site

What is cdev_put(). Isn't that the tty layer?

Cheers,
Trond

On Thu, 2006-08-10 at 15:21 -0400, Chuck Lever wrote:
> I ran connectathon basic tests 20 times against a Linux NFSv3 server.
> At the end of the test I got this oops. This is repeatable, but not
> 100% of the time.
>
> My test client is a dual core 1.83GHz laptop running over GbE. FC5 is
> installed. Mount options are "rw,intr,tcp,vers=3"
>
> Aug 10 15:16:31 picasso kernel: BUG: unable to handle kernel paging
> request at virtual address 6b6b6bc3
> Aug 10 15:16:31 picasso kernel: printing eip:
> Aug 10 15:16:31 picasso kernel: c015a1dc
> Aug 10 15:16:31 picasso kernel: *pde = 00000000
> Aug 10 15:16:31 picasso kernel: Oops: 0000 [#1]
> Aug 10 15:16:31 picasso kernel: SMP
> Aug 10 15:16:31 picasso kernel: Modules linked in: nfs lockd nfs_acl
> sunrpc ext3 jbd dm_mirror dm_mod parport_pc parport usbhid nvram
> uhci_hcd ehci_hcd sr_mod snd_hda_intel snd_hda_codec snd_seq_dummy
> snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss
> snd_mixer_oss tg3 snd_pcm i2c_i801 snd_timer snd
> soundcore intel_agp snd_page_alloc i2c_core agpgart rtc usbcore xfs
> ata_piix libata sd_mod scsi_mod
> Aug 10 15:16:31 picasso kernel: CPU: 1
> Aug 10 15:16:31 picasso kernel: EIP: 0060:[<c015a1dc>] Not tainted VLI
> Aug 10 15:16:31 picasso kernel: EFLAGS: 00010202 (2.6.18-rc4 #2)
> Aug 10 15:16:31 picasso kernel: EIP is at cdev_put+0x8/0x3d
> Aug 10 15:16:31 picasso kernel: eax: 6b6b6b6b ebx: 40000010 ecx:
> 00000000 edx: f6a26604
> Aug 10 15:16:31 picasso kernel: esi: f6a26604 edi: f5532984 ebp:
> f7f5df60 esp: f7f5df5c
> Aug 10 15:16:31 picasso kernel: ds: 007b es: 007b ss: 0068
> Aug 10 15:16:31 picasso kernel: Process rpc.idmapd (pid: 3203,
> ti=f7f5d000 task=f711f4d0 task.ti=f7f5d000)
> Aug 10 15:16:31 picasso kernel: Stack: 40000010 f7f5df80 c01538df
> f5302124 f6e77370 f6a26604 f5532984 f7f56ca8
> Aug 10 15:16:31 picasso kernel: 00000000 f7f5df88 c015398e
> f7f5df9c c01512dd f7f56ca8 00000009 f7f56d28
> Aug 10 15:16:31 picasso kernel: f7f5dfb4 c0152544 f5532984
> 00000009 80014940 80013810 f7f5d000 c01028f1
> Aug 10 15:16:31 picasso kernel: Call Trace:
> Aug 10 15:16:31 picasso kernel: [<c01538df>] __fput+0xc5/0x15d
> Aug 10 15:16:31 picasso kernel: [<c015398e>] fput+0x17/0x19
> Aug 10 15:16:31 picasso kernel: [<c01512dd>] filp_close+0x51/0x5b
> Aug 10 15:16:31 picasso kernel: [<c0152544>] sys_close+0x7b/0x8f
> Aug 10 15:16:31 picasso kernel: [<c01028f1>] sysenter_past_esp+0x56/0x8d
> Aug 10 15:16:31 picasso kernel: DWARF2 unwinder stuck at
> sysenter_past_esp+0x56/0x8d
> Aug 10 15:16:31 picasso kernel: Leftover inexact backtrace:
> Aug 10 15:16:31 picasso kernel: [<c0103b98>] show_stack_log_lvl+0x8c/0x97
> Aug 10 15:16:31 picasso kernel: [<c0103ccf>] show_registers+0x12c/0x199
> Aug 10 15:16:31 picasso kernel: [<c0103ebd>] die+0x181/0x26d
> Aug 10 15:16:31 picasso kernel: [<c02d55ab>] do_page_fault+0x3e5/0x4ad
> Aug 10 15:16:31 picasso kernel: [<c01035a9>] error_code+0x39/0x40
> Aug 10 15:16:31 picasso kernel: [<c01538df>] __fput+0xc5/0x15d
> Aug 10 15:16:31 picasso kernel: [<c015398e>] fput+0x17/0x19
> Aug 10 15:16:31 picasso kernel: [<c01512dd>] filp_close+0x51/0x5b
> Aug 10 15:16:31 picasso kernel: [<c0152544>] sys_close+0x7b/0x8f
> Aug 10 15:16:31 picasso kernel: [<c01028f1>] sysenter_past_esp+0x56/0x8d
> Aug 10 15:16:31 picasso kernel: Code: c3 55 89 e5 89 50 68 89 48 6c 50
> 68 79 a2 15 c0 68 24 a0 15 c0 6a 00 a1 20 58 61 c0 e8 69 ee 0b 00 c9
> c3 55 89 e5 53 85
> c0 74 32 <8b> 58 58 e8 ae f7 04 00 85 db 74 26 89 e0 25 00 f0 ff ff 8b 40
> Aug 10 15:16:31 picasso kernel: EIP: [<c015a1dc>] cdev_put+0x8/0x3d
> SS:ESP 0068:f7f5df5c


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs

2006-08-10 19:45:34

by Chuck Lever

[permalink] [raw]
Subject: Re: rpc.idmapd oops with latest NFS bits from your web site

Yeah. I'd say something is overwriting i_cdev with garbarge. Then
__fput sees that i_cdev is not NULL and tries to call cdev_put with a
bogus address.

On 8/10/06, Trond Myklebust <[email protected]> wrote:
> What is cdev_put(). Isn't that the tty layer?
>
> Cheers,
> Trond
>
> On Thu, 2006-08-10 at 15:21 -0400, Chuck Lever wrote:
> > I ran connectathon basic tests 20 times against a Linux NFSv3 server.
> > At the end of the test I got this oops. This is repeatable, but not
> > 100% of the time.
> >
> > My test client is a dual core 1.83GHz laptop running over GbE. FC5 is
> > installed. Mount options are "rw,intr,tcp,vers=3"
> >
> > Aug 10 15:16:31 picasso kernel: BUG: unable to handle kernel paging
> > request at virtual address 6b6b6bc3
> > Aug 10 15:16:31 picasso kernel: printing eip:
> > Aug 10 15:16:31 picasso kernel: c015a1dc
> > Aug 10 15:16:31 picasso kernel: *pde = 00000000
> > Aug 10 15:16:31 picasso kernel: Oops: 0000 [#1]
> > Aug 10 15:16:31 picasso kernel: SMP
> > Aug 10 15:16:31 picasso kernel: Modules linked in: nfs lockd nfs_acl
> > sunrpc ext3 jbd dm_mirror dm_mod parport_pc parport usbhid nvram
> > uhci_hcd ehci_hcd sr_mod snd_hda_intel snd_hda_codec snd_seq_dummy
> > snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss
> > snd_mixer_oss tg3 snd_pcm i2c_i801 snd_timer snd
> > soundcore intel_agp snd_page_alloc i2c_core agpgart rtc usbcore xfs
> > ata_piix libata sd_mod scsi_mod
> > Aug 10 15:16:31 picasso kernel: CPU: 1
> > Aug 10 15:16:31 picasso kernel: EIP: 0060:[<c015a1dc>] Not tainted VLI
> > Aug 10 15:16:31 picasso kernel: EFLAGS: 00010202 (2.6.18-rc4 #2)
> > Aug 10 15:16:31 picasso kernel: EIP is at cdev_put+0x8/0x3d
> > Aug 10 15:16:31 picasso kernel: eax: 6b6b6b6b ebx: 40000010 ecx:
> > 00000000 edx: f6a26604
> > Aug 10 15:16:31 picasso kernel: esi: f6a26604 edi: f5532984 ebp:
> > f7f5df60 esp: f7f5df5c
> > Aug 10 15:16:31 picasso kernel: ds: 007b es: 007b ss: 0068
> > Aug 10 15:16:31 picasso kernel: Process rpc.idmapd (pid: 3203,
> > ti=f7f5d000 task=f711f4d0 task.ti=f7f5d000)
> > Aug 10 15:16:31 picasso kernel: Stack: 40000010 f7f5df80 c01538df
> > f5302124 f6e77370 f6a26604 f5532984 f7f56ca8
> > Aug 10 15:16:31 picasso kernel: 00000000 f7f5df88 c015398e
> > f7f5df9c c01512dd f7f56ca8 00000009 f7f56d28
> > Aug 10 15:16:31 picasso kernel: f7f5dfb4 c0152544 f5532984
> > 00000009 80014940 80013810 f7f5d000 c01028f1
> > Aug 10 15:16:31 picasso kernel: Call Trace:
> > Aug 10 15:16:31 picasso kernel: [<c01538df>] __fput+0xc5/0x15d
> > Aug 10 15:16:31 picasso kernel: [<c015398e>] fput+0x17/0x19
> > Aug 10 15:16:31 picasso kernel: [<c01512dd>] filp_close+0x51/0x5b
> > Aug 10 15:16:31 picasso kernel: [<c0152544>] sys_close+0x7b/0x8f
> > Aug 10 15:16:31 picasso kernel: [<c01028f1>] sysenter_past_esp+0x56/0x8d
> > Aug 10 15:16:31 picasso kernel: DWARF2 unwinder stuck at
> > sysenter_past_esp+0x56/0x8d
> > Aug 10 15:16:31 picasso kernel: Leftover inexact backtrace:
> > Aug 10 15:16:31 picasso kernel: [<c0103b98>] show_stack_log_lvl+0x8c/0x97
> > Aug 10 15:16:31 picasso kernel: [<c0103ccf>] show_registers+0x12c/0x199
> > Aug 10 15:16:31 picasso kernel: [<c0103ebd>] die+0x181/0x26d
> > Aug 10 15:16:31 picasso kernel: [<c02d55ab>] do_page_fault+0x3e5/0x4ad
> > Aug 10 15:16:31 picasso kernel: [<c01035a9>] error_code+0x39/0x40
> > Aug 10 15:16:31 picasso kernel: [<c01538df>] __fput+0xc5/0x15d
> > Aug 10 15:16:31 picasso kernel: [<c015398e>] fput+0x17/0x19
> > Aug 10 15:16:31 picasso kernel: [<c01512dd>] filp_close+0x51/0x5b
> > Aug 10 15:16:31 picasso kernel: [<c0152544>] sys_close+0x7b/0x8f
> > Aug 10 15:16:31 picasso kernel: [<c01028f1>] sysenter_past_esp+0x56/0x8d
> > Aug 10 15:16:31 picasso kernel: Code: c3 55 89 e5 89 50 68 89 48 6c 50
> > 68 79 a2 15 c0 68 24 a0 15 c0 6a 00 a1 20 58 61 c0 e8 69 ee 0b 00 c9
> > c3 55 89 e5 53 85
> > c0 74 32 <8b> 58 58 e8 ae f7 04 00 85 db 74 26 89 e0 25 00 f0 ff ff 8b 40
> > Aug 10 15:16:31 picasso kernel: EIP: [<c015a1dc>] cdev_put+0x8/0x3d
> > SS:ESP 0068:f7f5df5c
>
>


--
"We who cut mere stones must always be envisioning cathedrals"
-- Quarry worker's creed

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs

2006-08-10 19:50:36

by J. Bruce Fields

[permalink] [raw]
Subject: Re: rpc.idmapd oops with latest NFS bits from your web site

On Thu, Aug 10, 2006 at 03:21:41PM -0400, Chuck Lever wrote:
> I ran connectathon basic tests 20 times against a Linux NFSv3 server.
> At the end of the test I got this oops. This is repeatable, but not
> 100% of the time.

The oops is from the client?

--b.

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs

2006-08-10 19:51:31

by Chuck Lever

[permalink] [raw]
Subject: Re: rpc.idmapd oops with latest NFS bits from your web site

On 8/10/06, J. Bruce Fields <[email protected]> wrote:
> On Thu, Aug 10, 2006 at 03:21:41PM -0400, Chuck Lever wrote:
> > I ran connectathon basic tests 20 times against a Linux NFSv3 server.
> > At the end of the test I got this oops. This is repeatable, but not
> > 100% of the time.
>
> The oops is from the client?

Yessir.

--
"We who cut mere stones must always be envisioning cathedrals"
-- Quarry worker's creed

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs

2006-08-11 14:35:04

by Chuck Lever

[permalink] [raw]
Subject: Re: rpc.idmapd oops with latest NFS bits from your web site

On 8/10/06, Trond Myklebust <[email protected]> wrote:
> On Thu, 2006-08-10 at 15:45 -0400, Chuck Lever wrote:
> > Yeah. I'd say something is overwriting i_cdev with garbarge. Then
> > __fput sees that i_cdev is not NULL and tries to call cdev_put with a
> > bogus address.
>
> Looks like something is calling fput() on a file pointing to an inode
> that has already been freed. 6b6b6b6b is the mark of the poisoned slab
> entry.
>
> Hmm.... Does the attached patch fix it for you?

Unfortunately, no. Exact same symptoms.


> ---------- Forwarded message ----------
> From: Trond Myklebust <[email protected]>
> To:
> Date: Thu, 10 Aug 2006 17:44:24 -0400
> Subject: No Subject
> Signed-off-by: Trond Myklebust <[email protected]>
> ---
>
> net/sunrpc/rpc_pipe.c | 17 ++++++++++-------
> 1 files changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
> index 9c355e1..0b1a1ac 100644
> --- a/net/sunrpc/rpc_pipe.c
> +++ b/net/sunrpc/rpc_pipe.c
> @@ -539,6 +539,7 @@ repeat:
> rpc_close_pipes(dentry->d_inode);
> simple_unlink(dir, dentry);
> }
> + inode_dir_notify(dir, DN_DELETE);
> dput(dentry);
> } while (n);
> goto repeat;
> @@ -610,8 +611,8 @@ __rpc_rmdir(struct inode *dir, struct de
> int error;
>
> shrink_dcache_parent(dentry);
> - if (dentry->d_inode)
> - rpc_close_pipes(dentry->d_inode);
> + if (d_unhashed(dentry))
> + return 0;
> if ((error = simple_rmdir(dir, dentry)) != 0)
> return error;
> if (!error) {
> @@ -747,13 +748,15 @@ rpc_unlink(struct dentry *dentry)
> parent = dget_parent(dentry);
> dir = parent->d_inode;
> mutex_lock_nested(&dir->i_mutex, I_MUTEX_PARENT);
> - d_drop(dentry);
> - if (dentry->d_inode) {
> - rpc_close_pipes(dentry->d_inode);
> - error = simple_unlink(dir, dentry);
> + if (!d_unhashed(dentry)) {
> + d_drop(dentry);
> + if (dentry->d_inode) {
> + rpc_close_pipes(dentry->d_inode);
> + error = simple_unlink(dir, dentry);
> + }
> + inode_dir_notify(dir, DN_DELETE);
> }
> dput(dentry);
> - inode_dir_notify(dir, DN_DELETE);
> mutex_unlock(&dir->i_mutex);
> dput(parent);
> return error;
>
>
>


--
"We who cut mere stones must always be envisioning cathedrals"
-- Quarry worker's creed

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs

2006-08-15 01:36:55

by Chuck Lever

[permalink] [raw]
Subject: Re: rpc.idmapd oops with latest NFS bits from your web site

On 8/14/06, Trond Myklebust <[email protected]> wrote:
> On Fri, 2006-08-11 at 10:34 -0400, Chuck Lever wrote:
> > On 8/10/06, Trond Myklebust <[email protected]> wrote:
> > > On Thu, 2006-08-10 at 15:45 -0400, Chuck Lever wrote:
> > > > Yeah. I'd say something is overwriting i_cdev with garbarge. Then
> > > > __fput sees that i_cdev is not NULL and tries to call cdev_put with a
> > > > bogus address.
> > >
> > > Looks like something is calling fput() on a file pointing to an inode
> > > that has already been freed. 6b6b6b6b is the mark of the poisoned slab
> > > entry.
> > >
> > > Hmm.... Does the attached patch fix it for you?
> >
> > Unfortunately, no. Exact same symptoms.
>
> OK. I think I've nailed it now. Please try the following patch, which
> has been merged into the NFS git tree...

Yes, this one seems stable.



> ---------- Forwarded message ----------
> From: Trond Myklebust <[email protected]>
> To:
> Date: Mon, 14 Aug 2006 13:26:26 -0400
> Subject: No Subject
> rpc_unlink() and rpc_rmdir() will dput the dentry reference for you.
>
> Signed-off-by: Trond Myklebust <[email protected]>
> ---
>
> fs/nfs/idmap.c | 1 -
> net/sunrpc/auth_gss/auth_gss.c | 1 -
> net/sunrpc/clnt.c | 15 ++++++---------
> 3 files changed, 6 insertions(+), 11 deletions(-)
>
> diff --git a/fs/nfs/idmap.c b/fs/nfs/idmap.c
> index df0be12..07a5dd5 100644
> --- a/fs/nfs/idmap.c
> +++ b/fs/nfs/idmap.c
> @@ -131,7 +131,6 @@ nfs_idmap_delete(struct nfs4_client *clp
> if (!idmap)
> return;
> rpc_unlink(idmap->idmap_dentry);
> - dput(idmap->idmap_dentry);
> clp->cl_idmap = NULL;
> kfree(idmap);
> }
> diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
> index beaa7b8..ef1cf5b 100644
> --- a/net/sunrpc/auth_gss/auth_gss.c
> +++ b/net/sunrpc/auth_gss/auth_gss.c
> @@ -719,7 +719,6 @@ gss_destroy(struct rpc_auth *auth)
>
> gss_auth = container_of(auth, struct gss_auth, rpc_auth);
> rpc_unlink(gss_auth->dentry);
> - dput(gss_auth->dentry);
> gss_auth->dentry = NULL;
> gss_mech_put(gss_auth->mech);
>
> diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
> index d307556..d9eac70 100644
> --- a/net/sunrpc/clnt.c
> +++ b/net/sunrpc/clnt.c
> @@ -184,7 +184,6 @@ rpc_new_client(struct rpc_xprt *xprt, ch
> out_no_auth:
> if (!IS_ERR(clnt->cl_dentry)) {
> rpc_rmdir(clnt->cl_dentry);
> - dput(clnt->cl_dentry);
> rpc_put_mount();
> }
> out_no_path:
> @@ -251,10 +250,8 @@ rpc_clone_client(struct rpc_clnt *clnt)
> new->cl_autobind = 0;
> new->cl_oneshot = 0;
> new->cl_dead = 0;
> - if (!IS_ERR(new->cl_dentry)) {
> + if (!IS_ERR(new->cl_dentry))
> dget(new->cl_dentry);
> - rpc_get_mount();
> - }
> rpc_init_rtt(&new->cl_rtt_default, clnt->cl_xprt->timeout.to_initval);
> if (new->cl_auth)
> atomic_inc(&new->cl_auth->au_count);
> @@ -317,11 +314,15 @@ rpc_destroy_client(struct rpc_clnt *clnt
> clnt->cl_auth = NULL;
> }
> if (clnt->cl_parent != clnt) {
> + if (!IS_ERR(clnt->cl_dentry))
> + dput(clnt->cl_dentry);
> rpc_destroy_client(clnt->cl_parent);
> goto out_free;
> }
> - if (!IS_ERR(clnt->cl_dentry))
> + if (!IS_ERR(clnt->cl_dentry)) {
> rpc_rmdir(clnt->cl_dentry);
> + rpc_put_mount();
> + }
> if (clnt->cl_xprt) {
> xprt_destroy(clnt->cl_xprt);
> clnt->cl_xprt = NULL;
> @@ -331,10 +332,6 @@ rpc_destroy_client(struct rpc_clnt *clnt
> out_free:
> rpc_free_iostats(clnt->cl_metrics);
> clnt->cl_metrics = NULL;
> - if (!IS_ERR(clnt->cl_dentry)) {
> - dput(clnt->cl_dentry);
> - rpc_put_mount();
> - }
> kfree(clnt);
> return 0;
> }
>
>
>


--
"We who cut mere stones must always be envisioning cathedrals"
-- Quarry worker's creed

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs