xfs
[Top] [All Lists]

TAKE 797419 - xfs_iget goes recursive and dies a horrible death

To: lord@xxxxxxx
Subject: TAKE 797419 - xfs_iget goes recursive and dies a horrible death
From: pv@xxxxxxxxxxxxxxxxxxxxxx (lord@xxxxxxx)
Date: Thu, 14 Sep 2000 07:00:06 -0700 (PDT)
Cc: linux-xfs@xxxxxxxxxxx
Reply-to: sgi.bugs.xfs@xxxxxxxxxxxxxxxxx
Sender: owner-linux-xfs@xxxxxxxxxxx
 Submitter : lord                     *Status : closed                      
 Assigned Engineer : lord             *Fixed By : lord                      
*Fixed By Domain : sgi.com            *Closed Date : 09/14/00               
 Priority : 1                         *Modified Date : 09/14/00             
*Modified User : lord                 *Modified User Domain : sgi.com       
*Fix Description :
==========================
ADDITIONAL INFORMATION (CLOSE)
From: lord@xxxxxxx (BugWorks)
Date: Sep 11 2000 01:02:19PM
==========================

Messed up the send line in the take message. Checked in fix
2.4.0-test1-xfs:slinx:74156a

Basic change is to introduce ihold which is iget without the

.....


==========================
ADDITIONAL INFORMATION (TAKE)
From: steve lord <lord@xxxxxxx>
Date: Sep 14 2000 07:00:06AM
[pvnews version: 1.71]
==========================

Once more with feeling....

messing with the vnode flag in here was deadlocking with the nfs call down
from iget. We double trip on the lock in the vnode.

Date:  Wed Sep 13 19:15:33 PDT 2000
Workarea:  jen.americas.sgi.com:/src/lord/xfs-linux.2.4.0-test5

The following file(s) were checked into:
  bonnie.engr.sgi.com:/isms/slinx/2.4.0-test1-xfs


Modid:  2.4.0-test1-xfs:slinx:74362a
linux/fs/xfs/xfs_iget.c - 1.128
        - remove VN_FLAGSET and VN_FLAGCLR calls from xfs_iget, the state is
          not used on Linux, and it can cause a deadlock when called via read_i
node.
Description :
xfs_iget has some conditions where it can end up recalling itself,
this is allowed for, but there are cases in there where two threads
are looking up the same inode which it does not cope with, the end
result is usually this:

xfs_iget_core: ambiguous vns: vp/0xc3012b00, invp/0xc22c1800
Unable to handle kernel NULL pointer dereference at virtual address 00000008
 printing eip:
c889c115
*pde = 00000000

.....


==========================
ADDITIONAL INFORMATION (REOPEN)
From: cattelan@engr (BugWorks)
Date: Sep 13 2000 02:14:23PM
==========================

This mod now causes nfsd to panic the system
when a inode is reopened via and nfs call.


NMI Watchdog detected LOCKUP on CPU0, registers:
CPU:    0
EIP:    0010:[<c889af80>]
EFLAGS: 00000086
eax: 00000287   ebx: c62be000   ecx: c59173d8   edx: c59172cc
esi: c0f9f760   edi: c664a880   ebp: c66f1db0   esp: c66f1d70
ds: 0018   es: 0018   ss: 0018
Process nfsd (pid: 626, stackpage=c66f1000)
Stack: c62be000 c0f9f760 00000001 c6f96700 fffffff3 c664a884 c6cc7980 c758f810
       00000002 00000000 c59172cc 000005c8 016f1db4 00000040 00000000 00000006
       c66f1de4 c8871c12 c0f9f760 c62be000 00000000 00400044 00000000 00000000
Call Trace: [<c8871c12>] [<c889a9fa>] [<c8899c1c>] [<c014587a>] [<c0145be1>] [<c
88eecdd>] [<c88ef15c>]
       [<c88ef6d9>] [<c88edbf1>] [<c88fd3a0>] [<c88ed5a3>] [<c88fd3a0>] [<c88b86
4a>] [<c88fdf24>] [<c88fd820>]
       [<c88fd2d8>] [<c88ed354>] [<c0108d2b>]
Code: f3 90 7e f8 e9 7a 69 fd ff 80 7e 18 00 f3 90 7e f8 e9 90 69

Entering kdb (current=0xc66f0000, pid 626) on processor 0 due to WatchDog Interr
upt @ 0xc889af80
eax = 0x00000287 ebx = 0xc62be000 ecx = 0xc59173d8 edx = 0xc59172cc
esi = 0xc0f9f760 edi = 0xc664a880 esp = 0xc66f1d70 eip = 0xc889af80
ebp = 0xc66f1db0  ss = 0x00000018  cs = 0x00000010 eflags = 0x00000086
 ds = 0xc0f90018  es = 0xc66f0018 origeax = 0x00000287 &regs = 0xc66f1d3c

[0]kdb> bt
    EBP       EIP         Function(args)
           0xc889af80 [xfs].text.lock+0xdb
                               xfs .text.lock 0xc889aea5 0xc889aea5 0xc889b5f2
0xc66f1db0 0xc8871903 [xfs]xfs_iget_core+0x3fb (0xc0f9f760, 0xc62be000, 0x0, 0x4
00044, 0x0)
                               xfs .text 0xc8842060 0xc8871508 0xc8871bac
0xc66f1de4 0xc8871c12 [xfs]xfs_vn_iget+0x2e (0xc0f9f760, 0xc62be000, 0x0, 0x4000
44, 0x0)
                               xfs .text 0xc8842060 0xc8871be4 0xc8871c1c
0xc66f1e28 0xc889a9fa [xfs]vn_initialize+0xc6 (0xc7daaa60, 0xc0f9f680, 0x1)
                               xfs .text 0xc8842060 0xc889a934 0xc889aa6c
0xc66f1e40 0xc8899c1c [xfs]linvfs_read_inode+0x20 (0xc0f9f680, 0xc0f9f680)
                               xfs .text 0xc8842060 0xc8899bfc 0xc8899c44
0xc66f1e5c 0xc014587a get_new_inode+0xca (0xc62bfc00, 0x400044, 0xc12f9b78, 0x0,
 0x0)
                               kernel .text 0xc0100000 0xc01457b0 0xc014590c
0xc66f1e88 0xc0145be1 iget4+0xdd (0xc62bfc00, 0x400044, 0x0, 0x0)
                               kernel .text 0xc0100000 0xc0145b04 0xc0145bec
0xc66f1ea8 0xc88eecdd [nfsd]nfsd_iget+0x19 (0xc62bfc00, 0x400044, 0x2)
                               nfsd .text 0xc88ed060 0xc88eecc4 0xc88eedb4
0xc66f1edc 0xc88ef15c [nfsd]find_fh_dentry+0x20 (0xc62bfc00, 0x400044, 0x2, 0x40
0080, 0x1)
                               nfsd .text 0xc88ed060 0xc88ef13c 0xc88ef458
0xc66f1f10 0xc88ef6d9 [nfsd]fh_verify+0x281 (0xc62ae200, 0xc66b1e00, 0x0, 0x0)
                               nfsd .text 0xc88ed060 0xc88ef458 0xc88ef8ec
0xc66f1f34 0xc88edbf1 [nfsd]nfsd_proc_getattr+0x91 (0xc62ae200, 0xc62ae000, 0xc6
6b1e00)
                               nfsd .text 0xc88ed060 0xc88edb60 0xc88edbfc

<Prev in Thread] Current Thread [Next in Thread>
  • TAKE 797419 - xfs_iget goes recursive and dies a horrible death, lord@xxxxxxx <=