SJTU->SE->CSE->lab2 symlink部分
来源:互联网 发布:python communicate 编辑:程序博客网 时间:2024/06/02 07:08
lab2基本来说是支持文件系统的API,然后不知为何多了一个part,于是工作量就大了很多。part-d测试的是soft link,因此需要从上到下添加不少东西。
首先,在最上层,fuse.cc部分,由于lab使用fuse_lowlevel_ops,所以,需要实现对应的接口。在fuse-lowlevel-ops结构中有完整的文档,我们需要实现的是两个:symlink和readlink。但是为了实现这两个函数,需要对getattr等函数进行修改,使其支持symlink文件类型等等。然后在symlink函数中,需要调用fuse_reply_entry,在readlink的时候,需要调用fuse_reply_readlink,具体看fuse_lowlevel文件。
其次,在yfs_client里,可能需要加这么几个函数:对于一个文件是否是软连接的判断函数,以及读取软连接文件基本信息的函数(不必要),这些是用来支持fuse的getattr,fuse的getattr的修改是为了支持对symlink里的那个fuse_entry_param类型变量的attr属性进行修改(越说越乱了啊,这段别看了=-=。
最后,需要在extent_protocol里添加新的文件类型,即软连接。
需要注意的是,symlink可以理解为是用来建立软连接的,只需要新建一个软连接类型的文件,然后把link写到他里面就可以,跟create差不多。readlink可以理解为是从指定的软连接里读出连接内容,就是把软连接文件的内容读出来。直观来说就是这样。所以不需要做什么递归解析等等高级的东西。
PS:要注意fuse要实现的是fuse_lowlevel_ops里的函数而不是fuse_operations的。
PPS:在通过part-d的时候,还是会有一个小小的报错
熊神在QA上给出了解决方案,可以去看看=-=。
PPPS:fuse.cc里的main函数是需要加两行代码的。
大致就是这样。其他部分天神讲的很清楚了=-=
- SJTU->SE->CSE->lab2 symlink部分
- [2014.3.23]cse::lab2::partD 简明攻略
- SJTU->SE->ICS->LAB6 Malloc
- SJTU->SE->ICS->LAB8 Performance
- SJTU->SE->ICS->LAB1 Data
- SJTU->SE->ICS->LAB9 Tiny Shell
- symlink
- sjtu
- lab2
- Lab2
- Lab2
- ucore操作系统lab2实验报告之理论部分
- MIT6.828 Lab2:第1部分 Physical Page Management
- MIT6.828 Lab2: 第2部分 Virtual Memory
- MIT6.828 Lab2: 第3部分 Kernel Address Space
- java SE基础部分 点
- 离散数学【sjtu】
- Java SE基础部分-02.标识符、数据类型
- 寻找直方图中面积最大的矩形
- 动手学MFC之七——进军单文档
- /hadoop/src/contrib/eclipse-plugin/build.xml
- 【转载】二叉树中两个节点的最近公共祖先节点
- /hadoop/src/contrib/eclipse-plugin/META-INF/MANIFEST.MF
- SJTU->SE->CSE->lab2 symlink部分
- phprcp .net版报错误:System.FormatException: 输入字符串的格式不正确。
- S3C2416裸机开发系列四_外部内存初始化以及代码搬移
- UVA 445
- 创建、重命名文件
- Java 连接池的工作原理
- 我爱你——侨声
- js版本的AJAX
- 本地收藏NSUserDefaults实现方式