From: Gerrit Renker <gerrit@xxxxxxxxxxxxxx> Date: Tue, 16 Dec 2008 06:29:54 +0100 > | Hence I think we have a chance by going completely lockless here, by > | loading all configured CCIDs at runtime. In this manner the per-connection > | check "are all advertised CCIDs are loaded?" falls under the table, we > | do not need to worry about concurrent access, and loading DCCP implies that > | all needed CCIDs are there. > Unfortunately this won't work since the CCIDs depend on dccp.ko being > fully loaded, so requiring that CCID module are loaded during the > loading process of dccp.ko creates a cyclic dependency. I don't like this stuff at all. Every new connection you're going to loop over the CCID table and grab that CCID read lock N times. The first time it will do something meaningful, and then %99.999999999999 of subsequent calls will do nothing. What kind of overhead is deserved by that access pattern? And, if the first thing the first connection is going to do is load all the modules, there is ZERO reason to make them modular. It's just useless seperation and it adds all of this rediculious synchronization. If it's modular "for the sake of development" I'm sure you can simply reload the dccp.ko module when you make some CCID algorithm change. I'm tossing this patch set until we get something better in this area. -- To unsubscribe from this list: send the line "unsubscribe dccp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html