计算 BeDS 支持的最大文件大小

Calculation of max file size supported in BeFS

我正在阅读 “使用 Be 文件系统进行实用文件系统设计”,在 BeFS 中,inode 结构的“数据流”部分如下所示:

struct {
  // each block_run(8 byte) is a disk address space which maps from
  // at lease 1 block and 65536 block at most
  block_run direct[12];
  // points to a block which contains block_run of real data
  block_run indirect;
  // points to a block which contains block_run of indirect blocks
  block_run double_indirect;
}

然后这本书开始计算最小和最大文件大小,我们看最小的:每个直接block_run映射1块 每个间接映射至少 4K space(512 block_run's),每个双间接映射至少 4K space(512 block_run's),每个块1KB 大小,最小文件大小结束于:

direct blocks = 12K

indirect blocks = 512K (4K indirect block maps 512 block_runs of 1K each)

double-indirect blocks = 1024MB (4K double-indirect page maps 512 indirect pages that map 512 block_runs of 4K each)

我确实对映射的双间接块感到困惑 space,它不应该是:

double-indirect blocks = 512 * 512KB (each indirect page maps 512K space?)

嗯,看了很多times.The double-indirect block contains a block_run which contains block address, it does NOT contains indirect block address.So 计算是正确的。