I was just wondering why the Linux NFS server is implemented in the kernel as opposed to a userspace application?
I know a userspace NFS daemon exists, but it's not the standard method for providing NFS server services.
I would think that running NFS server as a userspace application would be the preferred approach as it can provide added security having a daemon run in userspace instead of the kernel. It also would fit with the common Linux principal of doing one thing and doing it well (and that daemons shouldn't be a job for the kernel).
In fact the only benefit I can think of running in the kernel would a performance boost from context switching (and that is a debatable reason).
So is there any documented reason why it is implemented the way it is? I tried googling around but couldn't find anything.
There seems to be a lot of confusion, please note I am not asking about mounting filesystems, I am asking about providing the server side of a network filesystem. There is a very distinct difference. Mounting a filesystem locally requires support for the filesystem in the kernel, providing it does not (eg samba or unfs3).