On Dec 15, 2023, at 6:21 AM, Dan Cross <crossd(a)gmail.com> wrote:
I remember reading a paper on the design of NFS (it may have been the
BSD paper) and there was a note about how the NFS server process ran
mostly in the kernel; user code created it, but pretty much all it did
was invoke a system call that implemented the server. That was kind of
neat.
At Valid Logic Systems I prototyped a relatively simple network filesystem.
Here there was no user code. There was one “agent” kernel thread per remote
system accessing local filesystem + a few more. The agent thread acted on
behalf of a remote system and maintained a session as long as at least one
local file/dir was referenced from that system. There were complications as it
was not a stateless design. I had to add code to detect when the remote
server/client died or rebooted and return ENXIO / clear out old state.