]> granicus.if.org Git - git/commit
ieot: add Index Entry Offset Table (IEOT) extension
authorBen Peart <benpeart@microsoft.com>
Wed, 10 Oct 2018 15:59:37 +0000 (11:59 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 11 Oct 2018 06:32:48 +0000 (15:32 +0900)
commit3255089ada6fc8f18d41dfc37cf66d7af994603d
treed275c6ff552357cbae9ef5772ea7f2bb2c4fdb1f
parentabb4bb83845dc012ffe1c04750d1a09edd598a82
ieot: add Index Entry Offset Table (IEOT) extension

This patch enables addressing the CPU cost of loading the index by adding
additional data to the index that will allow us to efficiently multi-
thread the loading and conversion of cache entries.

It accomplishes this by adding an (optional) index extension that is a
table of offsets to blocks of cache entries in the index file.  To make
this work for V4 indexes, when writing the cache entries, it periodically
"resets" the prefix-compression by encoding the current entry as if the
path name for the previous entry is completely different and saves the
offset of that entry in the IEOT.  Basically, with V4 indexes, it
generates offsets into blocks of prefix-compressed entries.

Signed-off-by: Ben Peart <benpeart@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/technical/index-format.txt
read-cache.c