首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[2014.3.23]cse::lab2::partD 简明攻略

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

作者头像
ApacheCN_飞龙
发布2019-02-15 11:08:22
5610
发布2019-02-15 11:08:22
举报
文章被收录于专栏:信数据得永生信数据得永生

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年05月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档