簇链可以以 0 或 1 结尾吗?

Can cluster chains end with 0 or 1?

在为 FAT32 制作正式模型的研究过程中,我遇到了一个使我的工作变得非常复杂的实现细节:什么值可以出现在集群链的末端?

根据Microsoft's specification,“FAT中的空闲簇列表无非是包含值0的所有簇的列表 在他们的 FAT 集群条目中。”,其推论是 0 不能是集群链末尾的值,只有 EOC 可以在那里。但是,Wikipedia states "Otherwise, if this value occurs in cluster chains (e.g., in directory entries of zero length or deleted files), file system implementations should treat this like an end-of-chain marker." 表示 0,引用此声明到一本不起眼的德语书。

所以我真的很想问问那些使用文件系统的人,他们是否认为 0(和 1)是实现中有效的集群链结束标记。

更新:我检查了 FAT32 的 Linux 内核实现,function for counting free clusters 似乎将所有零都算作自由簇,不多也不少。

对 Linux FAT32 代码的进一步检查表明,以 0 结尾的集群链是 considered invalid clusterchains 并导致 -EIO 的 return 值。