Hang in wait_on_inode with SMP 2.1.87

Carsten Gross (carsten@sol.wohnheim.uni-ulm.de)
Sat, 21 Feb 1998 07:23:46 +0100 (MET)


Hi!

I've mentioned some problems with hangs on my machine (Dual Pentium 100 on a
Tyan Tomcat II board, aic7xxx driver (no IDE), Kernel is 2.1.87 compiled for
SMP)

After a while (random interval - sometimes during boot, sometimes after some
hours uptime) the machine hangs. No log's, but no "real" crash, means keyboard
and mouse works.

I think I've found the/one reason for the problem:

Today, I started a 'df' and the 'df' hung. I used ps -afxl to have a look on
the process state. And 'df' hung in "wait_on_inode" with status
'uninterruptible sleep'. The 'bdflush' process was in the same state, no
write access to the disks were possible until reboot. (A sync hung too, also
in "wait_on_inode")

There is this __wait_on_inode function in fs/inode.c with the following
loop:

repeat:
current->state = TASK_UNINTERRUPTIBLE;
if (inode->i_state & I_LOCK) {
schedule();
goto repeat;
}

I cannot find a function actually removing the I_LOCK flag? Yes, sync_one
does, but checks for I_LOCK presence before. I think 'get_new_inode' is only
for new inodes? Would someone of the kernel experts have a look on this,
please? Thanks a lot for your work.

Regards

Carsten

-- 
Carsten Gross		Internet: carsten@sol.wohnheim.uni-ulm.de
Wohnheim Heilmeyersteige:  Sebastian Kneipp Weg 6, 89075 Ulm

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu