newbus integration of MOD_QUIESCE

M. Warner Losh imp at bsdimp.com
Tue Jul 13 17:15:49 PDT 2004


In message: <Pine.NEB.3.96L.1040713195126.63836A-100000 at fledge.watson.org>
            Robert Watson <rwatson at freebsd.org> writes:
: MOD_WEAKUNLOAD - Unload if you're not in use.  I.e., unattached driver,
:   unmounted file system, netgraph nodes that aren't instantiated, network
:   protocol without any sockets, etc.  Be harmlessly gone, but vetoed
:   at a low cost.

This is desirable.

: MOD_STRONGUNLOAD - Unload even though you're in use.  Detach the driver,
:   deadfs the file system, wither the geom, sever the sockets, etc.  May
:   cause disruption, but may also veto, depending on the subsystem,
:   especially if the subsytem has no way to notify its consumers of
:   impending doom.  Can be vetoed, but try harder before vetoing.  Some
:   subsystems might always return EBUSY for this if there's really no way
:   to express "undesirable departure" upwards.

This is tue current MOD_UNLOAD

: MOD_QUIESCE - Attempt MOD_WEAKUNLOAD, and if that fails, ask the module to
:   start draining in some form.  I'm a bit unclear on quite what's
:   intended, but this seems to be less atomic notion than "unload, or
:   don't" at various points on the spectrum.  I.e., it kicks off a state
:   transition in what is likely a slightly poorly defined state machine.
:   Right now, the state machine is "Not loaded", "Loaded", and we use a
:   lock to prevent intermediate states from colliding.

This is the heart of my questions about MOD_QUIESCE.

Warner


More information about the freebsd-arch mailing list