diff --git a/docs/doxygen/dox/H5.format.4.0.dox b/docs/doxygen/dox/H5.format.4.0.dox
index 2f51e43b5f9..ef0246744f9 100644
--- a/docs/doxygen/dox/H5.format.4.0.dox
+++ b/docs/doxygen/dox/H5.format.4.0.dox
@@ -35,6 +35,7 @@ Navigate back: \ref index "Main" / \ref SPEC
+Fields: Metadata Cache Image Block
+
+ | Field Name |
+ Description |
+
+
+ | Signature |
+ The ASCII character string “MDCI” is used to indicate the beginning of the
+ Metadata Cache Image Block. This gives file consistency checking utilities a better chance of
+ reconstructing a damaged file. |
+
+
+ | Version |
+ This is the version number for the Metadata Cache Image Block and this document describes version 0. |
+
+
+ | Flags |
+ This field holds flags for the block, as follows:
+
+
+ | Bits |
+ Description |
+
+
+ 0 |
+ If set, adaptive cache resize status information follows the entries, below. The library does
+ not currently generate this information, so this bit is always 0. |
+
+
+ 1-7 |
+ Reserved (zero). |
+
+ |
+
+
+ | Image Data Length |
+ This is the total length, in bytes, of the metadata cache image block, including this header, all
+ entries, and the trailing checksum. This is the same value stored in the “Metadata Cache Image
+ Block Size” field of the @ref subsubsec_fmt4_dataobject_hdr_msg_mdci that points to this
+ block. |
+
+
+ | Number of Entries |
+ This is the number of metadata cache entry records, \a N, that follow the header. This value must be
+ greater than 0. |
+
+
+ | Image Entry \#i (i = 0 to (N-1)) |
+ These are the \a N metadata cache entry records captured in the image, one per entry that was
+ resident in the metadata cache at file close. The format of each entry is described below in
+ “Layout: Image Entry”. |
+
+
+ | Checksum |
+ This is the checksum for the entire metadata cache image block, computed over the header and all
+ \a N entries that precede it (that is, over the first “Image Data Length” minus 4 bytes
+ of the block). |
+
+
+
+
+Fields: Image Entry
+
+ | Field Name |
+ Description |
+
+
+ | Type ID |
+ This is an internal, implementation-defined identifier for the type of metadata cache client (for
+ example, superblock, object header, B-tree node, or fractal heap header) that owns this entry. The
+ library uses this value to determine how to reconstruct the entry in memory when the image is
+ loaded. |
+
+
+ | Flags |
+ This field holds flags for the entry, as follows:
+
+
+ | Bits |
+ Description |
+
+
+ 0 |
+ If set, the entry was dirty (not yet written to the file) at the time the image was
+ generated. |
+
+
+ 1 |
+ If set, the entry was on the cache’s LRU list, and “LRU Rank”, below, gives
+ its position on that list. |
+
+
+ 2 |
+ If set, the entry is the parent in one or more flush dependency relationships. |
+
+
+ 3 |
+ If set, the entry is a child in one or more flush dependency relationships, and the entry
+ record is followed by one or more “Flush Dependency Parent Address” fields,
+ below. |
+
+
+ 4-7 |
+ Reserved (zero). |
+
+ |
+
+
+ | Ring |
+ This identifies the flush dependency “ring” the entry belongs to, which constrains the
+ order in which entries are flushed relative to entries in other rings (entries in an outer ring are
+ always flushed before entries in an inner ring), as follows:
+
+
+ | Value |
+ Description |
+
+
+ 1 |
+ User data (datasets and groups). Outermost ring; flushed first. |
+
+
+ 2 |
+ Raw data free-space manager. |
+
+
+ 3 |
+ Metadata free-space manager. |
+
+
+ 4 |
+ Superblock extension. |
+
+
+ 5 |
+ Superblock. Innermost ring; flushed last. |
+
+ |
+
+
+ | Age |
+ This is the number of file opens and closes since the entry was last accessed by the application. The
+ library uses this value to decide whether to continue including the entry in future cache
+ images. |
+
+
+ | Flush Dependency Child Count |
+ This is the number of flush dependency children for which this entry is the parent. This is non-zero
+ only if bit 2 of “Flags”, above, is set. |
+
+
+ | Flush Dependency Dirty Child Count |
+ This is the number of flush dependency children, of the total given in “Flush Dependency Child
+ Count”, above, that were dirty at the time the image was generated. |
+
+
+ | Flush Dependency Parent Count |
+ This is the number of flush dependency parents for which this entry is a child, \a K. This is
+ non-zero only if bit 3 of “Flags”, above, is set. |
+
+
+ | LRU Rank |
+ If bit 1 of “Flags”, above, is set, this is the entry’s position on the cache’s
+ LRU list (lower values are closer to the head of the list, i.e. more recently used). Otherwise, this
+ field has the value -1. |
+
+
+ | Entry Offset |
+ This is the address in the file at which the entry’s metadata is (or will be) stored. |
+
+
+ | Entry Length |
+ This is the length, in bytes, of the “Entry Image”, below. |
+
+
+ | Flush Dependency Parent Address \#K |
+ This is the file address of a flush dependency parent entry of this entry. There are as many of
+ these fields as given by “Flush Dependency Parent Count”, above. |
+
+
+ | Entry Image |
+ This is a byte-for-byte copy of the entry’s serialized on-disk image, as it would otherwise
+ appear at “Entry Offset”, above, in the file (for example, the disk format of an object
+ header, B-tree node, or other cached metadata structure). |
+
+
+
\section sec_fmt4_dataobject IV. Disk Format: Level 2 - Data Objects
Data objects contain the “real” user-visible information in the file. These objects compose
the scientific data and other information which are generally thought of as “data” by the
@@ -4662,9 +4951,9 @@ Header messages are aligned on 8-byte boundaries for version 1 object headers.
| Size of Header Message \#n Data |
- This value specifies the number of bytes of header message data following the header message type and
- length information for the current message. The size includes padding bytes to make the message a multiple
- of eight bytes. |
+ This value specifies the number of bytes of header message data following the header message type,
+ length, flags, and reserved fields for the current message. The size includes padding bytes to make
+ the message a multiple of eight bytes. |
+
+ | Header Message Name: Metadata Cache Image |
+
+
+ | Header Message Type: 0x0018 |
+
+
+ | Length: Fixed |
+
+
+ | Status: Optional; may not be repeated. |
+
+
+ | Description: |
+ This message records the location and size of a metadata cache image block written to the file, when
+ generation of a metadata cache image is enabled for the file (see #H5Pset_mdc_image_config). The
+ metadata cache image block is a serialized copy of the contents of the metadata cache at file close,
+ which allows the library to reconstruct the cache directly from this block the next time the file is
+ opened, instead of reconstructing it by parsing the file's metadata. This can significantly reduce the
+ time needed to open a file containing many pieces of cached metadata.
+ The message is written to the superblock extension only when the file is closed with a metadata
+ cache image pending, and is removed from the superblock extension once the library has read the
+ referenced block back in at the next file open when the file is opened for read/write access, at
+ which point the file space it occupied is reclaimed. If the file is opened read-only, the message
+ and image block are left unchanged. See @ref subsec_fmt4_infra_mdci for the format of the metadata
+ cache image block itself. |
+
+
+ | Format of Data: See the tables below. |
+
+
+
+