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