Messages in this thread | | | Date | Wed, 15 Mar 2000 05:17:26 -0800 (PST) | From | Chris Mason <> | Subject | Re: patch: reiserfs for 2.3.49 |
| |
On Wed, 15 Mar 2000, Manfred Spraul wrote:
> 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. >
Ah, that makes sense. Even worse, the code called in the task I put on the scheduler queue calls get_super(). It needs to be redone, I've already got a commit thread to flush async transactions to disk, I think I'll have it do the tasks I was putting on the scheduler queue as well.
-chris
- 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/
| |