lkml.org 
[lkml]   [2000]   [Mar]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: (reiserfs) Re: patch: reiserfs for 2.3.49
Date
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/

\
 
 \ /
  Last update: 2005-03-22 13:57    [W:0.169 / U:0.160 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site