Messages in this thread | | | From | "Manfred Spraul" <> | Subject | Re: (reiserfs) Re: patch: reiserfs for 2.3.49 | Date | Wed, 15 Mar 2000 11:04:31 +0100 |
| |
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/
| |