在 linux 源代码中,我们有两个分支 nfs 和 nfsd。两者有什么区别?
我尝试在两者中寻找 NFS 属性rdattr_error
,发现不同的实现。
NFS 类似于其他 RPC 服务,它使用服务器端守护程序 (nfsd) 来处理传入请求。它与典型的客户端-服务器模型的不同之处在于 NFS 客户端上的进程自己进行一些 RPC 调用,而其他 RPC 调用由客户端的异步线程进行。所有 NFS 客户端和服务器代码都包含在内核中,而不是包含在服务器守护程序可执行文件中
nfsd 是一个用户级进程,但不包含处理 NFS 请求的代码。nfsd 发出一个系统调用,为内核提供一个传输端点。调用系统调用以启动传输端点上 NFS 请求的内核处理。
在客户端,每个访问 NFS 挂载文件系统的进程都会对 NFS 服务器进行自己的 RPC 调用。
http://docstore.mik.ua/orelly/networking_2ndEd/nfs/ch07_03.htm
如果你查看这些Kconfig
文件,你会看到里面有什么:
fs/nfs/Kconfig:
config NFS_FS
tristate "NFS client support"
fs/nfsd/Kconfig:
config NFSD
tristate "NFS server support"