Drat 0.1.2
Pre-release-
Renamed
src/apfs/struct/const.h
tosrc/apfs/struct/jconst.h
-
Updated symbol/struct definitions in
src/apfs/struct
to align with the latest APFS spec revision (2020-06-22). This included adding a new filesealed.h
with the definitions contained in the new chapter of the spec, §16 Sealed Volumes. A detailed list of changes follows:-
§3 Objects —
object.h
-
§3.1 Object Types
OBJECT_TYPE_ER_RECOVERY_BLOCK
OBJECT_TYPE_SNAP_META_EXT
OBJECT_TYPE_INTEGRITY_META
OBJECT_TYPE_FEXT_TREE
OBJECT_TYPE_RESERVED_20
OBJECT_TYPE_MEDIA_KEYBAG
-
-
§5 Container —
nx.h
-
§5.2
nx_superblock_t
nx_newest_mounted_version
nx_mkb_locker
-
-
§6 Object Maps —
omap.h
-
§6.7 Object Map Flags
OMAP_VALID_FLAGS
-
-
§7 Volumes —
fs.h
-
§7.1
apfs_superblock_t
apfs_cloneinfo_id_epoch
apfs_cloneinfo_xid
apfs_snap_meta_ext_oid
apfs_volume_group_id
apfs_integrity_meta_oid
apfs_fext_tree_oid
apfs_fext_tree_type
reserved_type
reserved_oid
-
§7.3 Volume Flags
APFS_FS_RESERVED_80
APFS_FS_RESERVED_100
APFS_FS_FLAGS_VALID_MASK
(name corrected from erroneousAPFS_FS_FALGS_VALID_MASK
)
-
§7.4 Volume Roles
APFS_VOL_ROLE_UPDATE
APFS_VOL_ROLE_XART
APFS_VOL_ROLE_HARDWARE
APFS_VOL_ROLE_BACKUP
APFS_VOL_ROLE_RESERVED_7
APFS_VOL_ROLE_RESERVED_8
(name changed fromAPFS_VOL_ROLE_RESERVED_200
)APFS_VOL_ROLE_ENTERPRISE
APFS_VOL_ROLE_RESERVED_10
APFS_VOL_ROLE_PRELOGIN
-
§7.5 Optional Volume Feature Flags
APFS_FEATURE_STRICTATIME
APFS_FEATURE_VOLGRP_SYSTEM_INO_SPACE
-
§7.7 Incompatible Volume Feature Flags
APFS_INCOMPAT_INCOMPLETE_RESTORE
APFS_INCOMPAT_SEALED_VOLUME
-
-
§8 File-System Objects —
j.h
-
§8.1
j_key_t
SYSTEM_OBJ_ID_MARK
-
§8.3
j_inode_val_t
uncompressed_size
-
-
§9 File-System Constants —
jconst.h
-
§9.1
j_obj_types
APFS_TYPE_FILE_INFO
-
§9.3
j_inode_flags
INODE_FAST_PROMOTE
INODE_HAS_UNCOMPRESSED_SIZE
INODE_IS_PURGEABLE
INODE_WANTS_TO_BE_PURGEABLE
INODE_IS_SYNC_ROOT
INODE_SNAPSHOT_COW_EXEMPTION
-
§9.6 Inode Numbers
PURGEABLE_DIR_INO_NUM
UNIFIED_ID_SPACE_MARK
-
§9.7 Extended Attributes Constants
FIRMLINK_EA_NAME
APFS_COW_EXEMPT_COUNT_NAME
-
-
§11 Extended Fields —
xf.h
-
§11.3 Extended-Field Types
INO_EXT_TYPE_PURGEABLE_FLAGS
INO_EXT_TYPE_ORIG_SYNC_ROOT_ID
-
-
§13 Snapshot Metadata —
snap.h
- New datatype: §13.6
snap_meta_ext_obj_phys_t
- New datatype: §13.7
snap_meta_ext_t
- New datatype: §13.6
-
§14 B-Trees —
btree.h
-
New datatype: §14.4
btn_index_node_val_t
-
§14.8 B-Tree Flags
BTREE_HASHED
BTREE_NOHEADER
-
§14.10 B-Tree Node Flags
BTNODE_HASHED
BTNODE_NOHEADER
-
-
§15 Encryption —
crypto.h
-
§15.7 Protection Classes
PROTECTION_CLASS_M
-
§15.8 Encryption Identifiers
APFS_UNASSIGNED_CRYPTO_ID
-
§15.12 Keybag Tags
KB_TAG_WRAPPING_M_KEY
KB_TAG_VOLUME_M_KEY
-
-
New chapter: §16 Sealed Volumes —
sealed.h
-
New datatype: §16.1
integrity_meta_phys_t
-
§16.2 Integrity Metadata Version Constants
INTEGRITY_META_VERSION_INVALID
INTEGRITY_META_VERSION_1
INTEGRITY_META_VERSION_2
INTEGRITY_META_VERSION_HIGHEST
-
§16.3 Integrity Metadata Flags
APFS_SEAL_BROKEN
-
§16.4
apfs_hash_type_t
APFS_HASH_INVALID
APFS_HASH_SHA256
APFS_HASH_SHA512_256
APFS_HASH_SHA384
APFS_HASH_SHA512
APFS_HASH_MIN
APFS_HASH_MAX
APFS_HASH_DEFAULT
-
New datatype: §16.5
fext_tree_key_t
-
New datatype: §16.6
fext_tree_val_t
-
New datatype: §16.7
j_file_info_key_t
J_FILE_INFO_LBA_MASK
J_FILE_INFO_TYPE_MASK
J_FILE_INFO_TYPE_SHIFT
-
New datatype: §16.8
j_file_info_val_t
-
§16.9
j_obj_file_info_type
APFS_FILE_INFO_DATA_HASH
-
New datatype: §16.10
j_file_data_hash_val_t
-
-
§17 Space Manager —
spaceman.h
- New datatype: §17.4
spaceman_free_queue_entry_t
- New datatype: §17.4
-
-
Updated existing functions in
src/apfs/string
to handle new symbols:-
In
btree.c
:get_btn_flags_string()
get_bt_info_flags_string()
-
In
fs.c
:get_apfs_features_string()
get_apfs_incompatible_features_string()
get_apfs_fs_flags_string()
get_apfs_role_string()
print_apfs_superblock()
-
In
j.c
get_j_inode_internal_flags()
print_j_inode_val()
-
In
nx.c
:get_nx_flags_string()
print_nx_superblock()
-
In
object.c
:get_o_type_string()
get_o_subtype_string()
-