[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


On Thu, Jul 19, 2001 at 12:02:51PM +0200, Jarkko Tuomi wrote:
> - dancing under full moon

I haven't tried this so far.

> It seems to hang up at bread, but why?

More specifically, it hangs in a function called __wait_on_buffer in a file
os/linux/fs/buffer.c, bread calls that function and it never returns from
there, this is the offending code(PS ignore line numbers)

    157     do {
    158         run_task_queue(&tq_disk);
    159         set_task_state(tsk, TASK_UNINTERRUPTIBLE);
    160         if (!buffer_locked(bh))
    161             break;
    162         schedule();
    163     } while (buffer_locked(bh));

buffer_locked will not let this return since bh never becomes unlocked and
we are left with scheduling ourselfs into oblivion. This must be a call with
a current since we are allowed to schedule, but current of what since I
don't belive init is started yet, it must be the main kernel thread. Have to
dig more.

> Any help on this would really be appreciated,

No kidding. :^)

It might be and IDE code bug, I'll try to trace it, see why it never
unlocks, I assume nobody at Axis has any ideas/clues/hints/dollars
to spare. (No personal checks please) :^)

Peace can only come as a natural consequence
of universal enlightenment. -Dr. Nikola Tesla