On Tue, 2005-01-25 at 16:34 +0100, Bartlomiej Zolnierkiewicz wrote: > > There are no places like > > lock a > > lock b > > unlock a > > unlock b > > > > and if they are, then I'm completely wrong. > > > > What you see is only following: > > > > place 1: > > lock a > > lock b > > unlock b > > lock c > > unlock c > > unlock a > > > > place 2: > > lock b > > lock a > > unlock a > > lock c > > unlock c > > unlock b > > Ugh, now think about that: > > CPU0 CPU1 > place1: place2: > lock a lock b > < guess what happens here :-) > > lock b lock a > ... ... :) he-he, such place are in add and remove routings, and they can not be run simultaneously in different CPUs. And in other places they should go through the same lock(sdev or chain): like lock sdev_lock lock chain unclok chain lock logic unlock logic unlock sdev_lock lock sdev_lock lock logic unlock logic lock chain unclok chain unlock sdev_lock -- Evgeniy Polyakov Crash is better than data corruption -- Arthur Grabowski