xfs
[Top] [All Lists]

Re: xfs crash bt (was: RE: ADD 804570 - The elevator bug)

To: Russell Cattelan <cattelan@xxxxxxxxxxx>
Subject: Re: xfs crash bt (was: RE: ADD 804570 - The elevator bug)
From: Marcelo Tosatti <marcelo@xxxxxxxxxxxxxxxx>
Date: Tue, 19 Dec 2000 15:31:40 -0200 (BRST)
Cc: Tony Gale l <gale@xxxxxxxxxxxxxxxxxx>, linux-xfs@xxxxxxxxxxx
In-reply-to: <3A2E95CD.CB45802F@xxxxxxxxxxx>
Sender: owner-linux-xfs@xxxxxxxxxxx

On Wed, 6 Dec 2000, Russell Cattelan wrote:

> Tony Gale wrote:
> 
> > On 06-Dec-2000 Russell Cattelan wrote:
> > >
> > > Well nothing obvious jumps out at me here, other than a possible
> > > deadlock problem.
> > >
> > > Looking at the code related to the backtraces I don't see a common
> > > lock
> > > that
> > > might be tripping us up.
> > >
> > > In the backtrace; find_inode is that  last  function listed?
> >
> > Well, it's first one listed, but yes.
> >
> > >
> > > We probably need to look at the process table and find out what is
> > > running and what might be stuck.
> >
> > I believe the two process stuck are expire (from inn) and slocate.
> > Both of these would hit the fs pretty hard.
> >
> > I don't know the code, but could it be a resource starvation problem,
> > such as out of inodes in the vfs?
> >
> > >
> > > continue the system "go"
> > > break it again and do the cpu back traces.
> >
> > Still stuck in the same places (with minor find_inode offset diff).
> 
> This may not be a lock contention problem then, it's possible we are
> looping on something?

It can well be looping at find_inode().

The patch at the end of this message may help us triggering the problem.

Tony, could you apply the attached patch and and see what happens? 

Thanks. 

--- fs/inode.c.orig     Tue Dec 19 17:20:29 2000
+++ fs/inode.c  Tue Dec 19 17:21:25 2000
@@ -556,6 +556,8 @@
        tmp = head;
        for (;;) {
                tmp = tmp->next;
+               if(tmp == tmp->next)
+                       BUG();
                inode = NULL;
                if (tmp == head)
                        break;



<Prev in Thread] Current Thread [Next in Thread>