path: root/Documentation/technical/index-format.txt
diff options
Diffstat (limited to 'Documentation/technical/index-format.txt')
1 files changed, 41 insertions, 0 deletions
diff --git a/Documentation/technical/index-format.txt b/Documentation/technical/index-format.txt
index db35726..7c4d67a 100644
--- a/Documentation/technical/index-format.txt
+++ b/Documentation/technical/index-format.txt
@@ -314,3 +314,44 @@ The remaining data of each directory block is grouped by type:
- An ewah bitmap, the n-th bit indicates whether the n-th index entry
+== End of Index Entry
+ The End of Index Entry (EOIE) is used to locate the end of the variable
+ length index entries and the begining of the extensions. Code can take
+ advantage of this to quickly locate the index extensions without having
+ to parse through all of the index entries.
+ Because it must be able to be loaded before the variable length cache
+ entries and other index extensions, this extension must be written last.
+ The signature for this extension is { 'E', 'O', 'I', 'E' }.
+ The extension consists of:
+ - 32-bit offset to the end of the index entries
+ - 160-bit SHA-1 over the extension types and their sizes (but not
+ their contents). E.g. if we have "TREE" extension that is N-bytes
+ long, "REUC" extension that is M-bytes long, followed by "EOIE",
+ then the hash would be:
+ SHA-1("TREE" + <binary representation of N> +
+ "REUC" + <binary representation of M>)
+== Index Entry Offset Table
+ The Index Entry Offset Table (IEOT) is used to help address the CPU
+ cost of loading the index by enabling multi-threading the process of
+ converting cache entries from the on-disk format to the in-memory format.
+ The signature for this extension is { 'I', 'E', 'O', 'T' }.
+ The extension consists of:
+ - 32-bit version (currently 1)
+ - A number of index offset entries each consisting of:
+ - 32-bit offset from the begining of the file to the first cache entry
+ in this block of entries.
+ - 32-bit count of cache entries in this block