Three tables are arrays of fixed-size entries, found by index. Each is stored as metadata blocks of entries, then an array of 64-bit pointers to those blocks; the superblock gives the offset of the pointer array. Entry i is entry i mod (8192 ÷ entry size) of the block that pointer i ÷ (8192 ÷ entry size) names. A table with no entries is left out and its superblock offset is not used. All numbers are in the image’s byte order.
Fragment table
One entry for each fragment block (the superblock’s fragment count): 16 bytes, 512 to a metadata block. See fragments.
| Offset | Size | Type | Name | Description |
|---|---|---|---|---|
0 | 8 | uint64 | Start | The file offset of the fragment block. |
8 | 4 | uint32 | Size | As a data block’s size word: bits 0 to 23 the stored size, bit 24 set when stored uncompressed. |
12 | 4 | uint32 | Unused | Zero. |
Export table
Present when the EXPORTABLE flag is set. It lets the kernel’s NFS server find an inode from its number: one 8-byte entry for each inode, 1024 to a block. Entry i is the reference of the inode numbered i + 1. A reader can check that the inode a reference leads to carries that number.
Id table
The user and group ids in use, each stored once: one 4-byte id for each entry (the superblock’s id count), 2048 to a block. An inode’s uid index and gid index are positions in this table; one table serves both. A file owned by user 1000 and group 100 has two entries, 1000 and 100 (and an id used as both is stored once).