MIT-6.s081-Lab: file system

第一问就不写了,其他博客也有提到。

说说第二问吧,要做soft link。实质上是给file层提供一个新的inode类型,就是SYMLINK的类型,这个inode的data block存储指向的文件的路径。比如对/usr/testfile.c创建soft link,/usr/mytest/softlink用来作为软连接指向前面的c文件。当我们访问/usr/mytest/softlink的时候实际上底层打开的文件描述符指向的是c源文件。

主要就是完成系统调用symlink的编写和sysopen的修改:
symlink的编写可以模仿link(也就是xv6提供的hard link)。

  1. 添加symlink函数,先调用create创建symlink类型的inode,再调用writei将target的路径写入新创建的inode。
    这里要注意create返回的inode已经lock了,并且再writei调用后要调用iupdate去更新inode到disk,最后释放需要调用iunlockedput。
    writei:存target路径的时候,最好保存一个路径的长度,再保存上路径。writei不需要判断是否失败也没事。
  2. sysopen找到适合的位置插入while判断,如果是SYMLINK类型不断迭代,直到10来。退出的条件有可能是>=10或者不是SYMLINK情况(找到了指向的文件)。最后返回就好了。

有一个坑要注意,要保证sysopen和symlink都对了,才能通过第二个concur测试。
代码链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值