I think I found a possible explanation for the SMP invalidate messages with
Reiserfs:
it happens that someone calls lock_kernel() with disabled local interrupts,
and lock_kernel() then block for several milliseconds.
* reiserfs uses tq_scheduler() extensively, and calls lock_kernel() within
their callback [OK.]
* tq_scheduler is handled before "release_kernel_lock()" is called [OK, we
cannot reverse the order]
* sleep_on() and interruptible_sleep_on() call schedule() with disabled
local [sometimes even global] interrupts.
What about adding a "sti()" into schedule() just before
"run_task_queue(&tq_scheduler)"?
And obviously, we could also replace the spin_{,un}lock_irqsave() in
run_task_queue with "spin_{,un}lock_irq()".
It seems we can do that in both 2.2 and 2.3.
-- Manfred- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Thu Mar 23 2000 - 21:00:17 EST