Lions' 本読み (135)

朝練にて inode block なソレを云々したんですが、色々と釈然とせず。そもそも inode 番号な属性の型が int で最大 65535 なんスけど、これに struct inode なサイズの 32 を掛けたりすると 2.5MB なディスクが埋まってしまいかねない値になってしまいます。
どうやって境界の設定をしてるのかな、と思ったら struct filesys に属性を発見。
しかも某所にて現実トウヒ中だったりして。以下を見ていて

以下な記述を確認。

Isize is the number of blocks devoted to the i-list, which starts just after the super-block, in block 2.

Format of the Version 6 file system より引用
そこで端末に (というか Dropbox か) 落としてる v6.pdf からソースを見てると以下な記述になってますね。

5563  int s_isize; /* size in blocks of I list */

確かに ialloc 手続きで以下なことしてましたね。

7096    for(i=0; i<fp-s_isize; i++) {
7097            bp = bread(dev, i+2);

Inode blocks で使ってるブロック数が super block に存在するのか。おそらくこのあたりはディスク容量 (もしかすると複数のディスクを一つのデバイスとして取り扱うことができたのかどうか) マターで inode block の最適なサイズを云々していたのかどうか。

再度

v6 UNIX Vol.2 in Okinawa の 57 枚目あたりの部分から再度確認にトライの方向。