Btrfs b-tree是一种通用的数据结构,包括三种数据结构:keys,items,block headers. block header 是固定大小且持有一些域checksum,flags,filesystem ids,generation number等。 Key用结构描述对象的地址。
item is a key with additional offset and size filelds.
内部tree节点仅仅持有[key,block-pointer]对。叶子节点持有[item,data]键值对的arrays。 item数据是可变尺寸。叶子在开始存储items的阵列,在结尾是一个反向排序的数据阵列。这些阵列向对方互相增长。下表展示saneitems{I0,I1,I2}的叶子,和三个对应的数据元素{D2,D1,D0}。
叶子节点有三个items。Items是固定大小的,但是数据元素是可变长度的。
Item数据是可变长度的,多样的文件系统数据被定义成不同的item数据类型。key中的域声明在item中存储的数据类型。
文件系统由objects组成,每个object有一个抽象的64bit object_id。但一个object被创建&