On Mon, Jul 26, 2010 at 02:49:56PM +0300, Antti Kantee wrote: > On Sun Jul 25 2010 at 15:17:29 -0700, Paul Goyette wrote: > > On Mon, 26 Jul 2010, matthew green wrote: > > > > > > > >it seems to me the root problem is that module_mutex is held while > > >calling into the module startup routines. > > > > > >thus, the right solution is to remove this requirement. > > > > Yes, that's what is needed. > > I'm far from convinced that's a good idea. First, it will probably > make the module code a nightmare -- what happens when you have multiple > interleaved loads, some of which fail at some point in their dependency > stack, and let's just throw in a manual modunload to mix up things > further. Second, and pretty much related to number one, it goes against > one of the most fundamental principles of robust code: atomic actions.
This: atomicity. The atomic behaviour is relied upon to give "all or nothing" semantics upon load and unload, like transactions in a database. Admittely some modules (not of my making) are sloppy about this and so break that bit of the interface contract. > If modload-from-modcmd is found necessary, sounds more like a case for > the infamous recursive lock. Recursive lock is the way to go. I think the same lock should also cover all device configuration activites (i.e. autoconf) and any other heavy lifting where we have chunks of the system coming and going.