For the moment I have added an error message to the failure path to
make it clear what happened. I have also changed the zdb ASSERT to
a VERIFY so we always catch the failure. For now we will just always
ensure the module stack is loaded, longer term we need something a
little more flexible.
Most of these fixes appear to be harmless and should never occur.
However, there were a few cases in this patch which do concern me,
I doubt we're seeing them but they look possible... mainly in the
user tools.
This is all nowhandled in the SPL. When HAVE_GPL_ONLY_SYMBOLS is defined
because the module license is set to GPL we can leverage the udev interfaces
which will create the device. When HAVE_GPL_ONLY_SYMBOLS is not defined
we resort to an ugly hack and the SPL invokes a usermode helper to create
to missing device file for us in /dev/. Using GPL version modules is off
course preperable when possible.