All of lore.kernel.org
 help / color / mirror / Atom feed
* rpc.idmapd oops with latest NFS bits from your web site
@ 2006-08-10 19:21 Chuck Lever
  2006-08-10 19:35 ` Trond Myklebust
  2006-08-10 19:50 ` J. Bruce Fields
  0 siblings, 2 replies; 9+ messages in thread
From: Chuck Lever @ 2006-08-10 19:21 UTC (permalink / raw)
  To: Trond Myklebust; +Cc: Linux NFS Mailing List

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  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: rpc.idmapd oops with latest NFS bits from your web site
  2006-08-10 19:21 rpc.idmapd oops with latest NFS bits from your web site Chuck Lever
@ 2006-08-10 19:35 ` Trond Myklebust
  2006-08-10 19:45   ` Chuck Lever
  2006-08-10 19:50 ` J. Bruce Fields
  1 sibling, 1 reply; 9+ messages in thread
From: Trond Myklebust @ 2006-08-10 19:35 UTC (permalink / raw)
  To: Chuck Lever; +Cc: Linux NFS Mailing List

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  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: rpc.idmapd oops with latest NFS bits from your web site
  2006-08-10 19:35 ` Trond Myklebust
@ 2006-08-10 19:45   ` Chuck Lever
  2006-08-10 21:44     ` Trond Myklebust
  0 siblings, 1 reply; 9+ messages in thread
From: Chuck Lever @ 2006-08-10 19:45 UTC (permalink / raw)
  To: Trond Myklebust; +Cc: Linux NFS Mailing List

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 <trond.myklebust@fys.uio.no> 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  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: rpc.idmapd oops with latest NFS bits from your web site
  2006-08-10 19:21 rpc.idmapd oops with latest NFS bits from your web site Chuck Lever
  2006-08-10 19:35 ` Trond Myklebust
@ 2006-08-10 19:50 ` J. Bruce Fields
  2006-08-10 19:51   ` Chuck Lever
  1 sibling, 1 reply; 9+ messages in thread
From: J. Bruce Fields @ 2006-08-10 19:50 UTC (permalink / raw)
  To: Chuck Lever; +Cc: Linux NFS Mailing List, Trond Myklebust

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  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: rpc.idmapd oops with latest NFS bits from your web site
  2006-08-10 19:50 ` J. Bruce Fields
@ 2006-08-10 19:51   ` Chuck Lever
  0 siblings, 0 replies; 9+ messages in thread
From: Chuck Lever @ 2006-08-10 19:51 UTC (permalink / raw)
  To: J. Bruce Fields; +Cc: Linux NFS Mailing List, Trond Myklebust

On 8/10/06, J. Bruce Fields <bfields@fieldses.org> 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  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: rpc.idmapd oops with latest NFS bits from your web site
  2006-08-10 19:45   ` Chuck Lever
@ 2006-08-10 21:44     ` Trond Myklebust
  2006-08-11 14:34       ` Chuck Lever
  0 siblings, 1 reply; 9+ messages in thread
From: Trond Myklebust @ 2006-08-10 21:44 UTC (permalink / raw)
  To: Chuck Lever; +Cc: Linux NFS Mailing List

[-- Attachment #1: Type: text/plain, Size: 430 bytes --]

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?

Cheers,
  Trond



[-- Attachment #2: linux-2.6.18-fix_rpc_unlink_rmdir_2.dif --]
[-- Type: message/rfc822, Size: 1668 bytes --]

From: Trond Myklebust <Trond.Myklebust@netapp.com>
Subject: No Subject
Date: Thu, 10 Aug 2006 17:44:24 -0400
Message-ID: <1155246264.5826.63.camel@localhost>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
---

 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;

[-- Attachment #3: Type: text/plain, Size: 373 bytes --]

-------------------------------------------------------------------------
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

[-- Attachment #4: Type: text/plain, Size: 140 bytes --]

_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: rpc.idmapd oops with latest NFS bits from your web site
  2006-08-10 21:44     ` Trond Myklebust
@ 2006-08-11 14:34       ` Chuck Lever
  2006-08-14 17:26         ` Trond Myklebust
  0 siblings, 1 reply; 9+ messages in thread
From: Chuck Lever @ 2006-08-11 14:34 UTC (permalink / raw)
  To: Trond Myklebust; +Cc: Linux NFS Mailing List

On 8/10/06, Trond Myklebust <trond.myklebust@fys.uio.no> 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 <Trond.Myklebust@netapp.com>
> To:
> Date: Thu, 10 Aug 2006 17:44:24 -0400
> Subject: No Subject
> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
> ---
>
>  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  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: rpc.idmapd oops with latest NFS bits from your web site
  2006-08-11 14:34       ` Chuck Lever
@ 2006-08-14 17:26         ` Trond Myklebust
  2006-08-15  1:36           ` Chuck Lever
  0 siblings, 1 reply; 9+ messages in thread
From: Trond Myklebust @ 2006-08-14 17:26 UTC (permalink / raw)
  To: Chuck Lever; +Cc: Linux NFS Mailing List

[-- Attachment #1: Type: text/plain, Size: 744 bytes --]

On Fri, 2006-08-11 at 10:34 -0400, Chuck Lever wrote:
> On 8/10/06, Trond Myklebust <trond.myklebust@fys.uio.no> 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...

Cheers,
  Trond

[-- Attachment #2: linux-2.6.18-009-fix_rpc_unlink_rmdir_3.dif --]
[-- Type: message/rfc822, Size: 2730 bytes --]

From: Trond Myklebust <Trond.Myklebust@netapp.com>
Subject: No Subject
Date: Mon, 14 Aug 2006 13:26:26 -0400
Message-ID: <1155576386.5664.97.camel@localhost>

rpc_unlink() and rpc_rmdir() will dput the dentry reference for you.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
---

 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;
 }

[-- Attachment #3: Type: text/plain, Size: 373 bytes --]

-------------------------------------------------------------------------
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

[-- Attachment #4: Type: text/plain, Size: 140 bytes --]

_______________________________________________
NFS maillist  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: rpc.idmapd oops with latest NFS bits from your web site
  2006-08-14 17:26         ` Trond Myklebust
@ 2006-08-15  1:36           ` Chuck Lever
  0 siblings, 0 replies; 9+ messages in thread
From: Chuck Lever @ 2006-08-15  1:36 UTC (permalink / raw)
  To: Trond Myklebust; +Cc: Linux NFS Mailing List

On 8/14/06, Trond Myklebust <trond.myklebust@fys.uio.no> wrote:
> On Fri, 2006-08-11 at 10:34 -0400, Chuck Lever wrote:
> > On 8/10/06, Trond Myklebust <trond.myklebust@fys.uio.no> 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 <Trond.Myklebust@netapp.com>
> 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 <Trond.Myklebust@netapp.com>
> ---
>
>  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  -  NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2006-08-15  1:36 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-10 19:21 rpc.idmapd oops with latest NFS bits from your web site Chuck Lever
2006-08-10 19:35 ` Trond Myklebust
2006-08-10 19:45   ` Chuck Lever
2006-08-10 21:44     ` Trond Myklebust
2006-08-11 14:34       ` Chuck Lever
2006-08-14 17:26         ` Trond Myklebust
2006-08-15  1:36           ` Chuck Lever
2006-08-10 19:50 ` J. Bruce Fields
2006-08-10 19:51   ` Chuck Lever

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.