|From:||"Thomas E. Spanjaard" <tgen@xxxxxxxxxxxxx>|
|Date:||Mon, 03 Mar 2008 15:20:54 +0000|
Well, I see a problem immediately. The lockmgr macros in ip_carp.c are specifying non-blocking locks but all the calls to them assume success.
I'm not sure what the best solution is here. The lockmgr is not supposed to be called from an interrupt, which is why I think it was coded LK_NOWAIT in the carp port, but the carp code doesn't check for an EBUSY return value. That's a real problem.
We can't use spin locks, there are blockable paths called with the CARP_LOCK held. It looks like our only real choice is to allow lockmgr locks from interrupts... which by the way precludes being able to use a FAST interrupt for network interrupts (which we don't at the moment anyway, but...).
Description: OpenPGP digital signature