xv6 mkfs.c文件声明变量:
int nblocks = 985;
int nlog = LOGSIZE;
int ninodes = 200;
int size = 1024;
该声明应该适用于具有12个直接块和1个间接块的inode,我不明白为什么nblocks被定义为985? 一个inode中的块数是140(间接+12直接为128),所以我不完全了解985来自何处以及1024的大小。
如果我理解那部分我认为我将能够改变变量以支持三重间接。
谢谢!
答案 0 :(得分:0)
inode在磁盘上只占用32个字节(sizeof(struct inode)
)。只有在写入inode时才会开始在磁盘上占用更多空间(块)。
请注意这段代码:
bitblocks = size/(512*8) + 1;
usedblocks = ninodes / IPB + 3 + bitblocks;
...
assert(nblocks + usedblocks + nlog == size);