设为首页收藏本站language 语言切换
查看: 1744|回复: 0
收起左侧

[分享] NFS文件系统源代码剖析 (6)

[复制链接]
发表于 2013-1-9 15:52:20 | 显示全部楼层 |阅读模式
NFS与其它文件系统一样,向内核声明和注册自己的文件系统类型。      
static DECLARE_FSTYPE(nfs_fs_type,"nfs", nfs_read_super, FS_ODD_RENAME);  ... ...
module_init(init_nfs_fs)
module_exit(exit_nfs_fs)
同样,NFS 也需要根据自己的文件类型设置相应的文件操作函数。如果是正规文件,需要设置inode 操作函数,file 操作函数,以及address_space 操作函数;如果是目录文件,需要设置 inode 操作函数,file 操作函数;如果是链接,则只需设置 inode 操作函数。           
static void
nfs_fill_inode(struct inode *inode, structnfs_fh *fh, struct nfs_fattr *fattr)
{
     ... ...
     inode->i_op =&nfs_file_inode_operations;
     if (S_ISREG(inode->i_mode)) {
          inode->i_fop =&nfs_file_operations;
          inode->i_data.a_ops = &nfs_file_aops;
     } else if (S_ISDIR(inode->i_mode)) {
          inode->i_op =&nfs_dir_inode_operations;
          inode->i_fop =&nfs_dir_operations;
     } else if (S_ISLNK(inode->i_mode))
          inode->i_op = &nfs_symlink_inode_operations;
     else
          init_special_inode(inode,inode->i_mode, fattr->rdev);
     ... ...
}
与传统文件系统不同点
与内存文件系统,闪存文件系统和磁盘文件系统这些本地文件系统最大的不同在于,NFS 文件系统的数据是基于网络,而不是基于存储设备的,因此 NFS 文件系统在设计自己的 inode 和 superblock 数据结构,以及实现文件操作函数时,无需考虑数据布局情况。同样是因为基于网络,NFS 文件系统的权限控制和并发访问的要求比本地文件系统更高,读写的缓存机制也大大有别于本地文件系统。

赵小明.jpg

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-9 13:18 , Processed in 0.071841 second(s), 16 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表