summaryrefslogtreecommitdiff
path: root/doc/dev/rbd-diff.rst
blob: e40124a002f2d02a4f2883b37c0f766415a835cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
RBD Incremental Backup
======================

This is a simple streaming file format for representing a diff between
two snapshots (or a snapshot and the head) of an RBD image.

Header
~~~~~~

"rbd diff v1\n"

Metadata records
~~~~~~~~~~~~~~~~

Every record has a one byte "tag" that identifies the record type,
followed by some other data.

Metadata records come in the first part of the image.  Order is not
important, as long as all the metadata records come before the data
records.

From snap
---------

- u8: 'f'
- le32: snap name length
- snap name

To snap
-------

- u8: 't'
- le32: snap name length
- snap name

Size
----

- u8: 's'
- u64: (ending) image size

Data Records
~~~~~~~~~~~~

These records come in the second part of the sequence.

Updated data
------------

- u8: 'w'
- le64: offset
- le64: length
- length bytes of actual data

Zero data
---------

- u8: 'z'
- le64: offset
- le64: length


Final Record
~~~~~~~~~~~~

End
---

- u8: 'e'