在编写代码之前,应该阅读xv6书中的“第8章:文件系统”并研究相应的代码。
使用类似页表的结构,增加 xv6 文件的最大大小。下图的addr11改为一级间接块,addr12改为二级间接块
最大大小 = 11 + 256 + 256*256 = 65308 块,约64MB
查找磁盘块号通过bmap实现,它将一个相对块号转换为磁盘上的块号;注意修改释放文件块的 itrunc
实现:symlink(char *target, char *path)
符号链接(或软链接)通过路径名引用链接文件,可以跨设备。但硬链接不行。
软链接可能引用另一个软链接。还可能形成循环软链接。
基本思路
是:
在此过程中需要小心避免死锁
,例如create返回的是带锁的inode
巨坑:strncpy
复制时要加个1