Re: (reiserfs) Re: patch: reiserfs for 2.3.49

From: Manfred Spraul (manfreds@colorfullife.com)
Date: Wed Mar 15 2000 - 05:04:31 EST


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