| From | Nikita Danilov <> | Date | Thu, 21 Oct 2004 21:54:50 +0400 | Subject | Re: [patch] Real-Time Preemption, -RT-2.6.9-rc4-mm1-U9 |
| |
Ingo Molnar writes: > > * Gunther Persoons <gunther_persoons@spymac.com> wrote: > > > The kernel booted now with my firewire card plugged in. However when i > > try to mount my reiser4 partition i get following error > > > > BUG: semaphore recursion deadlock detected! > > .. current task mount/10514 is already holding ccb5bb4c. > > > [<c0344760>] down_write+0x103/0x1a6 (48) > > [<d0b26a08>] kcond_wait+0xaa/0xac [reiser4] (36) > > [<d0b280b0>] start_ktxnmgrd+0x98/0x9a [reiser4] (36) > > [<d0b33716>] reiser4_fill_super+0x3b/0x71 [reiser4] (28) > > [<d0b2d569>] reiser4_get_sb+0x2f/0x33 [reiser4] (68) > > [<c016061a>] do_kern_mount+0x4f/0xc0 (4) > > [<c0175945>] do_new_mount+0x9c/0xe1 (36) > > [<c0175feb>] do_mount+0x145/0x194 (44) > > [<c0176459>] sys_mount+0x9f/0xe0 (32) > > [<c01060b1>] sysenter_past_esp+0x52/0x71 (44) > > reiser4 has some pretty ugly locking abstraction called kcond, i took a
It's fairly standard condition variable.
> look but it doesnt seem simple to convert it. Reiserfs should really use > a normal Linux waitqueue and nothing more...
Why? Condition variable is very well known and widely used concept. In the area of their applicability (where predicate whose change is waited upon is protected by a single lock) they provide clean and easily recognizable synchronization device.
Real problem in this case is failure of "semaphore deadlock detection" to cope with perfectly legal semaphore usage (down() by thread T1, up() by thread T2). As one possible solution kcond can be re-written on top of beloved "normal Linux waitqueue".
Nikita.
> > Ingo
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|