Skip to content

Latest commit

 

History

History
41 lines (31 loc) · 1.57 KB

verity.rst

File metadata and controls

41 lines (31 loc) · 1.57 KB

Verity files

ext4 supports fs-verity, which is a filesystem feature that provides Merkle tree based hashing for individual readonly files. Most of fs-verity is common to all filesystems that support it; see :ref:`Documentation/filesystems/fsverity.rst <fsverity>` for the fs-verity documentation. However, the on-disk layout of the verity metadata is filesystem-specific. On ext4, the verity metadata is stored after the end of the file data itself, in the following format:

  • Zero-padding to the next 65536-byte boundary. This padding need not actually be allocated on-disk, i.e. it may be a hole.
  • The Merkle tree, as documented in :ref:`Documentation/filesystems/fsverity.rst <fsverity_merkle_tree>`, with the tree levels stored in order from root to leaf, and the tree blocks within each level stored in their natural order.
  • Zero-padding to the next filesystem block boundary.
  • The verity descriptor, as documented in :ref:`Documentation/filesystems/fsverity.rst <fsverity_descriptor>`, with optionally appended signature blob.
  • Zero-padding to the next offset that is 4 bytes before a filesystem block boundary.
  • The size of the verity descriptor in bytes, as a 4-byte little endian integer.

Verity inodes have EXT4_VERITY_FL set, and they must use extents, i.e. EXT4_EXTENTS_FL must be set and EXT4_INLINE_DATA_FL must be clear. They can have EXT4_ENCRYPT_FL set, in which case the verity metadata is encrypted as well as the data itself.

Verity files cannot have blocks allocated past the end of the verity metadata.