On Thu, Jun 04, 2020 at 08:19:58AM -0600, Warner Losh wrote:
The kicker is that all of the kernel is callback
driven. The
upper half queues the request and then sleeps until the lower half signals
it to wakeup. And that signal is often just a wakeup done from the
completion routine in the original request. All of that would be useful in
userland for high volume activity, none of it is exposed...
Yeah, I've often wondered why this stuff wasn't exposed. We already have
signal handlers, seems like that maps.
I tried to get the NFS guys at Sun to rethink the biod junk and do it like
UFS does, where it queues something and gets a callback. I strongly suspect
that two processes, one to queue, one to handle callbacks, would be more
efficient and actually faster than the biod nonsense.
That's one of the arguments I lost unfortunately.
Warner, exposing that stuff in FreeBSD is not really that hard, I suspect.
Might be a fun project for a young kernel hacker with some old dude like
you or me or someone, watching over it and thinking about the API.
--lm