ServerSide 的头文件在 include/linux/nfsd 下面,C 文件在 fs/nfsd 下面。 •auth.c/lockd.c/export.c/nfsctl.c/nfscache.c/nfsfh.c/stats.c:导出目录的访问管理 •nfssvc.c:NFS 服务 deamon 的实现 •vfs.c:将 NFS 文件系统的操作转换成具体文件系统的操作 •nfsproc.c/nfsxdr.c/nfs3proc.c/nfs3xdr.c:网络数据交换 导出目录的访问管理主要解决网络文件系统实现面临的几个重要问题,包括目录导出服务,外部访问的权限控制,多客户端以及客户端与服务器的文件并发操作等。 一个典型例子:rename 的调用过程 在 NFS 文件系统的文件操作中,除了 read 和 write 操作考虑到性能因素,专门使用了缓存机制外,其它的操作基本上都是同步完成的。本文以 rename 为例来进行说明,如下图所示。首先用户或者应用程序开始调用文件操作,经过系统调用 sys_rename,到达虚拟文件系统层 vfs_rename,然后交给 NFS 文件系统 nfs_rename 来处理。NFS 文件系统无法操作存储介质,它调用 NFS 客户端函数 nfs3_proc_rename 和 NFS 服务器函数 nfsd3_proc_rename 进行通信,把文件操作转发到 NFS 服务器的虚拟文件系统层 vfs_rename,最后调用具体的文件系统如 ext2 的函数 ext2_raname,完成文件重命名。
|