1--- Implicit backing file ---
2
3{"execute": "blockdev-add", "arguments": {"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/PID-top.img"}, "node-name": "node0"}}
4{"return": {}}
5
6bs->filename: TEST_DIR/PID-top.img
7bs->backing_file: file:TEST_DIR/PID-base.img
8bs->backing->bs->filename: TEST_DIR/PID-base.img
9
10{"execute": "blockdev-del", "arguments": {"node-name": "node0"}}
11{"return": {}}
12
13--- change-backing-file ---
14
15{"execute": "blockdev-add", "arguments": {"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/PID-top.img"}, "node-name": "node0"}}
16{"return": {}}
17{"execute": "change-backing-file", "arguments": {"backing-file": "null-co://", "device": "node0", "image-node-name": "node0"}}
18{"return": {}}
19
20bs->filename: json:{"backing": {"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/PID-base.img"}}, "driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/PID-top.img"}}
21bs->backing_file: null-co://
22bs->backing->bs->filename: TEST_DIR/PID-base.img
23
24{"execute": "change-backing-file", "arguments": {"backing-file": "TEST_DIR/PID-base.img", "device": "node0", "image-node-name": "node0"}}
25{"return": {}}
26
27bs->filename: TEST_DIR/PID-top.img
28bs->backing_file: TEST_DIR/PID-base.img
29bs->backing->bs->filename: TEST_DIR/PID-base.img
30
31{"execute": "change-backing-file", "arguments": {"backing-file": "file:TEST_DIR/PID-base.img", "device": "node0", "image-node-name": "node0"}}
32{"return": {}}
33
34bs->filename: json:{"backing": {"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/PID-base.img"}}, "driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/PID-top.img"}}
35bs->backing_file: file:TEST_DIR/PID-base.img
36bs->backing->bs->filename: TEST_DIR/PID-base.img
37
38{"execute": "blockdev-del", "arguments": {"node-name": "node0"}}
39{"return": {}}
40{"execute": "blockdev-add", "arguments": {"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/PID-top.img"}, "node-name": "node0"}}
41{"return": {}}
42
43bs->filename: TEST_DIR/PID-top.img
44bs->backing_file: file:TEST_DIR/PID-base.img
45bs->backing->bs->filename: TEST_DIR/PID-base.img
46
47{"execute": "blockdev-del", "arguments": {"node-name": "node0"}}
48{"return": {}}
49
50--- Override backing file ---
51
52{"execute": "blockdev-add", "arguments": {"driver": "null-co", "node-name": "null"}}
53{"return": {}}
54{"execute": "blockdev-add", "arguments": {"backing": "null", "driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/PID-top.img"}, "node-name": "node0"}}
55{"return": {}}
56
57bs->filename: json:{"backing": {"driver": "null-co"}, "driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/PID-top.img"}}
58bs->backing_file: TEST_DIR/PID-base.img
59bs->backing->bs->filename: null-co://
60
61{"execute": "blockdev-del", "arguments": {"node-name": "node0"}}
62{"return": {}}
63{"execute": "blockdev-del", "arguments": {"node-name": "null"}}
64{"return": {}}
65{"execute": "blockdev-add", "arguments": {"backing": null, "driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/PID-top.img"}, "node-name": "node0"}}
66{"return": {}}
67
68bs->filename: json:{"backing": null, "driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/PID-top.img"}}
69bs->backing_file: TEST_DIR/PID-base.img
70bs->backing: (none)
71
72{"execute": "blockdev-add", "arguments": {"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/PID-base.img"}, "node-name": "original-backing"}}
73{"return": {}}
74{"execute": "blockdev-snapshot", "arguments": {"node": "original-backing", "overlay": "node0"}}
75{"return": {}}
76
77bs->filename: TEST_DIR/PID-top.img
78bs->backing_file: TEST_DIR/PID-base.img
79bs->backing->bs->filename: TEST_DIR/PID-base.img
80
81{"execute": "blockdev-del", "arguments": {"node-name": "node0"}}
82{"return": {}}
83{"execute": "blockdev-del", "arguments": {"node-name": "original-backing"}}
84{"return": {}}
85