首页 > 代码库 > Lab2
Lab2
流程
- 了解实验细节
- 分析源代码
- 初步实现
- 最终实现
了解实验细节
需要修改的文件与修改后的目的
- extent_server.cc 实现四个操作,分别是put(key, value), get(key), remove(key), getattr(key) 需要考虑时间,文件长度等属性
- yfs.client.{cc,h} 记录了文件的标示符 inum, 64位的数字前32位为0,并且inum的第31位用来标示extent是文件还是目录,yfs.client::isfile需要这个特性
- fuse.{cc,h} fuse中含有read, write...,你需要让fuse中的函数调用yfsclient中的函数 比如,你要想实现一个create操作,你需要修改fuseservercreatehelper,让其调用yfs->create(), 然后在yfs_client中实现create()操作 具体可参考getattr()的实现,这时lab2提供的一个例子
逻辑上的问题
- fuse.cc 是yfsclient的wrapper fuse.cc只是定义一个函数的wrapper,传递操作到yfsclient中操作,而yfsclient又要通过get()函数到extentserver访问资源,用inum作为key
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。