minor - kaitai for netdata datafiles (#14312)
Timotej S committed
Jan 25, 2023 at 18:19 UTC
2b8b8bc89693dbe7d4b5b35f5d7493c10b266e6d
1 file changed
+74
database/engine/datafile.ksy
new
+74
@@ -0,0 +1,74 @@
1
+meta:
2
+ id: netdata_datafile
3
+ endian: le
4
+
5
+seq:
6
+ - id: hdr
7
+ type: header
8
+ size: 4096
9
+ - id: extents
10
+ type: extent
11
+ repeat: eos
12
+
13
+types:
14
+ header:
15
+ seq:
16
+ - id: magic
17
+ contents: "netdata-data-file"
18
+ - id: reserved
19
+ size: 15
20
+ - id: version
21
+ contents: "1.0"
22
+ - id: reserved1
23
+ size: 13
24
+ - id: tier
25
+ type: u1
26
+ extent_page_descr:
27
+ seq:
28
+ - id: type
29
+ type: u1
30
+ enum: page_type
31
+ - id: uuid
32
+ size: 16
33
+ - id: page_len
34
+ type: u4
35
+ - id: start_time_ut
36
+ type: u8
37
+ - id: end_time_ut
38
+ type: u8
39
+ enums:
40
+ page_type:
41
+ 0: metrics
42
+ 1: tier
43
+ extent_header:
44
+ seq:
45
+ - id: payload_length
46
+ type: u4
47
+ - id: compression_algorithm
48
+ type: u1
49
+ enum: compression_algos
50
+ - id: number_of_pages
51
+ type: u1
52
+ - id: page_descriptors
53
+ type: extent_page_descr
54
+ repeat: expr
55
+ repeat-expr: number_of_pages
56
+ enums:
57
+ compression_algos:
58
+ 0: rrd_no_compression
59
+ 1: rrd_lz4
60
+ extent_trailer:
61
+ seq:
62
+ - id: crc32_checksum
63
+ type: u4
64
+ extent:
65
+ seq:
66
+ - id: header
67
+ type: extent_header
68
+ - id: payload
69
+ size: header.payload_length
70
+ - id: trailer
71
+ type: extent_trailer
72
+ - id: padding
73
+ size: (((_io.pos + 4095) / 4096) * 4096) - _io.pos
74
+ # the extent size is made to always be a multiple of 4096