[2014.3.23]cse::lab2::partD 简明攻略-阿里云开发者社区

开发者社区> 云计算> 正文

[2014.3.23]cse::lab2::partD 简明攻略

简介: 这一部分要求增加两个新的接口 所以从上到下都得改一些东西 1. 找到extent_protocol.h中的enum types,增加软连接文件类型。

这一部分要求增加两个新的接口 所以从上到下都得改一些东西

1. 找到extent_protocol.h中的enum types,增加软连接文件类型。

2. yfs_client.h和yfs_client.cc里面增加两个方法:symlink和readlink(当然名字可以随便起 只要便于记忆就成)。symlink中创建一个软连接类型的文件并写入连接内容,参数列表相当于create多一个link(请把mode无视掉)。readlink中给一个inum然后读出内容,参数列表一个inum一个link。

*. 由于create、mkdir和symlink三个函数都要创建文件,所以建议把创建文件的逻辑单写一个函数并传进类型,上述三个函数来调用。

3. fuse.cc中的getattr原本只有两个逻辑判断分支,增加一个对软连接的判断。其实isdir和islink只要实现其一就成,剩下的那个else就可以了。attr如何设置详见evernote上的链接。

4. fuse.cc中增加两个回调:fuseserver_symlink和fuseserver_readlink,参数列表分别对应fuse_lowlevel_ops(http://fuse.sourceforge.net/doxygen/structfuse__lowlevel__ops.html)的symlink和readlink接口。两个函数的实现都是调用yfs_client中对应的那个函数。若是成功fuseserver_symlink调用fuse_reply_entry,fuseserver_readlink调用fuse_reply_readlink。若是失败都调用fuse_reply_err。具体实现参考fuseserver_create和fuseserver_read就可以了,也可以看函数的声明文档(http://fuse.sourceforge.net/doxygen/fuse__lowlevel_8h.html)。

5. fuse.cc的main中,注册两个回调。参照前面那一大堆写就可以了。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章