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

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

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中,注册两个回调。参照前面那一大堆写就可以了。

posted @ 2014-05-16 18:15  绝不原创的飞龙  阅读(3)  评论(0编辑  收藏  举报  来源