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