#define IBLOCK(i, sb) ((i) / IPB + sb.inodestart)

トップページ
jupiteroak.hatenablog.com


fs.h
https://github.com/mit-pdos/xv6-public/blob/master/fs.h#L42

#define IBLOCK(i, sb)     ((i) / IPB + sb.inodestart)

IBLOCKマクロは、iノード番号から、そのiノードが含まれるセクタのセクタ番号を算出するマクロです。
sb.inodestartは、ハードディスク上のiノード領域にある先頭セクタのセクタ番号です。
IPBはブロック1個当たりに含まれるiノード数を算出するマクロで、その値(ブロック1個当たりに含まれるiノード数)は32個になります。
iノード番号が0から31までのiノードはセクタ番号sb.inodestartのセクタに所属するので、iノード番号iをIPBの値(32)で除算した値の分をセクタ番号に追加した値(i) / IPB + sb.inodestartが、iノード番号がiであるiノードが含まれるセクタのセクタ番号になります。