Module Upper.V4

type gced = {
  1. suffix_start_offset : Optint.Int63.t;
  2. generation : int;
  3. latest_gc_target_offset : Optint.Int63.t;
  4. suffix_dead_bytes : Optint.Int63.t;
}

Similar to from_v3_gced. New fields:

latest_gc_target_offset is the commit on which the latest gc was called on.

suffix_dead_bytes is the number of bytes at the beginning of the suffix that should be considered unreachable after a GC.

val gced_t : gced Irmin.Type.t
type status =
  1. | From_v1_v2_post_upgrade of V3.from_v1_v2_post_upgrade
  2. | No_gc_yet
  3. | Used_non_minimal_indexing_strategy
  4. | Gced of gced
  5. | T1
  6. | T2
  7. | T3
  8. | T4
  9. | T5
  10. | T6
  11. | T7
  12. | T8
  13. | T9
  14. | T10
  15. | T11
  16. | T12
  17. | T13
  18. | T14
  19. | T15

From_v1_v2_post_upgrade similar to V3.From_v1_v2_post_upgrade

No_gc_yet corresponds to a pack store that was created using `V3 or above. It never underwent a GC.

Used_non_minimal_indexing_strategy corresponds to a pack store that was created using `V3 or above. It never underwent a GC and it will never be possible to GC it because entries were pushed using a non-minimal indexing strategy.

Gced is a `V3 or `V4 store that was GCed at least once.

The T* tags are provisional tags that the binary decoder is aware of and that may in the future be used to add features to the `V4 payload.

val status_t : status Irmin.Type.t
type t = {
  1. dict_end_poff : Optint.Int63.t;
  2. appendable_chunk_poff : Optint.Int63.t;
  3. upgraded_from_v3_to_v4 : bool;
  4. checksum : Optint.Int63.t;
  5. chunk_start_idx : int;
  6. chunk_num : int;
  7. status : status;
}

The same as V3.t, with the following modifications:

New fields

  • upgraded_from_v3_to_v4 recalls if the store was originally created in `V3.
  • chunk_start_idx is the index for the starting chunk of the suffix
  • chunk_num is the number of chunks in the suffix
  • checksum for storing a checksum of the payload
  • appendable_chunk_poff is a value used by the chunked suffix. See Chunked_suffix.S.appendable_chunk_poff for more details.

Removed fields

  • suffix_end_poff is replaced by appendable_chunk_poff
val t : t Irmin.Type.t