mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-09-20 05:44:53 +03:00
Compare commits
1734 Commits
v4.7.0-rc2
...
v5.2.0
Author | SHA1 | Date | |
---|---|---|---|
|
7966be03bd | ||
|
80e83d63dc | ||
|
ff6440136c | ||
|
8ad592f016 | ||
|
0647c3d3ac | ||
|
b6dde413d3 | ||
|
bc4d4cb8f8 | ||
|
dab3abfcf5 | ||
|
4fbc8ddcd0 | ||
|
8535a298a2 | ||
|
21a9cb986c | ||
|
24b092c404 | ||
|
83b1808ca2 | ||
|
3f7cba3f5e | ||
|
54eb3e096b | ||
|
3c0b1cfdf6 | ||
|
dbd15d6c45 | ||
|
97b729effe | ||
|
087a74e160 | ||
|
598641f460 | ||
|
a6d822cee3 | ||
|
a487890d37 | ||
|
6b90a84738 | ||
|
3d7c683a27 | ||
|
0bc965342b | ||
|
d2d875fd2f | ||
|
5a303994ff | ||
|
d3ea986af2 | ||
|
78be51b3e5 | ||
|
421861824c | ||
|
1c6b6c0ba1 | ||
|
0b4fac6afd | ||
|
57d252c740 | ||
|
e5e23e3fb9 | ||
|
29cd1877ac | ||
|
c34b3eefdf | ||
|
34086fc59e | ||
|
78b03a7770 | ||
|
dd60bd62d3 | ||
|
444c5e7c43 | ||
|
b914e0eca3 | ||
|
e1949c7045 | ||
|
b6a53bf907 | ||
|
2ec6faea79 | ||
|
c4d6a121a8 | ||
|
637d72f985 | ||
|
d3aab99096 | ||
|
b204941865 | ||
|
e4d96324b4 | ||
|
6a9c3fbade | ||
|
24181fa0a9 | ||
|
ac5b6cfea8 | ||
|
a3d179807a | ||
|
015e71c54d | ||
|
5a8ffaec76 | ||
|
036a4521f3 | ||
|
6be2414820 | ||
|
48a2668151 | ||
|
ac442713e6 | ||
|
1ed46f3a22 | ||
|
287415e219 | ||
|
1c2866a1f6 | ||
|
155064e0ed | ||
|
e18e9b72a9 | ||
|
1432916983 | ||
|
96509caf0f | ||
|
280a2b41e6 | ||
|
2efb42e9ac | ||
|
4e650259f9 | ||
|
834f64ca47 | ||
|
9884b2d185 | ||
|
f1d6585300 | ||
|
530c1671e1 | ||
|
6fa656384e | ||
|
bb66ff2677 | ||
|
710990ec41 | ||
|
8d09acf66d | ||
|
769eab7d78 | ||
|
9d3aa7c6e9 | ||
|
9f33f4772b | ||
|
5e752513d8 | ||
|
1193d9737b | ||
|
01e11ebcb6 | ||
|
ac0379043a | ||
|
dc8d3dc6cd | ||
|
5d23cd1c52 | ||
|
e055a816af | ||
|
1ab05da228 | ||
|
ffc0fbebe2 | ||
|
de80cdbcc9 | ||
|
55c2ab3e2b | ||
|
02c4e24db7 | ||
|
ced0898f86 | ||
|
4819f54bd3 | ||
|
40bc98ddaf | ||
|
f105627992 | ||
|
0baf6945ed | ||
|
967eef2b95 | ||
|
063042c7d0 | ||
|
320a1480d0 | ||
|
f32d4e3e71 | ||
|
5eaaa10679 | ||
|
e911de2a30 | ||
|
504492a63d | ||
|
c824ce1ba0 | ||
|
24bba8797f | ||
|
a8bf6194fa | ||
|
0ea2bd054f | ||
|
d68c9068c9 | ||
|
8bffb1fcd5 | ||
|
4cbf6830c1 | ||
|
0ecf885be1 | ||
|
5a1e05b427 | ||
|
646eb207eb | ||
|
c1202cbc92 | ||
|
fdf6c89ee7 | ||
|
6433783be3 | ||
|
05be8d8b06 | ||
|
1db9d0efbf | ||
|
fc65c22b73 | ||
|
8c08a99745 | ||
|
971872ca27 | ||
|
bdc76386d3 | ||
|
3145285a06 | ||
|
4885e9fdd9 | ||
|
5f13df4cf4 | ||
|
0973dbd841 | ||
|
afbf71af24 | ||
|
7981eadf92 | ||
|
181b68ad9d | ||
|
66bb371e8e | ||
|
9cc92b1db9 | ||
|
f9c38c723a | ||
|
669018bc9c | ||
|
21deeaf02f | ||
|
5d010c3df6 | ||
|
686803a1a2 | ||
|
9f4e35dc73 | ||
|
7cd63604cf | ||
|
3aa190f2a4 | ||
|
28c8403ed0 | ||
|
1e1cf8e66b | ||
|
a994541b8a | ||
|
8645a13dec | ||
|
523565cd7f | ||
|
2327ff7b7f | ||
|
7128604328 | ||
|
e3119a3323 | ||
|
91e85d8939 | ||
|
9aac3da9b0 | ||
|
697fb8a381 | ||
|
cd35c4af60 | ||
|
871093b6a3 | ||
|
bf68454c46 | ||
|
ad12932481 | ||
|
0b89ef5596 | ||
|
5c11e46065 | ||
|
c2195bee24 | ||
|
ed454facd4 | ||
|
c53acd2ad1 | ||
|
2e556e00ca | ||
|
f7b9d6f78b | ||
|
61d1abd5f1 | ||
|
e95a66349a | ||
|
bb1f41c075 | ||
|
3bd4ed4630 | ||
|
0eca80e606 | ||
|
e7e6861489 | ||
|
d8b2ec2149 | ||
|
ccc7ffb4ef | ||
|
bd45cedbe5 | ||
|
f8aecea779 | ||
|
9bf194c23f | ||
|
96e5c4177e | ||
|
25e2e4e04f | ||
|
f703b487ad | ||
|
cf6b65a19e | ||
|
912fe2df9d | ||
|
b8cfdee42b | ||
|
6849abb835 | ||
|
16210b1de4 | ||
|
9b75154c07 | ||
|
21b2651e72 | ||
|
ca20690e9f | ||
|
41e3d35e09 | ||
|
23c15e34c3 | ||
|
c555ec2416 | ||
|
1c560052a8 | ||
|
75a9169881 | ||
|
7e73137495 | ||
|
2d69af2907 | ||
|
0b7d544c88 | ||
|
eb437cfdf8 | ||
|
afa15d78cb | ||
|
70d0689812 | ||
|
a6a25d5cb6 | ||
|
632ac8f8e7 | ||
|
c2bc419131 | ||
|
229a0358f0 | ||
|
4cd13478ac | ||
|
641438fb75 | ||
|
1c2a9260e8 | ||
|
4ec884e387 | ||
|
47cbc92987 | ||
|
f38d553e2d | ||
|
2a00ef6e71 | ||
|
5f2adfab59 | ||
|
0b3f7ec884 | ||
|
3ad7c2e610 | ||
|
265e6924f5 | ||
|
ca1471622d | ||
|
349d49637c | ||
|
c0a4a98eab | ||
|
cd01258714 | ||
|
625c78b5c1 | ||
|
3e8c2f30b1 | ||
|
b635eb8575 | ||
|
d24bb02b8c | ||
|
4332c4d345 | ||
|
94bbe3da4f | ||
|
9d458bd913 | ||
|
f2cb0c8934 | ||
|
5a64c202cc | ||
|
ec5a11910d | ||
|
fb0597574d | ||
|
09eb1ae0ec | ||
|
411cdaf884 | ||
|
612c0d4bb8 | ||
|
ff86e79faf | ||
|
6e31c4b27e | ||
|
288e0ab106 | ||
|
8b71b0c727 | ||
|
1dd24167b8 | ||
|
6d9542e340 | ||
|
60943f0eec | ||
|
30439c1b81 | ||
|
6000bd1342 | ||
|
ad340f225a | ||
|
5a8ceba2f3 | ||
|
0c744afe1a | ||
|
c125a6ef2a | ||
|
31044d6ff2 | ||
|
c615c14246 | ||
|
e3e8fa1fb4 | ||
|
3f91afe020 | ||
|
b647d2195d | ||
|
d16e5b15ed | ||
|
68ade25372 | ||
|
d433f3cdd8 | ||
|
43527af27c | ||
|
804d2003e6 | ||
|
31eb3093c0 | ||
|
3c876d2428 | ||
|
04406d87d2 | ||
|
8b5b80f4c5 | ||
|
d947fa8a08 | ||
|
d21f89cc1a | ||
|
cdd592553a | ||
|
849a0cfef1 | ||
|
23018c0823 | ||
|
eae99ca97e | ||
|
2c0b8d6a08 | ||
|
23e0bf1c4e | ||
|
bf8c8755dc | ||
|
ceb6725d94 | ||
|
408aeebcef | ||
|
60a0d32e64 | ||
|
bc2502f0fc | ||
|
186bb479d0 | ||
|
4d7ea75e1e | ||
|
73bc4f185e | ||
|
ff3f22e0ec | ||
|
7a05c739c2 | ||
|
f38ef0fac0 | ||
|
e387afeb9a | ||
|
d38d512f4e | ||
|
21dd152927 | ||
|
1b57269cbc | ||
|
1e90fa89d1 | ||
|
44a9b872e8 | ||
|
86c0ed6f70 | ||
|
cae6619ad5 | ||
|
c502955909 | ||
|
1ceb0e9337 | ||
|
f43eb6807e | ||
|
7ff982f0bc | ||
|
8532ee4a9c | ||
|
bf72ee049e | ||
|
14b6a1854f | ||
|
3d46d4a1bc | ||
|
17eb6fc1b8 | ||
|
956817ef49 | ||
|
fcf78395d7 | ||
|
696239ba6f | ||
|
62cb9c335c | ||
|
7a686fd2ea | ||
|
cf7c521287 | ||
|
a6aedcf39b | ||
|
3b72c84ff1 | ||
|
77c1cf4da2 | ||
|
74e7da0605 | ||
|
d7e5baa5a1 | ||
|
27b6ca7d9c | ||
|
81c5e75e57 | ||
|
8c0fe9c649 | ||
|
9dadc73029 | ||
|
0b5b221300 | ||
|
a59590c7eb | ||
|
094f29df07 | ||
|
d93b9e8829 | ||
|
b5cc0a7f29 | ||
|
9c5fa79fd7 | ||
|
2de7dcba7e | ||
|
ab2e90006d | ||
|
4ec3cf9a0f | ||
|
3fd1a15968 | ||
|
d9a4115892 | ||
|
d9bf6cef32 | ||
|
6696155ae6 | ||
|
784cd46fb8 | ||
|
73426c55b7 | ||
|
3b1988f3e3 | ||
|
5dded8c806 | ||
|
642c06fd63 | ||
|
05fe03505a | ||
|
05fade52fe | ||
|
538b83ae68 | ||
|
08af6ca362 | ||
|
85f574600a | ||
|
d893ce1574 | ||
|
035db37394 | ||
|
4ad00278f6 | ||
|
66a508d2cc | ||
|
933f136844 | ||
|
8f6ac3b740 | ||
|
dc87a715ee | ||
|
4653ae65af | ||
|
89dda12b8d | ||
|
c7637521d6 | ||
|
d1164bfdca | ||
|
dc29a46777 | ||
|
e0b3e4e11c | ||
|
21dd762de8 | ||
|
4c85929a73 | ||
|
c3878c94f4 | ||
|
a0585301cd | ||
|
b6f32c9ec2 | ||
|
1fb4c01a8e | ||
|
af993b172c | ||
|
bc817ddfdd | ||
|
4a08acd77e | ||
|
afc47b7785 | ||
|
6b8a31e26c | ||
|
53c11edef9 | ||
|
5a690f695f | ||
|
a1dec315c9 | ||
|
f2cbb94eab | ||
|
00fbb9e516 | ||
|
07a9c8bae8 | ||
|
fc380c2e01 | ||
|
31c3c35c94 | ||
|
c6266ddb02 | ||
|
9eaa2a61c5 | ||
|
367d96a5d6 | ||
|
4ff74a806a | ||
|
e58ca588cc | ||
|
194105fef1 | ||
|
4a3c3682f3 | ||
|
e89f877214 | ||
|
f349f3c53f | ||
|
0a09e59457 | ||
|
c1f6a3269c | ||
|
dd08d27fc2 | ||
|
61be05a00f | ||
|
661307b4b2 | ||
|
793a9293ca | ||
|
8aa47cc072 | ||
|
30e4faac2f | ||
|
5ced12dece | ||
|
dfeb3e5984 | ||
|
b07b8b7750 | ||
|
2254c1cfb8 | ||
|
8d7245441a | ||
|
8d249df9c9 | ||
|
232266839c | ||
|
fe78d2fda9 | ||
|
2e1e2b910c | ||
|
87a46f5d8f | ||
|
483679d48f | ||
|
60046a2365 | ||
|
cd11ea73d0 | ||
|
8d068f3601 | ||
|
dd7682dd12 | ||
|
09a95068fb | ||
|
bb5c6e7a96 | ||
|
c5bc4437ee | ||
|
26adfe7596 | ||
|
397369853d | ||
|
96837ab140 | ||
|
ab8aa7ccc8 | ||
|
aa42d364a5 | ||
|
8270b3d0cd | ||
|
448a094717 | ||
|
47f94f4591 | ||
|
90fd9bd989 | ||
|
2593a1bd1a | ||
|
6e64899284 | ||
|
0f5958f5c5 | ||
|
62eef965ba | ||
|
947448e212 | ||
|
e063707556 | ||
|
37f75d56da | ||
|
ef41ff4219 | ||
|
4d964373b5 | ||
|
239b535d99 | ||
|
25d05051b3 | ||
|
f15111f65c | ||
|
b3b108a2dd | ||
|
e896947350 | ||
|
269d9c1aca | ||
|
226d069ee4 | ||
|
145dc7dd8e | ||
|
c9b1b443a1 | ||
|
746be2a526 | ||
|
ec0793ded4 | ||
|
e2087c2955 | ||
|
6c2e8566f8 | ||
|
b6aacfc435 | ||
|
23ab209272 | ||
|
786f47414d | ||
|
0278c77da8 | ||
|
2ee00d5905 | ||
|
9ca7ca3d9f | ||
|
cf3c525a45 | ||
|
bd734bbbce | ||
|
daefda165b | ||
|
24c4fab8ec | ||
|
58afa434d7 | ||
|
cc9c141b08 | ||
|
d542b45490 | ||
|
3926d0aa49 | ||
|
5de5432e34 | ||
|
bf5cf610f2 | ||
|
6097d1c8d2 | ||
|
fb3b41d225 | ||
|
290383cb2f | ||
|
33a07b8e41 | ||
|
438ff36317 | ||
|
dafef600f4 | ||
|
d152c727c6 | ||
|
5817dec014 | ||
|
fe1b683fd0 | ||
|
12a5e10f02 | ||
|
d163b940a7 | ||
|
ac62e297db | ||
|
087a7c9a88 | ||
|
f7fd10e5f8 | ||
|
0ebb057a2a | ||
|
e6cb63d2ef | ||
|
40204c05c5 | ||
|
4640131ba3 | ||
|
e0e16a3d9a | ||
|
aa60562869 | ||
|
d7be1b1c5e | ||
|
527da4ce9b | ||
|
27a9ebf281 | ||
|
d85e8e400b | ||
|
12f4bf80a7 | ||
|
a042c94880 | ||
|
e9528f41c6 | ||
|
b71de701b8 | ||
|
ac5d4e6cb0 | ||
|
78b148c3c8 | ||
|
cb6a46364b | ||
|
3b4819802b | ||
|
0c5d8300c5 | ||
|
55ee6ac8de | ||
|
c73f752e46 | ||
|
e25492444f | ||
|
3d6ba96ff6 | ||
|
c97679c680 | ||
|
a3d0d77e74 | ||
|
82fe58ff26 | ||
|
abb293a56f | ||
|
c900474e6a | ||
|
27eb324668 | ||
|
9380d92d6f | ||
|
632a8697c6 | ||
|
740aeb349f | ||
|
9de317d0d1 | ||
|
86d1f08669 | ||
|
939f254234 | ||
|
a27031c408 | ||
|
12a51f372a | ||
|
022eeddf29 | ||
|
27c8fd7490 | ||
|
5b13da5ca2 | ||
|
5724dca135 | ||
|
f87eb56067 | ||
|
e691b150e4 | ||
|
095d36d052 | ||
|
9ab441c8c2 | ||
|
9f25cdf710 | ||
|
126f77b55f | ||
|
cfaebe837c | ||
|
09d7daf380 | ||
|
b459fde50b | ||
|
cf335683de | ||
|
c7b59b66ab | ||
|
0e12707680 | ||
|
bfff747313 | ||
|
468841eabd | ||
|
3dcdd18b6b | ||
|
1aa4257569 | ||
|
3bdb6e826f | ||
|
16058045d0 | ||
|
e97d7733fe | ||
|
a470758468 | ||
|
aa4f3bbf2c | ||
|
1d2a62b2e0 | ||
|
0b856db8ab | ||
|
060e07c3ca | ||
|
1e5634ec79 | ||
|
44601a0e96 | ||
|
e1c01b2252 | ||
|
0d13790695 | ||
|
53a0fa7366 | ||
|
dcda2bf4c1 | ||
|
84966103be | ||
|
0624ac3fa8 | ||
|
48dbd70e39 | ||
|
8393bee03d | ||
|
33ae373638 | ||
|
ca9ccd8adb | ||
|
49b45a1cf4 | ||
|
fcb30c40e9 | ||
|
41adfe8ca9 | ||
|
fa5db009c9 | ||
|
d3e5c3605a | ||
|
4b23f18d2c | ||
|
4c4ff7a1a0 | ||
|
0f110d5ac8 | ||
|
375f5317b7 | ||
|
77908cfcda | ||
|
57f5262868 | ||
|
bd5519deb7 | ||
|
5657e22212 | ||
|
0c17685760 | ||
|
17ddfd420a | ||
|
112f3a8d0f | ||
|
903315dc8f | ||
|
18b8f67745 | ||
|
f538f5ed3a | ||
|
174309a1f8 | ||
|
2c48e84b75 | ||
|
6dbe6e4cec | ||
|
4c44c9f456 | ||
|
4834c9a4bd | ||
|
3ce86316a8 | ||
|
bf688a0067 | ||
|
b20e957d0a | ||
|
466a3e5dfa | ||
|
bc096fc4a2 | ||
|
180f3207ae | ||
|
d5aa75e64b | ||
|
821dd6d80a | ||
|
1ee7294bed | ||
|
9916f2a3c8 | ||
|
e698af1768 | ||
|
c856f72251 | ||
|
a2cdee57d2 | ||
|
f035e2cd26 | ||
|
9f2cf5cc18 | ||
|
9fbb035e6f | ||
|
5f02df444b | ||
|
ceb3255cdf | ||
|
ba045165d4 | ||
|
0082ee5b5e | ||
|
1450b19269 | ||
|
5d693534fa | ||
|
a1c453dc08 | ||
|
c75e615d3e | ||
|
e96c47516c | ||
|
65fc17d2f6 | ||
|
b330600a69 | ||
|
38362460dd | ||
|
5028781621 | ||
|
763b76cbf6 | ||
|
9a4199304f | ||
|
813e775983 | ||
|
8a69cbc181 | ||
|
7550480036 | ||
|
1587ba7f62 | ||
|
2f92d59c78 | ||
|
d2ddcdc1a2 | ||
|
6bf74e3199 | ||
|
1f20da92d8 | ||
|
d04fbe7dab | ||
|
e687538d3a | ||
|
cf46075293 | ||
|
13395548b2 | ||
|
6fcc344082 | ||
|
a98d9daf07 | ||
|
b4a4e8f71a | ||
|
0f87356c51 | ||
|
0e7707d830 | ||
|
066d91ec79 | ||
|
023f0672d4 | ||
|
eb3f5a2c6d | ||
|
44993d312d | ||
|
443fc056a0 | ||
|
b419ea6a90 | ||
|
865b201479 | ||
|
1620bb0a30 | ||
|
dc93997a83 | ||
|
4c22fd717b | ||
|
a87a75e579 | ||
|
b76f4dec37 | ||
|
b79885b7f7 | ||
|
b99fdb60b2 | ||
|
deb3b59b74 | ||
|
49a0bcfdf2 | ||
|
e00771dfc3 | ||
|
d63c82df8b | ||
|
fbcb73866b | ||
|
d962f56fb6 | ||
|
ad063f6192 | ||
|
8457fd5034 | ||
|
4deed5f3c7 | ||
|
6709479a2f | ||
|
2fd435b785 | ||
|
a5445a3706 | ||
|
df2b31ffea | ||
|
0440d5e90f | ||
|
68e26a9ea2 | ||
|
8a8b14718e | ||
|
aa2da99ee8 | ||
|
9a5ce5cb29 | ||
|
4028d7a46a | ||
|
616beb17d4 | ||
|
629fdca0d0 | ||
|
73b9b8fe36 | ||
|
5846179a2e | ||
|
22d7222ec0 | ||
|
398d5766b3 | ||
|
850bb78a6e | ||
|
8c191a9061 | ||
|
458a3453da | ||
|
eaaecd9f55 | ||
|
e29ae70ba7 | ||
|
ea34af1f35 | ||
|
3b0856c4ba | ||
|
3f2fa8f303 | ||
|
6d3c96f0d9 | ||
|
a1dce96236 | ||
|
85a8e364f3 | ||
|
8440f83529 | ||
|
9222b402e5 | ||
|
1328a830ce | ||
|
ea13c12940 | ||
|
5d884f3d3c | ||
|
6b67eeef8c | ||
|
1dcba456fa | ||
|
4bf49bc566 | ||
|
12116c018d | ||
|
76709a76ba | ||
|
253ddf5a75 | ||
|
61900c4cda | ||
|
ee39011a09 | ||
|
a11e333779 | ||
|
7523e60a94 | ||
|
566ada91d5 | ||
|
43620843fc | ||
|
fea4cdd2d2 | ||
|
ee498250e7 | ||
|
98c128fd99 | ||
|
3eff4bc2c5 | ||
|
7d1fc9f8d6 | ||
|
74a7d6fb2b | ||
|
ab5c7dbee3 | ||
|
6d8be31f2a | ||
|
7a22fa7dce | ||
|
e67b6dcf36 | ||
|
7d114e1b72 | ||
|
aedd20386d | ||
|
f15789ecac | ||
|
12977fba8b | ||
|
c830187a01 | ||
|
cdc1b1d71b | ||
|
08d44263c8 | ||
|
54e969c538 | ||
|
c160275d9c | ||
|
9e7a163b13 | ||
|
988a0e0e38 | ||
|
b9e8a6f7e5 | ||
|
a26cc472ff | ||
|
023d69dfc8 | ||
|
ef8a87a09d | ||
|
94fce25546 | ||
|
64eca3d5e3 | ||
|
16c123679c | ||
|
401030499b | ||
|
797bdb3ce8 | ||
|
6e27a81a17 | ||
|
74dfa15abe | ||
|
3d23a434d2 | ||
|
eeafebc51d | ||
|
620d9dd598 | ||
|
41d37d31b3 | ||
|
86caae3953 | ||
|
3bc3cca7bb | ||
|
2f78ca803a | ||
|
6b618d2d5f | ||
|
6db0d03383 | ||
|
ae3955f486 | ||
|
af36f8a641 | ||
|
8bec5488a6 | ||
|
6a4d938dd3 | ||
|
7662194bf3 | ||
|
7c9dcfed5a | ||
|
1879568744 | ||
|
2055188363 | ||
|
d04e064775 | ||
|
62adfa6755 | ||
|
30a6f91686 | ||
|
ae05211a36 | ||
|
3b71f2e42d | ||
|
3bba4825c2 | ||
|
d8393b56e2 | ||
|
4bf0f390ed | ||
|
170f83506e | ||
|
f2b4039194 | ||
|
850cfd75be | ||
|
5f9e211c93 | ||
|
8bf89dc837 | ||
|
9b86bbccb3 | ||
|
f136b83139 | ||
|
a2d3dea9d4 | ||
|
17f6a257f1 | ||
|
6fd4c8f878 | ||
|
a404ac3476 | ||
|
b644011918 | ||
|
bca2346641 | ||
|
ad25a68826 | ||
|
c5f92bf558 | ||
|
e266a41f1e | ||
|
030f963129 | ||
|
682be11505 | ||
|
6dec641394 | ||
|
55aa7ab182 | ||
|
f6b839f7b4 | ||
|
13500ee289 | ||
|
6c87c75a0c | ||
|
6bb582bff8 | ||
|
4a8d9d4953 | ||
|
73ce3911aa | ||
|
52bf9ada8e | ||
|
63cbad4e05 | ||
|
6a306a6b8f | ||
|
8c618e17d1 | ||
|
a962af7df3 | ||
|
a507edef33 | ||
|
72e8c721eb | ||
|
75d4defe8f | ||
|
df7b679c58 | ||
|
d56afb8e39 | ||
|
9b197f0e36 | ||
|
083b74cd20 | ||
|
93a1659171 | ||
|
c938c35363 | ||
|
787e4a3dc8 | ||
|
81594afb05 | ||
|
43479005ee | ||
|
e7d14bf965 | ||
|
33b0a3bab8 | ||
|
73163a0e86 | ||
|
adb15b5add | ||
|
406473990c | ||
|
ab6ca81276 | ||
|
ab995c1fe9 | ||
|
7a227688a8 | ||
|
fa7a66d079 | ||
|
a3dbaa3647 | ||
|
3d3647e14f | ||
|
801f8cfb37 | ||
|
f06e94af07 | ||
|
f00cde7f11 | ||
|
d0ba8d6553 | ||
|
181acfe9a8 | ||
|
0d832b873c | ||
|
da87aa5963 | ||
|
9047b9aec0 | ||
|
34f77437da | ||
|
38757744c2 | ||
|
b7bd97fbe7 | ||
|
5ea24bbb54 | ||
|
7431b3eb9a | ||
|
5f1e6a7d48 | ||
|
b092a4357d | ||
|
0fc746aa54 | ||
|
f04bdf5368 | ||
|
06fa3366c6 | ||
|
c6db273082 | ||
|
8d5df64449 | ||
|
3355edd6f0 | ||
|
6dd2a2ae63 | ||
|
5772885d28 | ||
|
7c700108d6 | ||
|
0ffe70a929 | ||
|
0c8df11071 | ||
|
001495909b | ||
|
43be65a481 | ||
|
484370dcf1 | ||
|
4ea5a41e16 | ||
|
2707d4f8bc | ||
|
49ec5769c9 | ||
|
a6d3357c8b | ||
|
fc1c16bccd | ||
|
c7e03df8c0 | ||
|
421e0eeec7 | ||
|
75ecfd2521 | ||
|
8f5e50e003 | ||
|
dab3d5d350 | ||
|
95049d7054 | ||
|
79c7cbaf46 | ||
|
a98c0a2fef | ||
|
c2a8256991 | ||
|
872b15dea6 | ||
|
803a73980a | ||
|
70d9c1a768 | ||
|
429f5454d5 | ||
|
4a4c418110 | ||
|
028f9a6886 | ||
|
5ac9889a69 | ||
|
0ba9786d8a | ||
|
6427bfc8b3 | ||
|
ea72bc65df | ||
|
cf09ef6cda | ||
|
6bf28f3860 | ||
|
d2edbec2bf | ||
|
ca768886d8 | ||
|
f2476cac74 | ||
|
6a8c174902 | ||
|
7b6116fb89 | ||
|
a3ab6d42d8 | ||
|
70c2933da2 | ||
|
11c8aca938 | ||
|
ab5d49d46c | ||
|
f2f14e3f45 | ||
|
04983c3c6a | ||
|
8fac64db5e | ||
|
10bca495e0 | ||
|
6452e2f5e1 | ||
|
fb01e1a44d | ||
|
4fb769f5e0 | ||
|
2e2b0d69a9 | ||
|
2c5dd1ee4c | ||
|
0b3fc37e61 | ||
|
2c7791a869 | ||
|
ea3c3f8846 | ||
|
b7a02c35af | ||
|
c2b7a5f23d | ||
|
388998ac76 | ||
|
fb0d0d6c54 | ||
|
30c225c673 | ||
|
5de4d410a2 | ||
|
784e690ecb | ||
|
2a33dc41bb | ||
|
92e601d08c | ||
|
f80eae8c2a | ||
|
a641e044c1 | ||
|
635c45a925 | ||
|
4797d7412c | ||
|
6c6001bddb | ||
|
40136bd316 | ||
|
01ca4010d8 | ||
|
e6df863294 | ||
|
4079f47677 | ||
|
cfe99a336d | ||
|
53680aa379 | ||
|
da3dc5a382 | ||
|
a0ac0b913e | ||
|
de100ceddb | ||
|
1195e10b98 | ||
|
0ebe4e60e6 | ||
|
00063c2c95 | ||
|
e79e0cacc5 | ||
|
a780ee8ab5 | ||
|
f78c3dde57 | ||
|
627595641d | ||
|
fad7036ad4 | ||
|
632dab43b4 | ||
|
6427aca725 | ||
|
d447293893 | ||
|
d051e7f703 | ||
|
b70fb35d81 | ||
|
4ab8447af7 | ||
|
dfe11a705c | ||
|
e5f704c971 | ||
|
a54acc8570 | ||
|
103a4245ae | ||
|
c257352797 | ||
|
8ca9fcec24 | ||
|
10c99feb05 | ||
|
d1a44634ac | ||
|
728830be9b | ||
|
0ba9afc6b2 | ||
|
79b73251fb | ||
|
f877ec1020 | ||
|
addb82bc5f | ||
|
e0c4d4fcf0 | ||
|
b44f1cd7d7 | ||
|
b3e6a2ea3a | ||
|
4479bd4611 | ||
|
466b78acb7 | ||
|
c1a4fb04f9 | ||
|
9ed9124d0d | ||
|
5918df1e62 | ||
|
232ab2f200 | ||
|
246303dc5b | ||
|
2a1248badd | ||
|
89a877b312 | ||
|
f5eadd1d92 | ||
|
f2bc59e48e | ||
|
359dc694f7 | ||
|
c3ec4b8d6a | ||
|
b618a45b0f | ||
|
56557b4898 | ||
|
926cb125a4 | ||
|
5ce02870c4 | ||
|
10ee1270ff | ||
|
361f772f6f | ||
|
1b3ea6daaf | ||
|
900aae2c77 | ||
|
ca13c64868 | ||
|
1fb8766421 | ||
|
0ca65b7b61 | ||
|
7ea55e04c3 | ||
|
fc3990c7e6 | ||
|
1851233d31 | ||
|
85f223a8f2 | ||
|
0f17023ac7 | ||
|
d40b820c5d | ||
|
f30ac207ad | ||
|
7282f455aa | ||
|
37bb6facfc | ||
|
0ea259b6bf | ||
|
6ee53e54dc | ||
|
50d5cb0df3 | ||
|
ab575b7b77 | ||
|
a520981740 | ||
|
511df17aec | ||
|
2ebcff3a74 | ||
|
7fb5e319d9 | ||
|
72e5285aa3 | ||
|
2745f0e08e | ||
|
7f65248ce5 | ||
|
7cfd1fbb13 | ||
|
c39a0993dc | ||
|
c10a6d50a4 | ||
|
f886271410 | ||
|
ed357cef18 | ||
|
45b439c3af | ||
|
414afc8dbe | ||
|
358b6b593e | ||
|
4abd8d01cd | ||
|
5c7bfc6b53 | ||
|
acf522e85a | ||
|
6933ebc497 | ||
|
30727583ae | ||
|
f3a4fbd24b | ||
|
1862a55462 | ||
|
7a879323a9 | ||
|
ab51b22c07 | ||
|
2e258dae61 | ||
|
7db886e71c | ||
|
4ec225fc4e | ||
|
224389011c | ||
|
b6f7825992 | ||
|
31903c4a5d | ||
|
99c33a7cbf | ||
|
87b4e1cd7e | ||
|
c99e954973 | ||
|
3af2c5ddad | ||
|
87c87f41f6 | ||
|
82576d8f35 | ||
|
1fdcaac3d3 | ||
|
900289b767 | ||
|
404766dbcc | ||
|
55b4fc78b6 | ||
|
e9b28cc9bc | ||
|
db521e7d03 | ||
|
73fc8c491e | ||
|
80d1ed9773 | ||
|
7dc31fe503 | ||
|
2c4c7de159 | ||
|
0c6ad476a8 | ||
|
9d42d51eef | ||
|
458b952bee | ||
|
c541177314 | ||
|
318d807a0b | ||
|
dfbd7315c0 | ||
|
91684829be | ||
|
e05d8e570b | ||
|
1845991d9b | ||
|
1e63dea999 | ||
|
d9043c06e6 | ||
|
d81f3e02d7 | ||
|
edacf25da7 | ||
|
b44fd42016 | ||
|
4dc37a39cf | ||
|
1e9c472452 | ||
|
d7420430ce | ||
|
1845d3ad5d | ||
|
fa808763b2 | ||
|
a30e6d17c9 | ||
|
08e3b1c0dc | ||
|
06af6609e9 | ||
|
86def3c88c | ||
|
f9a0019fea | ||
|
f497b1ad59 | ||
|
ae8484586c | ||
|
4d95d35637 | ||
|
eb448cb5c0 | ||
|
44d0db011d | ||
|
cc9e80c593 | ||
|
3dc3e58b32 | ||
|
fe8eb8839a | ||
|
57a9e49232 | ||
|
61b4e8aaf1 | ||
|
29682196d8 | ||
|
eb1b551d21 | ||
|
3f4914e03c | ||
|
07c9d6601d | ||
|
912c6b22fc | ||
|
f8f525ff86 | ||
|
b2485c4ad7 | ||
|
1fb73537d7 | ||
|
0aadf5ffe2 | ||
|
de4cbbb556 | ||
|
d9baf0d75b | ||
|
631f72fc7b | ||
|
2de10ac492 | ||
|
8f1bfd8fdb | ||
|
759bb2110e | ||
|
590cc60de5 | ||
|
568a417224 | ||
|
4cfd709021 | ||
|
76ddd01ecd | ||
|
634bd528cb | ||
|
b532546823 | ||
|
e6f53e7a4b | ||
|
fe2bd0210e | ||
|
dc54b3ecc9 | ||
|
600462834f | ||
|
b183a75319 | ||
|
e0eb8a8a69 | ||
|
b7378a6d29 | ||
|
a15fe1247d | ||
|
df1a9c7380 | ||
|
b663d4329c | ||
|
515aa0c184 | ||
|
f2f84b4d4a | ||
|
1f6ca26d72 | ||
|
728b9ed61a | ||
|
1bebb904fe | ||
|
c658764dec | ||
|
9923584c62 | ||
|
3972a25f1d | ||
|
4f0854e7df | ||
|
dd45c2710f | ||
|
0d5244cc86 | ||
|
88d24aaccc | ||
|
414c51b7a1 | ||
|
daf4e2abca | ||
|
53762677a8 | ||
|
34eca98522 | ||
|
ecf8619430 | ||
|
1215195fd8 | ||
|
067aad26be | ||
|
fa30ee04a2 | ||
|
73dfa2cf74 | ||
|
c55ff370f8 | ||
|
59603b62fa | ||
|
081bdb4d68 | ||
|
0367524b4f | ||
|
2deb74f1fe | ||
|
84e7d8f461 | ||
|
0a1b565382 | ||
|
de09ae2f46 | ||
|
61d1253364 | ||
|
e1fc7ec081 | ||
|
eed7b205c4 | ||
|
7129b9f354 | ||
|
58da6e3c26 | ||
|
b0ae508344 | ||
|
0ba4da5871 | ||
|
7730a2ead4 | ||
|
e5c1fbca24 | ||
|
6a6925b9b7 | ||
|
c57adc3300 | ||
|
f39f881dc1 | ||
|
7580c82980 | ||
|
3934beb857 | ||
|
3163de7d0e | ||
|
ae00e73cfe | ||
|
dc87ee0f3e | ||
|
53ca6fa4ea | ||
|
5f931fe391 | ||
|
0a75de2219 | ||
|
312063b766 | ||
|
eeb7059aa3 | ||
|
27cc9f6ac1 | ||
|
255e073263 | ||
|
394809694a | ||
|
8cb06b7f35 | ||
|
47647bda03 | ||
|
96d62d9721 | ||
|
41cc4ca107 | ||
|
55f9f486e1 | ||
|
0ef33062ef | ||
|
5e866f7f7a | ||
|
022c4b7a9c | ||
|
fcd1c865e1 | ||
|
eca9d21e6c | ||
|
9c4afbda34 | ||
|
72d48f1891 | ||
|
071488983c | ||
|
4b4ed783ba | ||
|
c54d3d00ae | ||
|
bfa2bd7e38 | ||
|
0029eace52 | ||
|
e95bcd8d18 | ||
|
094c97ffad | ||
|
167ba7d08d | ||
|
a91ebc8990 | ||
|
a60b7d7582 | ||
|
ef0027ceb6 | ||
|
70e637c10a | ||
|
6262ea7148 | ||
|
494fa1fd1b | ||
|
45ea5688ab | ||
|
aca7ff5f70 | ||
|
105e116bda | ||
|
794af564f4 | ||
|
6aa75b9462 | ||
|
fd54e4fdc8 | ||
|
ee32939fff | ||
|
1a07aca24a | ||
|
ee9175cbe2 | ||
|
ef6bbfff78 | ||
|
4e8b37d497 | ||
|
88a109a17d | ||
|
615106fb10 | ||
|
41ce88159e | ||
|
11ceedcda0 | ||
|
4a5b7b7868 | ||
|
9aec374b01 | ||
|
f747a2b5c4 | ||
|
315e1105b6 | ||
|
3083bf18da | ||
|
ae69bda5c2 | ||
|
2c4df6c68b | ||
|
d1eac92784 | ||
|
212dc9286a | ||
|
d1c1f2c2f5 | ||
|
c3073af66f | ||
|
20118c0e79 | ||
|
240ee7c1d8 | ||
|
c3a208af0d | ||
|
9f4abfa601 | ||
|
b3a3759b62 | ||
|
81ce42b087 | ||
|
ded3d47bbe | ||
|
a8df96526a | ||
|
cc5997a9ae | ||
|
e24767eb41 | ||
|
84ee32685a | ||
|
90d4caf5b9 | ||
|
0aad10cdae | ||
|
207860927a | ||
|
a2f0b97ab7 | ||
|
7a44ffa6bd | ||
|
592ed505e1 | ||
|
0f464afde1 | ||
|
9e8e74f463 | ||
|
24b74d187c | ||
|
a6fd5b596a | ||
|
21b18ea5d9 | ||
|
91afd53cb8 | ||
|
9c2fbe97c6 | ||
|
2c4a6a34a3 | ||
|
9a8e040264 | ||
|
8aad8432f6 | ||
|
bba16ff111 | ||
|
a5dc60012c | ||
|
17d88dc10a | ||
|
1d1e264f13 | ||
|
9d6be3ff79 | ||
|
b9be36b691 | ||
|
f183b87fc1 | ||
|
e6565d54db | ||
|
b4833b2c2f | ||
|
0d6b87335c | ||
|
d466739138 | ||
|
28831e1f1e | ||
|
478e5f90fd | ||
|
f49a5e3bf4 | ||
|
29ad952f7e | ||
|
30522c78c1 | ||
|
cfa4b909b3 | ||
|
362b4ee616 | ||
|
c3d0d7cc8a | ||
|
1c596f4964 | ||
|
988113f4fa | ||
|
96f657e378 | ||
|
5255593faa | ||
|
870282cb43 | ||
|
83405f92a9 | ||
|
31b3584b2d | ||
|
99b8ef7a98 | ||
|
b8176d6eaa | ||
|
b04b82f8cb | ||
|
605496be60 | ||
|
b08396a5fe | ||
|
96f4c12d54 | ||
|
36780a86ae | ||
|
8d5bba08c7 | ||
|
0e56e6dfb9 | ||
|
a5c4e705a5 | ||
|
a54824e7d0 | ||
|
3f2214c2cd | ||
|
4e54c4b289 | ||
|
2f22364688 | ||
|
4f5bc6cc10 | ||
|
5a7c336b4a | ||
|
575a32f63f | ||
|
0087378f67 | ||
|
b9df1d7607 | ||
|
4a198ed43e | ||
|
46504a939f | ||
|
87c972552c | ||
|
66a85cb136 | ||
|
b0d4365a7f | ||
|
1458746f05 | ||
|
8d8f6b4e88 | ||
|
167ce7117b | ||
|
531bba5220 | ||
|
25dde37373 | ||
|
208d6e6f5a | ||
|
f1e8d2f09a | ||
|
03abfd2a6e | ||
|
294397b63b | ||
|
6b00f4f41c | ||
|
68c5d413ea | ||
|
68b2596f83 | ||
|
2569ba1338 | ||
|
e47949357b | ||
|
4608af30f9 | ||
|
879fde3272 | ||
|
8f0f8425d7 | ||
|
296e05b54b | ||
|
8496c17c53 | ||
|
da4b0fd9d3 | ||
|
82452a5d7f | ||
|
14d03b27bf | ||
|
e08e792493 | ||
|
4b8faeb9fe | ||
|
7c94eebfe2 | ||
|
912b8a5970 | ||
|
90dba47a07 | ||
|
4f1107614d | ||
|
ccc72d5cbd | ||
|
67125e0d33 | ||
|
29183778af | ||
|
4de4e4bc99 | ||
|
e7b7b61768 | ||
|
18f90481cd | ||
|
7a10a6a598 | ||
|
48080527d6 | ||
|
5a128712bc | ||
|
a017bae1ae | ||
|
1170864198 | ||
|
dc788d2540 | ||
|
58fcdbf263 | ||
|
1d3e2dff52 | ||
|
62bac69542 | ||
|
58cfd0a135 | ||
|
ffac10c971 | ||
|
c0790e3a09 | ||
|
f4966b8522 | ||
|
808e27a109 | ||
|
49825dcf31 | ||
|
b05eeacbfd | ||
|
80c8237679 | ||
|
641a95c9b6 | ||
|
3a1cdb06fd | ||
|
4c64768e8f | ||
|
ccad7b5888 | ||
|
818e9a3b90 | ||
|
91750d8564 | ||
|
8e0266d5bb | ||
|
9ed91bed4e | ||
|
a7a2b06702 | ||
|
6e7e965dcd | ||
|
4471f7704c | ||
|
35966308b5 | ||
|
297ed93ae0 | ||
|
86a6cb13e9 | ||
|
c570d05175 | ||
|
1dbf6222dd | ||
|
98ca1d52a2 | ||
|
a7b4eb7d26 | ||
|
6814ac678e | ||
|
2b03534eeb | ||
|
7bff646d71 | ||
|
f4ccf1ecdc | ||
|
0d981bcefc | ||
|
a1d3fc09f8 | ||
|
a05bdd5533 | ||
|
aa2be13674 | ||
|
49272e5162 | ||
|
f86993112a | ||
|
50cb91dbc5 | ||
|
7fec0e59d3 | ||
|
6a84053789 | ||
|
f479b34245 | ||
|
9ac1969978 | ||
|
8524faf8c4 | ||
|
0a7101c89b | ||
|
0f4d7daa8c | ||
|
a26de856f9 | ||
|
edf59855cf | ||
|
2a3df5fac5 | ||
|
1981c79c4b | ||
|
8f43c7a698 | ||
|
9f8d170dab | ||
|
9b9c6528a2 | ||
|
61ff6021d8 | ||
|
9bd1979e37 | ||
|
b79d858518 | ||
|
a77f532691 | ||
|
4d1d5c92bd | ||
|
567fcbdca5 | ||
|
5a4d90ae6a | ||
|
8e2c887ffa | ||
|
8324224572 | ||
|
b8ca5afc22 | ||
|
3f728c720b | ||
|
df63fd1f8f | ||
|
94db4bf86e | ||
|
2aa5385c58 | ||
|
495f60edcb | ||
|
d080c00166 | ||
|
63bd23a6ad | ||
|
91756fb64a | ||
|
353ce9453e | ||
|
438587033b | ||
|
862f630825 | ||
|
568f746eaf | ||
|
93fa369df5 | ||
|
709260add9 | ||
|
11bb7f1561 | ||
|
525ac6885b | ||
|
cda8ed0646 | ||
|
38411bb831 | ||
|
48572f8825 | ||
|
4fe4847438 | ||
|
89f52abd07 | ||
|
0542640a9c | ||
|
171c700cd8 | ||
|
c8f08a5346 | ||
|
e1bb7fffe2 | ||
|
f7394dcf01 | ||
|
9aa8226d86 | ||
|
1efcf202e7 | ||
|
50f61a46fc | ||
|
7a86201dd6 | ||
|
38a3fb5647 | ||
|
3a365ef697 | ||
|
034ef217d7 | ||
|
b4ddf5ae62 | ||
|
87f71398fe | ||
|
e7730d196b | ||
|
8ba65c4d95 | ||
|
478da65fb4 | ||
|
5cae1f47c4 | ||
|
d6b8838dd8 | ||
|
9f81dc1081 | ||
|
a4c12a5096 | ||
|
3a286a4e26 | ||
|
f0982d5faa | ||
|
8f3c00c6e8 | ||
|
efdbfe57c7 | ||
|
fddf92836a | ||
|
425b9f8aa6 | ||
|
6830c81307 | ||
|
d628f6dd4e | ||
|
b9384391d5 | ||
|
4d4ade13f3 | ||
|
1f14f13c3d | ||
|
6bb6595956 | ||
|
ae118eb5f5 | ||
|
6a2bf49ddf | ||
|
ec686c9dc2 | ||
|
5b12336690 | ||
|
5fa43c7f3b | ||
|
95a85779a2 | ||
|
25456e0470 | ||
|
125ac4c0a8 | ||
|
199eee6aae | ||
|
b1a0f691ce | ||
|
8004767030 | ||
|
466bea0117 | ||
|
0615c8436a | ||
|
6ef37ed3b8 | ||
|
0df6266988 | ||
|
b7ccd0757d | ||
|
e94415d5a5 | ||
|
79e0e62e78 | ||
|
cd33eaa251 | ||
|
f4d7ca62a4 | ||
|
72a8b8ecc5 | ||
|
9580c09163 | ||
|
07e01beb35 | ||
|
eedf83ceca | ||
|
6707ffd11c | ||
|
e6d77a75c4 | ||
|
8ae9b49f5a | ||
|
5dab984ed0 | ||
|
54b5b0ac39 | ||
|
55af06187c | ||
|
7882c6eca5 | ||
|
65ba48d267 | ||
|
bebf732cfa | ||
|
2b09065e0f | ||
|
7f3aedacac | ||
|
41510b1b74 | ||
|
269a8e2718 | ||
|
e294615f9d | ||
|
8370466323 | ||
|
d182fac0bb | ||
|
5436fd75d8 | ||
|
c840448ebb | ||
|
857aac1f55 | ||
|
fd9a0368b9 | ||
|
8cbb0c76ba | ||
|
87d9fc5b3b | ||
|
900c58b7f9 | ||
|
e92f8bad66 | ||
|
64bfbd7ceb | ||
|
53f43deb0d | ||
|
02fe32d3aa | ||
|
32f199250b | ||
|
2edd0bcda6 | ||
|
dfaf5c6de1 | ||
|
8f50f9ca24 | ||
|
44809a28ec | ||
|
4baa08ace1 | ||
|
c57b0be0cc | ||
|
dad061101d | ||
|
8dc1b6ce50 | ||
|
c4047141a0 | ||
|
064024e70a | ||
|
b148d08049 | ||
|
152c0f0bf5 | ||
|
57890b2ab4 | ||
|
d6564037e8 | ||
|
5e2df3d07f | ||
|
d7f77dd6d5 | ||
|
12264c12c8 | ||
|
b549a66edf | ||
|
229a8b5d35 | ||
|
42a3fcc02b | ||
|
47941ea7f5 | ||
|
61629d5be3 | ||
|
f60af21594 | ||
|
57d35b72c9 | ||
|
1f221d610d | ||
|
1a2dbb5595 | ||
|
8b62008d2b | ||
|
4988f4b347 | ||
|
5cf1b25708 | ||
|
f9085cf702 | ||
|
7b526ea57c | ||
|
36c5989c54 | ||
|
0772c34685 | ||
|
63b4ed0dd3 | ||
|
1602aa28f8 | ||
|
95d19cd015 | ||
|
d4a8fa0cd1 | ||
|
429281e7b7 | ||
|
996f101431 | ||
|
f6399b9d89 | ||
|
7eb56dcd9e | ||
|
f5c7d8890b | ||
|
4374900040 | ||
|
2585a79e32 | ||
|
a033182f04 | ||
|
6225626b6f | ||
|
c3875129d9 | ||
|
e995904c56 | ||
|
34e9c29357 | ||
|
bfdd20c5a9 | ||
|
95b29fc222 | ||
|
79eec7992b | ||
|
3072ded354 | ||
|
063509a193 | ||
|
075dd1185d | ||
|
2979bbfb0f | ||
|
b9057c639f | ||
|
b0b1ed2f7b | ||
|
c2b9cf6733 | ||
|
cf12efe088 | ||
|
71029ef588 | ||
|
0396cf5336 | ||
|
2f754b26cb | ||
|
fad65432ce | ||
|
a7b236345b | ||
|
6901a9321d | ||
|
5095394e1e | ||
|
e1fdffd374 | ||
|
1a3de67001 | ||
|
7948ad4129 | ||
|
e9e3a3c0fe | ||
|
3df264080e | ||
|
ed5efee914 | ||
|
9f01f9b4e4 | ||
|
943f2d53c6 | ||
|
83d86e348e | ||
|
0d131d3893 | ||
|
b37b41f868 | ||
|
99d5a516d0 | ||
|
c846767bfa | ||
|
c88ef717c8 | ||
|
6efa07e7b9 | ||
|
1bb379ad8e | ||
|
5f0c1c1e25 | ||
|
b98d936c19 | ||
|
93c6239f21 | ||
|
db343ca830 | ||
|
efc29ab2e5 | ||
|
d7434ae800 | ||
|
2c476dbc07 | ||
|
e3a42028af | ||
|
6af8417415 | ||
|
8f6887998b | ||
|
58fcee6f3a | ||
|
12093f1fea | ||
|
dc3d2c9f8c | ||
|
e44840c441 | ||
|
5309b6cb64 | ||
|
5745f08cea | ||
|
1ff45609d6 | ||
|
4a7abc67d5 | ||
|
49c322145b | ||
|
9e52c64966 | ||
|
5165ff0971 | ||
|
9403b63102 | ||
|
212df3f957 | ||
|
322d2e58d0 | ||
|
993d85ae5e | ||
|
9813081119 | ||
|
1468536d42 | ||
|
602ecdf2ab | ||
|
8e8a9dc3fa | ||
|
6d855abc14 | ||
|
62fd05194a | ||
|
4a7a7808dc | ||
|
c9318499a7 | ||
|
7a9ca0fae9 | ||
|
6e22ab2701 | ||
|
c0b68c6e19 | ||
|
c34f11998e | ||
|
3e26b476b5 | ||
|
8b8aefb3d6 | ||
|
35b5b244da | ||
|
385eb8399b | ||
|
997283b54b | ||
|
aaf34cb901 | ||
|
22baf6e08c | ||
|
21c34b86be | ||
|
afd5a27575 | ||
|
b916a25e8a | ||
|
d52dd5911b | ||
|
2f8b91ee74 | ||
|
c3be8bb423 | ||
|
55e5eb9478 | ||
|
88983855d5 | ||
|
a3676f3763 | ||
|
562990849a | ||
|
11e1f11dd3 | ||
|
eaa765ef6b | ||
|
311a8097f9 | ||
|
c9ed87a610 | ||
|
a618b06493 | ||
|
ab9a145926 | ||
|
37131adada | ||
|
d41c162177 | ||
|
ccafaacd61 | ||
|
e2c23982dd | ||
|
da24db2d30 | ||
|
679895eb5d | ||
|
16858439de | ||
|
5bdcef13d1 | ||
|
317e3b2865 | ||
|
b49a3ad799 | ||
|
b907fd75fa | ||
|
b984bbcc0d | ||
|
d7bc6af648 | ||
|
30f9a64cbd | ||
|
51c02bd4f9 | ||
|
4ed727a015 | ||
|
c9e5be4e9c | ||
|
3fb2c456ba | ||
|
15dd03e082 | ||
|
18adfc8735 | ||
|
46a73f4801 | ||
|
61d340a27d | ||
|
972acbded1 | ||
|
8174e41bc4 | ||
|
4f446cad17 | ||
|
bd96c753e2 | ||
|
3e0786cc46 | ||
|
09d35afd2c | ||
|
7ea7342996 | ||
|
36504033ae | ||
|
b38a85a321 | ||
|
d6a1d0af62 | ||
|
b64b14cf8e | ||
|
484e13f1a5 | ||
|
cc786a8fd6 | ||
|
b975afc725 | ||
|
8041471858 | ||
|
f6aa977fab | ||
|
e7d9a8f1f0 | ||
|
ffd31684be | ||
|
b6ba2b961a | ||
|
a2e5aad003 | ||
|
5ea2abb3bf | ||
|
0149464afc | ||
|
47da84e090 | ||
|
e39c66d3ce | ||
|
60b4fd9021 | ||
|
e447775273 | ||
|
a0ba31c006 | ||
|
9ed175fbc2 | ||
|
2cfc000f70 | ||
|
0376939dd0 | ||
|
b3b7b38092 | ||
|
2f3681d62e | ||
|
cb50436c6f | ||
|
d00c77ae45 | ||
|
a35a47e9f1 | ||
|
d5a5cbb532 | ||
|
4168e33755 | ||
|
9b17c9392a | ||
|
b5acaaae36 | ||
|
8a741a8e31 | ||
|
40f3c23c0f | ||
|
9eae152fcb | ||
|
e30b5d6b89 | ||
|
c2d739a747 | ||
|
577e68dff9 | ||
|
614193fac6 | ||
|
df6dc485bb | ||
|
a5d293c188 | ||
|
74cd6a538d | ||
|
f9a59e051c | ||
|
ca010e9d76 | ||
|
8a5713e235 | ||
|
3ac7793ad1 | ||
|
80f4183a0c | ||
|
dbfe8acae5 | ||
|
e773e1cbbc | ||
|
04eb7479fc | ||
|
709f57c25b | ||
|
90cc1b9216 | ||
|
4dca420554 | ||
|
e7340c3267 | ||
|
7dd9d375ea | ||
|
65a547aa8e | ||
|
4b7b0c2453 | ||
|
792113b8b8 | ||
|
53ed803ddf | ||
|
25736a4c7e | ||
|
597bba39ec | ||
|
cce981331e | ||
|
64b615422e | ||
|
0770587d28 | ||
|
ca7ad978a9 | ||
|
a14f597266 | ||
|
b72183223f | ||
|
e9e904b3b7 | ||
|
20398871fd | ||
|
db75a8fb9d | ||
|
afe3f87aad | ||
|
7e76c8ae08 | ||
|
676b35ce9c | ||
|
549ac3d142 | ||
|
c060e400d9 | ||
|
39015a6f3a | ||
|
9e2fad87b4 | ||
|
dfd282f620 | ||
|
7469aa0bc2 | ||
|
b899726faa | ||
|
75d490b75f | ||
|
ab3f781a10 | ||
|
edeef77958 | ||
|
d8313d3cf2 | ||
|
2864b4cd1c | ||
|
c04aa383ff | ||
|
7d6c58ed12 | ||
|
c61e729382 | ||
|
b565e40705 | ||
|
020382b298 | ||
|
2de3df854a | ||
|
ca0ab9cdd2 | ||
|
f1ae8ecc90 | ||
|
bc9a80161a | ||
|
4f426ce4ba | ||
|
d13009007c | ||
|
4391b5222f | ||
|
db867c6bfd | ||
|
16f5abb2f8 | ||
|
4ea3693104 | ||
|
b48d9e939b | ||
|
2f6ff0da5b | ||
|
44f82ec276 | ||
|
ab58260efa | ||
|
627c522898 | ||
|
ec788ac2fe | ||
|
d6f97d1338 | ||
|
4c37f4c4dd |
1
.ctags
1
.ctags
@@ -3,3 +3,4 @@
|
||||
--exclude=*.html
|
||||
--exclude=*.html.in
|
||||
--langmap=c:+.h.in
|
||||
--c-kinds=+p
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -11,7 +11,6 @@
|
||||
*.gcov
|
||||
*.html
|
||||
*.i
|
||||
*.init
|
||||
*.la
|
||||
*.lo
|
||||
*.loT
|
||||
@@ -190,7 +189,6 @@
|
||||
/tools/virt-admin
|
||||
/tools/virt-*-validate
|
||||
/tools/virt-sanlock-cleanup
|
||||
/tools/wireshark/src/plugin.c
|
||||
/tools/wireshark/src/libvirt
|
||||
/update.log
|
||||
GPATH
|
||||
|
2
.gnulib
2
.gnulib
Submodule .gnulib updated: 68df637b5f...8089c00979
@@ -11,13 +11,11 @@ matrix:
|
||||
- docker
|
||||
env:
|
||||
- IMAGE="ubuntu-18"
|
||||
- DISTCHECK_CONFIGURE_FLAGS="--with-init-script=systemd"
|
||||
- DOCKER_CMD="$LINUX_CMD"
|
||||
- services:
|
||||
- docker
|
||||
env:
|
||||
- IMAGE="centos-7"
|
||||
- DISTCHECK_CONFIGURE_FLAGS="--with-init-script=upstart"
|
||||
- DOCKER_CMD="$LINUX_CMD"
|
||||
- services:
|
||||
- docker
|
||||
@@ -45,8 +43,7 @@ script:
|
||||
-w /build
|
||||
-e VIR_TEST_DEBUG="$VIR_TEST_DEBUG"
|
||||
-e MINGW="$MINGW"
|
||||
-e DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS"
|
||||
"libvirt/buildenv-$IMAGE"
|
||||
"quay.io/libvirt/buildenv-$IMAGE:master"
|
||||
/bin/sh -xc "$DOCKER_CMD"
|
||||
|
||||
git:
|
||||
@@ -58,7 +55,7 @@ env:
|
||||
- LINUX_CMD="
|
||||
./autogen.sh &&
|
||||
make -j3 syntax-check &&
|
||||
make -j3 distcheck DISTCHECK_CONFIGURE_FLAGS=\"\$DISTCHECK_CONFIGURE_FLAGS\" ||
|
||||
make -j3 distcheck ||
|
||||
(
|
||||
echo '=== LOG FILE(S) START ===';
|
||||
find -name test-suite.log | xargs cat;
|
||||
|
20
Makefile.am
20
Makefile.am
@@ -16,15 +16,15 @@
|
||||
## License along with this library. If not, see
|
||||
## <http://www.gnu.org/licenses/>.
|
||||
|
||||
LCOV = lcov
|
||||
GENHTML = genhtml
|
||||
|
||||
SUBDIRS = . gnulib/lib include/libvirt src tools docs gnulib/tests \
|
||||
tests po examples
|
||||
|
||||
XZ_OPT ?= -v -T0
|
||||
export XZ_OPT
|
||||
|
||||
# have gnulib 'make coverage' output to 'cov' dir
|
||||
COVERAGE_OUT = "cov"
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
EXTRA_DIST = \
|
||||
@@ -77,20 +77,6 @@ check-local: all tests
|
||||
check-access:
|
||||
@($(MAKE) $(AM_MAKEFLAGS) -C tests check-access)
|
||||
|
||||
cov: clean-cov
|
||||
$(MKDIR_P) $(top_builddir)/coverage
|
||||
$(LCOV) -c -o $(top_builddir)/coverage/libvirt.info.tmp \
|
||||
-d $(top_builddir)/src \
|
||||
-d $(top_builddir)/tests
|
||||
$(LCOV) -r $(top_builddir)/coverage/libvirt.info.tmp \
|
||||
-o $(top_builddir)/coverage/libvirt.info
|
||||
rm $(top_builddir)/coverage/libvirt.info.tmp
|
||||
$(GENHTML) --show-details -t "libvirt" -o $(top_builddir)/coverage \
|
||||
--legend $(top_builddir)/coverage/libvirt.info
|
||||
|
||||
clean-cov:
|
||||
rm -rf $(top_builddir)/coverage
|
||||
|
||||
MAINTAINERCLEANFILES = .git-module-status
|
||||
|
||||
dist-hook: gen-ChangeLog gen-AUTHORS
|
||||
|
37
bootstrap
37
bootstrap
@@ -1,10 +1,10 @@
|
||||
#! /bin/sh
|
||||
# Print a version string.
|
||||
scriptversion=2018-07-01.02; # UTC
|
||||
scriptversion=2019-01-04.17; # UTC
|
||||
|
||||
# Bootstrap this package from checked-out sources.
|
||||
|
||||
# Copyright (C) 2003-2018 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2003-2019 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -142,6 +142,9 @@ die() { warn_ "$@"; exit 1; }
|
||||
|
||||
# Configuration.
|
||||
|
||||
# Name of the Makefile.am
|
||||
gnulib_mk=gnulib.mk
|
||||
|
||||
# List of gnulib modules needed.
|
||||
gnulib_modules=
|
||||
|
||||
@@ -159,18 +162,11 @@ bootstrap_post_import_hook() { :; }
|
||||
# Override it via your own definition in bootstrap.conf.
|
||||
bootstrap_epilogue() { :; }
|
||||
|
||||
# The command to download all .po files for a specified domain into
|
||||
# a specified directory. Fill in the first %s is the domain name, and
|
||||
# the second with the destination directory. Use rsync's -L and -r
|
||||
# options because the latest/%s directory and the .po files within are
|
||||
# all symlinks.
|
||||
# The command to download all .po files for a specified domain into a
|
||||
# specified directory. Fill in the first %s with the destination
|
||||
# directory and the second with the domain name.
|
||||
po_download_command_format=\
|
||||
"rsync --delete --exclude '*.s1' -Lrtvz \
|
||||
'translationproject.org::tp/latest/%s/' '%s'"
|
||||
|
||||
# Fallback for downloading .po files (if rsync fails).
|
||||
po_download_command_format2=\
|
||||
"wget --mirror -nd -q -np -A.po -P '%s' \
|
||||
"wget --mirror --level=1 -nd -q -A.po -P '%s' \
|
||||
https://translationproject.org/latest/%s/"
|
||||
|
||||
# Prefer a non-empty tarname (4th argument of AC_INIT if given), else
|
||||
@@ -738,10 +734,7 @@ download_po_files() {
|
||||
subdir=$1
|
||||
domain=$2
|
||||
echo "$me: getting translations into $subdir for $domain..."
|
||||
cmd=$(printf "$po_download_command_format" "$domain" "$subdir")
|
||||
eval "$cmd" && return
|
||||
# Fallback to HTTPS.
|
||||
cmd=$(printf "$po_download_command_format2" "$subdir" "$domain")
|
||||
cmd=$(printf "$po_download_command_format" "$subdir" "$domain")
|
||||
eval "$cmd"
|
||||
}
|
||||
|
||||
@@ -970,6 +963,16 @@ fi
|
||||
bootstrap_post_import_hook \
|
||||
|| die "bootstrap_post_import_hook failed"
|
||||
|
||||
# Don't proceed if there are uninitialized submodules. In particular,
|
||||
# the next step will remove dangling links, which might be links into
|
||||
# uninitialized submodules.
|
||||
#
|
||||
# Uninitialized submodules are listed with an initial dash.
|
||||
if $use_git && git submodule | grep '^-' >/dev/null; then
|
||||
die "some git submodules are not initialized. " \
|
||||
"Run 'git submodule init' and bootstrap again."
|
||||
fi
|
||||
|
||||
# Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
|
||||
# gnulib-populated directories. Such .m4 files would cause aclocal to fail.
|
||||
# The following requires GNU find 4.2.3 or newer. Considering the usual
|
||||
|
@@ -10,7 +10,7 @@
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
# GNU Lesser General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library. If not, see
|
||||
|
@@ -16,9 +16,6 @@
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library. If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Authors:
|
||||
# Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
@@ -16,9 +16,6 @@
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library. If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Authors:
|
||||
# Daniel P. Berrange <berrange@redhat.com>
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
@@ -45,9 +42,6 @@ foreach my $file (@ARGV) {
|
||||
# Kill any quoted strings
|
||||
$data =~ s,"(?:[^\\\"]|\\.)*","XXX",g;
|
||||
|
||||
# Kill any C++ style comments
|
||||
$data =~ s,//.*$,//,;
|
||||
|
||||
next if $data =~ /^#/;
|
||||
|
||||
# Kill contents of multi-line comments
|
||||
|
156
build-aux/header-ifdef.pl
Normal file
156
build-aux/header-ifdef.pl
Normal file
@@ -0,0 +1,156 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# Validate that header files follow a standard layout:
|
||||
#
|
||||
# /*
|
||||
# ...copyright header...
|
||||
# */
|
||||
# <one blank line>
|
||||
# #ifndef SYMBOL
|
||||
# # define SYMBOL
|
||||
# ....content....
|
||||
# #endif /* SYMBOL */
|
||||
#
|
||||
# For any file ending priv.h, before the #ifndef
|
||||
# We will have a further section
|
||||
#
|
||||
# #ifndef SYMBOL_ALLOW
|
||||
# # error ....
|
||||
# #endif /* SYMBOL_ALLOW */
|
||||
# <one blank line>
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
my $STATE_COPYRIGHT_COMMENT = 0;
|
||||
my $STATE_COPYRIGHT_BLANK = 1;
|
||||
my $STATE_PRIV_START = 2;
|
||||
my $STATE_PRIV_ERROR = 3;
|
||||
my $STATE_PRIV_END = 4;
|
||||
my $STATE_PRIV_BLANK = 5;
|
||||
my $STATE_GUARD_START = 6;
|
||||
my $STATE_GUARD_DEFINE = 7;
|
||||
my $STATE_GUARD_END = 8;
|
||||
my $STATE_EOF = 9;
|
||||
|
||||
my $file = " ";
|
||||
my $ret = 0;
|
||||
my $ifdef = "";
|
||||
my $ifdefpriv = "";
|
||||
|
||||
my $state = $STATE_EOF;
|
||||
my $mistake = 0;
|
||||
|
||||
sub mistake {
|
||||
my $msg = shift;
|
||||
warn $msg;
|
||||
$mistake = 1;
|
||||
$ret = 1;
|
||||
}
|
||||
|
||||
while (<>) {
|
||||
if (not $file eq $ARGV) {
|
||||
if ($state == $STATE_COPYRIGHT_COMMENT) {
|
||||
&mistake("$file: missing copyright comment");
|
||||
} elsif ($state == $STATE_COPYRIGHT_BLANK) {
|
||||
&mistake("$file: missing blank line after copyright header");
|
||||
} elsif ($state == $STATE_PRIV_START) {
|
||||
&mistake("$file: missing '#ifndef $ifdefpriv'");
|
||||
} elsif ($state == $STATE_PRIV_ERROR) {
|
||||
&mistake("$file: missing '# error ...priv allow...'");
|
||||
} elsif ($state == $STATE_PRIV_END) {
|
||||
&mistake("$file: missing '#endif /* $ifdefpriv */'");
|
||||
} elsif ($state == $STATE_PRIV_BLANK) {
|
||||
&mistake("$file: missing blank line after priv header check");
|
||||
} elsif ($state == $STATE_GUARD_START) {
|
||||
&mistake("$file: missing '#ifndef $ifdef'");
|
||||
} elsif ($state == $STATE_GUARD_DEFINE) {
|
||||
&mistake("$file: missing '# define $ifdef'");
|
||||
} elsif ($state == $STATE_GUARD_END) {
|
||||
&mistake("$file: missing '#endif /* $ifdef */'");
|
||||
}
|
||||
|
||||
$ifdef = uc $ARGV;
|
||||
$ifdef =~ s,.*/,,;
|
||||
$ifdef =~ s,[^A-Z0-9],_,g;
|
||||
$ifdef =~ s,__+,_,g;
|
||||
unless ($ifdef =~ /^LIBVIRT_/ && $ARGV !~ /libvirt_internal.h/) {
|
||||
$ifdef = "LIBVIRT_" . $ifdef;
|
||||
}
|
||||
$ifdefpriv = $ifdef . "_ALLOW";
|
||||
|
||||
$file = $ARGV;
|
||||
$state = $STATE_COPYRIGHT_COMMENT;
|
||||
$mistake = 0;
|
||||
}
|
||||
|
||||
if ($mistake ||
|
||||
$ARGV =~ /config-post\.h$/ ||
|
||||
$ARGV =~ /vbox_(CAPI|XPCOM)/) {
|
||||
$state = $STATE_EOF;
|
||||
next;
|
||||
}
|
||||
|
||||
if ($state == $STATE_COPYRIGHT_COMMENT) {
|
||||
if (m,\*/,) {
|
||||
$state = $STATE_COPYRIGHT_BLANK;
|
||||
}
|
||||
} elsif ($state == $STATE_COPYRIGHT_BLANK) {
|
||||
if (! /^$/) {
|
||||
&mistake("$file: missing blank line after copyright header");
|
||||
}
|
||||
if ($ARGV =~ /priv\.h$/) {
|
||||
$state = $STATE_PRIV_START;
|
||||
} else {
|
||||
$state = $STATE_GUARD_START;
|
||||
}
|
||||
} elsif ($state == $STATE_PRIV_START) {
|
||||
if (/^$/) {
|
||||
&mistake("$file: too many blank lines after coyright header");
|
||||
} elsif (/#ifndef $ifdefpriv$/) {
|
||||
$state = $STATE_PRIV_ERROR;
|
||||
} else {
|
||||
&mistake("$file: missing '#ifndef $ifdefpriv'");
|
||||
}
|
||||
} elsif ($state == $STATE_PRIV_ERROR) {
|
||||
if (/# error ".*"$/) {
|
||||
$state = $STATE_PRIV_END;
|
||||
} else {
|
||||
&mistake("$file: missing '#error ...priv allow...'");
|
||||
}
|
||||
} elsif ($state == $STATE_PRIV_END) {
|
||||
if (m,#endif /\* $ifdefpriv \*/,) {
|
||||
$state = $STATE_PRIV_BLANK;
|
||||
} else {
|
||||
&mistake("$file: missing '#endif /* $ifdefpriv */'");
|
||||
}
|
||||
} elsif ($state == $STATE_PRIV_BLANK) {
|
||||
if (! /^$/) {
|
||||
&mistake("$file: missing blank line after priv guard");
|
||||
}
|
||||
$state = $STATE_GUARD_START;
|
||||
} elsif ($state == $STATE_GUARD_START) {
|
||||
if (/^$/) {
|
||||
&mistake("$file: too many blank lines after coyright header");
|
||||
} elsif (/#ifndef $ifdef$/) {
|
||||
$state = $STATE_GUARD_DEFINE;
|
||||
} else {
|
||||
&mistake("$file: missing '#ifndef $ifdef'");
|
||||
}
|
||||
} elsif ($state == $STATE_GUARD_DEFINE) {
|
||||
if (/# define $ifdef$/) {
|
||||
$state = $STATE_GUARD_END;
|
||||
} else {
|
||||
&mistake("$file: missing '# define $ifdef'");
|
||||
}
|
||||
} elsif ($state == $STATE_GUARD_END) {
|
||||
if (m,#endif /\* $ifdef \*/$,) {
|
||||
$state = $STATE_EOF;
|
||||
}
|
||||
} elsif ($state == $STATE_EOF) {
|
||||
die "$file: unexpected content after '#endif /* $ifdef */'";
|
||||
} else {
|
||||
die "$file: unexpected state $state";
|
||||
}
|
||||
}
|
||||
exit $ret;
|
133
cfg.mk
133
cfg.mk
@@ -1,5 +1,5 @@
|
||||
# Customize Makefile.maint. -*- makefile -*-
|
||||
# Copyright (C) 2008-2015 Red Hat, Inc.
|
||||
# Copyright (C) 2008-2019 Red Hat, Inc.
|
||||
# Copyright (C) 2003-2008 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
@@ -120,7 +120,6 @@ useless_free_options = \
|
||||
--name=virConfFreeValue \
|
||||
--name=virDomainActualNetDefFree \
|
||||
--name=virDomainChrDefFree \
|
||||
--name=virDomainChrSourceDefFree \
|
||||
--name=virDomainControllerDefFree \
|
||||
--name=virDomainDefFree \
|
||||
--name=virDomainDeviceDefFree \
|
||||
@@ -305,10 +304,11 @@ sc_flags_usage:
|
||||
$(srcdir)/include/libvirt/libvirt-qemu.h \
|
||||
$(srcdir)/include/libvirt/libvirt-lxc.h \
|
||||
$(srcdir)/include/libvirt/libvirt-admin.h \
|
||||
| grep -c '\(long\|unsigned\) flags')" != 4 && \
|
||||
| $(GREP) -c '\(long\|unsigned\) flags')" != 4 && \
|
||||
{ echo '$(ME): new API should use "unsigned int flags"' 1>&2; \
|
||||
exit 1; } || :
|
||||
@prohibit=' flags ATTRIBUTE_UNUSED' \
|
||||
exclude='virSecurityDomainImageLabelFlags' \
|
||||
halt='flags should be checked with virCheckFlags' \
|
||||
$(_sc_search_regexp)
|
||||
@prohibit='^[^@]*([^d] (int|long long)|[^dg] long) flags[;,)]' \
|
||||
@@ -472,6 +472,7 @@ sc_prohibit_canonicalize_file_name:
|
||||
# Insist on correct types for [pug]id.
|
||||
sc_correct_id_types:
|
||||
@prohibit='\<(int|long) *[pug]id\>' \
|
||||
exclude='exempt from syntax-check' \
|
||||
halt='use pid_t for pid, uid_t for uid, gid_t for gid' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
@@ -638,10 +639,12 @@ sc_libvirt_unmarked_diagnostics:
|
||||
exclude='_\(' \
|
||||
halt='found unmarked diagnostic(s)' \
|
||||
$(_sc_search_regexp)
|
||||
@{ grep -nE '\<$(func_re) *\(.*;$$' $$($(VC_LIST_EXCEPT)); \
|
||||
grep -A1 -nE '\<$(func_re) *\(.*,$$' $$($(VC_LIST_EXCEPT)); } \
|
||||
| $(SED) 's/_("\([^\"]\|\\.\)\+"//;s/[ ]"%s"//' \
|
||||
| grep '[ ]"' && \
|
||||
@{ $(VC_LIST_EXCEPT) | xargs \
|
||||
$(GREP) -nE '\<$(func_re) *\(.*;$$' /dev/null; \
|
||||
$(VC_LIST_EXCEPT) | xargs \
|
||||
$(GREP) -A1 -nE '\<$(func_re) *\(.*,$$' /dev/null; } \
|
||||
| $(SED) -E 's/_\("([^\"]|\\.)+"//;s/"%s"//' \
|
||||
| $(GREP) '"' && \
|
||||
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
@@ -653,9 +656,9 @@ sc_libvirt_unmarked_diagnostics:
|
||||
# there are functions to which this one applies but that do not get marked
|
||||
# diagnostics.
|
||||
sc_prohibit_newline_at_end_of_diagnostic:
|
||||
@grep -A2 -nE \
|
||||
'\<$(func_re) *\(' $$($(VC_LIST_EXCEPT)) \
|
||||
| grep '\\n"' \
|
||||
@$(VC_LIST_EXCEPT) | xargs $(GREP) -A2 -nE \
|
||||
'\<$(func_re) *\(' /dev/null \
|
||||
| $(GREP) '\\n"' \
|
||||
&& { echo '$(ME): newline at end of message(s)' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
@@ -663,12 +666,14 @@ sc_prohibit_newline_at_end_of_diagnostic:
|
||||
# allow VIR_ERROR to do this, and ignore functions that take a single
|
||||
# string rather than a format argument.
|
||||
sc_prohibit_diagnostic_without_format:
|
||||
@{ grep -nE '\<$(func_re) *\(.*;$$' $$($(VC_LIST_EXCEPT)); \
|
||||
grep -A2 -nE '\<$(func_re) *\(.*,$$' $$($(VC_LIST_EXCEPT)); } \
|
||||
@{ $(VC_LIST_EXCEPT) | xargs \
|
||||
$(GREP) -nE '\<$(func_re) *\(.*;$$' /dev/null; \
|
||||
$(VC_LIST_EXCEPT) | xargs \
|
||||
$(GREP) -A2 -nE '\<$(func_re) *\(.*,$$' /dev/null; } \
|
||||
| $(SED) -rn -e ':l; /[,"]$$/ {N;b l;}' \
|
||||
-e '/(xenapiSessionErrorHandler|vah_(error|warning))/d' \
|
||||
-e '/\<$(func_re) *\([^"]*"([^%"]|"\n[^"]*")*"[,)]/p' \
|
||||
| grep -vE 'VIR_ERROR' && \
|
||||
| $(GREP) -vE 'VIR_ERROR' && \
|
||||
{ echo '$(ME): found diagnostic without %' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
@@ -686,16 +691,16 @@ sc_prohibit_useless_translation:
|
||||
# When splitting a diagnostic across lines, ensure that there is a space
|
||||
# or \n on one side of the split.
|
||||
sc_require_whitespace_in_translation:
|
||||
@grep -n -A1 '"$$' $$($(VC_LIST_EXCEPT)) \
|
||||
@$(VC_LIST_EXCEPT) | xargs $(GREP) -n -A1 '"$$' /dev/null \
|
||||
| $(SED) -ne ':l; /"$$/ {N;b l;}; s/"\n[^"]*"/""/g; s/\\n/ /g' \
|
||||
-e '/_(.*[^\ ]""[^\ ]/p' | grep . && \
|
||||
-e '/_(.*[^\ ]""[^\ ]/p' | $(GREP) . && \
|
||||
{ echo '$(ME): missing whitespace at line split' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
# Enforce recommended preprocessor indentation style.
|
||||
sc_preprocessor_indentation:
|
||||
@if cppi --version >/dev/null 2>&1; then \
|
||||
$(VC_LIST_EXCEPT) | grep -E '\.[ch](\.in)?$$' | xargs cppi -a -c \
|
||||
$(VC_LIST_EXCEPT) | $(GREP) -E '\.[ch](\.in)?$$' | xargs cppi -a -c \
|
||||
|| { echo '$(ME): incorrect preprocessor indentation' 1>&2; \
|
||||
exit 1; }; \
|
||||
else \
|
||||
@@ -706,13 +711,13 @@ sc_preprocessor_indentation:
|
||||
# (comment-only) C file that mirrors the same layout as the spec file.
|
||||
sc_spec_indentation:
|
||||
@if cppi --version >/dev/null 2>&1; then \
|
||||
for f in $$($(VC_LIST_EXCEPT) | grep '\.spec\.in$$'); do \
|
||||
for f in $$($(VC_LIST_EXCEPT) | $(GREP) '\.spec\.in$$'); do \
|
||||
$(SED) -e 's|#|// #|; s|%ifn*\(arch\)* |#if a // |' \
|
||||
-e 's/%\(else\|endif\|define\)/#\1/' \
|
||||
-e 's/^\( *\)\1\1\1#/#\1/' \
|
||||
-e 's|^\( *[^#/ ]\)|// \1|; s|^\( */[^/]\)|// \1|' $$f \
|
||||
| cppi -a -c 2>&1 | $(SED) "s|standard input|$$f|"; \
|
||||
done | { if grep . >&2; then false; else :; fi; } \
|
||||
done | { if $(GREP) . >&2; then false; else :; fi; } \
|
||||
|| { echo '$(ME): incorrect preprocessor indentation' 1>&2; \
|
||||
exit 1; }; \
|
||||
else \
|
||||
@@ -802,11 +807,12 @@ sc_prohibit_cross_inclusion:
|
||||
# When converting an enum to a string, make sure that we track any new
|
||||
# elements added to the enum by using a _LAST marker.
|
||||
sc_require_enum_last_marker:
|
||||
@grep -A1 -nE '^[^#]*VIR_ENUM_IMPL *\(' $$($(VC_LIST_EXCEPT)) \
|
||||
@$(VC_LIST_EXCEPT) | xargs \
|
||||
$(GREP) -A1 -nE '^[^#]*VIR_ENUM_IMPL *\(' /dev/null \
|
||||
| $(SED) -ne '/VIR_ENUM_IMPL[^,]*,$$/N' \
|
||||
-e '/VIR_ENUM_IMPL[^,]*,[^,]*[^_,][^L,][^A,][^S,][^T,],/p' \
|
||||
-e '/VIR_ENUM_IMPL[^,]*,[^,]\{0,4\},/p' \
|
||||
| grep . && \
|
||||
| $(GREP) . && \
|
||||
{ echo '$(ME): enum impl needs to use _LAST marker' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
@@ -865,8 +871,7 @@ sc_prohibit_atoi:
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_prohibit_wrong_filename_in_comment:
|
||||
@fail=0; \
|
||||
awk 'BEGIN { \
|
||||
@$(VC_LIST_EXCEPT) | $(GREP) '\.[ch]$$' | xargs awk 'BEGIN { \
|
||||
fail=0; \
|
||||
} FNR < 3 { \
|
||||
n=match($$0, /[[:space:]][^[:space:]]*[.][ch][[:space:]:]/); \
|
||||
@@ -882,11 +887,8 @@ sc_prohibit_wrong_filename_in_comment:
|
||||
if (fail == 1) { \
|
||||
exit 1; \
|
||||
} \
|
||||
}' $$($(VC_LIST_EXCEPT) | grep '\.[ch]$$') || fail=1; \
|
||||
if test $$fail -eq 1; then \
|
||||
{ echo '$(ME): The file name in comments must match the' \
|
||||
'actual file name' 1>&2; exit 1; } \
|
||||
fi;
|
||||
}' || { echo '$(ME): The file name in comments must match the' \
|
||||
'actual file name' 1>&2; exit 1; }
|
||||
|
||||
sc_prohibit_virConnectOpen_in_virsh:
|
||||
@prohibit='\bvirConnectOpen[a-zA-Z]* *\(' \
|
||||
@@ -917,22 +919,21 @@ sc_require_if_else_matching_braces:
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_curly_braces_style:
|
||||
@files=$$($(VC_LIST_EXCEPT) | grep '\.[ch]$$'); \
|
||||
if $(GREP) -nHP \
|
||||
@if $(VC_LIST_EXCEPT) | $(GREP) '\.[ch]$$' | xargs $(GREP) -nHP \
|
||||
'^\s*(?!([a-zA-Z_]*for_?each[a-zA-Z_]*) ?\()([_a-zA-Z0-9]+( [_a-zA-Z0-9]+)* ?\()?(\*?[_a-zA-Z0-9]+(,? \*?[_a-zA-Z0-9\[\]]+)+|void)\) ?\{' \
|
||||
$$files; then \
|
||||
/dev/null; then \
|
||||
echo '$(ME): Non-K&R style used for curly braces around' \
|
||||
'function body' 1>&2; exit 1; \
|
||||
fi; \
|
||||
if $(GREP) -A1 -En ' ((if|for|while|switch) \(|(else|do)\b)[^{]*$$'\
|
||||
$$files | $(GREP) '^[^ ]*- *{'; then \
|
||||
if $(VC_LIST_EXCEPT) | $(GREP) '\.[ch]$$' | xargs \
|
||||
$(GREP) -A1 -En ' ((if|for|while|switch) \(|(else|do)\b)[^{]*$$' \
|
||||
/dev/null | $(GREP) '^[^ ]*- *{'; then \
|
||||
echo '$(ME): Use hanging braces for compound statements' 1>&2; exit 1; \
|
||||
fi
|
||||
|
||||
sc_prohibit_windows_special_chars_in_filename:
|
||||
@files=$$($(VC_LIST_EXCEPT) | grep '[:*?"<>|]'); \
|
||||
test -n "$$files" && { echo '$(ME): Windows special chars' \
|
||||
'in filename not allowed:' 1>&2; echo $$files 1>&2; exit 1; } || :
|
||||
@$(VC_LIST_EXCEPT) | $(GREP) '[:*?"<>|]' && \
|
||||
{ echo '$(ME): Windows special chars in filename not allowed' 1>&2; echo exit 1; } || :
|
||||
|
||||
sc_prohibit_mixed_case_abbreviations:
|
||||
@prohibit='Pci|Usb|Scsi' \
|
||||
@@ -948,11 +949,11 @@ sc_require_locale_h:
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_prohibit_empty_first_line:
|
||||
@awk 'BEGIN { fail=0; } \
|
||||
@$(VC_LIST_EXCEPT) | xargs awk 'BEGIN { fail=0; } \
|
||||
FNR == 1 { if ($$0 == "") { print FILENAME ":1:"; fail=1; } } \
|
||||
END { if (fail == 1) { \
|
||||
print "$(ME): Prohibited empty first line" > "/dev/stderr"; \
|
||||
} exit fail; }' $$($(VC_LIST_EXCEPT));
|
||||
} exit fail; }'
|
||||
|
||||
sc_prohibit_paren_brace:
|
||||
@prohibit='\)\{$$' \
|
||||
@@ -995,8 +996,9 @@ sc_prohibit_sysconf_pagesize:
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_prohibit_virSecurity:
|
||||
@grep -Pn 'virSecurityManager(?!Ptr)' $$($(VC_LIST_EXCEPT) | grep 'src/qemu/' | \
|
||||
grep -v 'src/qemu/qemu_security') && \
|
||||
@$(VC_LIST_EXCEPT) | $(GREP) 'src/qemu/' | \
|
||||
$(GREP) -v 'src/qemu/qemu_security' | \
|
||||
xargs $(GREP) -Pn 'virSecurityManager(?!Ptr)' /dev/null && \
|
||||
{ echo '$(ME): prefer qemuSecurity wrappers' 1>&2; exit 1; } || :
|
||||
|
||||
sc_prohibit_pthread_create:
|
||||
@@ -1049,6 +1051,11 @@ sc_prohibit_http_urls:
|
||||
halt='Links must use https:// protocol' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_prohibit_author:
|
||||
@prohibit="(\*|#)\s*(A|a)uthors?:" \
|
||||
halt="Author: statements are prohibited in source comments" \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
# Alignment is usually achieved through spaces (at least two of them)
|
||||
# or tabs (at least one of them) right before the trailing backslash
|
||||
sc_prohibit_backslash_alignment:
|
||||
@@ -1060,14 +1067,23 @@ sc_prohibit_backslash_alignment:
|
||||
# Some syntax rules pertaining to the usage of cleanup macros
|
||||
# implementing GNU C's cleanup attribute
|
||||
|
||||
# Rule to ensure that varibales declared using a cleanup macro are
|
||||
# Rule to ensure that variables declared using a cleanup macro are
|
||||
# always initialized.
|
||||
sc_require_attribute_cleanup_initialization:
|
||||
@prohibit='VIR_AUTO(FREE|PTR)\(.+\) *[^=]+;' \
|
||||
@prohibit='VIR_AUTO((FREE|PTR|UNREF|CLEAN)\(.+\)|CLOSE|STRINGLIST) *[^=]+;' \
|
||||
in_vc_files='\.[chx]$$' \
|
||||
halt='variable declared with a cleanup macro must be initialized' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
# "class" in headers is not good because by default Vim treats it as a keyword
|
||||
# Let's prohibit it in source files as well.
|
||||
sc_prohibit_class:
|
||||
@prohibit=' +_?class *;' \
|
||||
in_vc_files='\.[chx]$$' \
|
||||
halt='use klass instead of class or _class' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
|
||||
# We don't use this feature of maint.mk.
|
||||
prev_version_file = /dev/null
|
||||
|
||||
@@ -1116,29 +1132,34 @@ _autogen_error:
|
||||
|
||||
ifneq ($(_gl-Makefile),)
|
||||
syntax-check: spacing-check test-wrap-argv \
|
||||
prohibit-duplicate-header mock-noinline group-qemu-caps
|
||||
prohibit-duplicate-header mock-noinline group-qemu-caps \
|
||||
header-ifdef
|
||||
endif
|
||||
|
||||
# Don't include duplicate header in the source (either *.c or *.h)
|
||||
prohibit-duplicate-header:
|
||||
$(AM_V_GEN)files=$$($(VC_LIST_EXCEPT) | grep '\.[chx]$$'); \
|
||||
$(PERL) -W $(top_srcdir)/build-aux/prohibit-duplicate-header.pl $$files
|
||||
$(AM_V_GEN)$(VC_LIST_EXCEPT) | $(GREP) '\.[chx]$$' | xargs \
|
||||
$(PERL) -W $(top_srcdir)/build-aux/prohibit-duplicate-header.pl
|
||||
|
||||
spacing-check:
|
||||
$(AM_V_GEN)files=`$(VC_LIST) | grep '\.c$$'`; \
|
||||
$(PERL) $(top_srcdir)/build-aux/check-spacing.pl $$files || \
|
||||
$(AM_V_GEN)$(VC_LIST) | $(GREP) '\.c$$' | xargs \
|
||||
$(PERL) $(top_srcdir)/build-aux/check-spacing.pl || \
|
||||
{ echo '$(ME): incorrect formatting' 1>&2; exit 1; }
|
||||
|
||||
mock-noinline:
|
||||
$(AM_V_GEN)files=`$(VC_LIST) | grep '\.[ch]$$'`; \
|
||||
$(PERL) $(top_srcdir)/build-aux/mock-noinline.pl $$files
|
||||
$(AM_V_GEN)$(VC_LIST) | $(GREP) '\.[ch]$$' | xargs \
|
||||
$(PERL) $(top_srcdir)/build-aux/mock-noinline.pl
|
||||
|
||||
header-ifdef:
|
||||
$(AM_V_GEN)$(VC_LIST) | $(GREP) '\.[h]$$' | xargs \
|
||||
$(PERL) $(top_srcdir)/build-aux/header-ifdef.pl
|
||||
|
||||
test-wrap-argv:
|
||||
$(AM_V_GEN)files=`$(VC_LIST) | grep -E '\.(ldargs|args)'`; \
|
||||
$(PERL) $(top_srcdir)/tests/test-wrap-argv.pl --check $$files
|
||||
$(AM_V_GEN)$(VC_LIST) | $(GREP) -E '\.(ldargs|args)' | xargs \
|
||||
$(PERL) $(top_srcdir)/tests/test-wrap-argv.pl --check
|
||||
|
||||
group-qemu-caps:
|
||||
$(PERL) $(top_srcdir)/tests/group-qemu-caps.pl --check $(top_srcdir)/
|
||||
$(AM_V_GEN)$(PERL) $(top_srcdir)/tests/group-qemu-caps.pl --check $(top_srcdir)/
|
||||
|
||||
# sc_po_check can fail if generated files are not built first
|
||||
sc_po_check: \
|
||||
@@ -1177,7 +1198,7 @@ exclude_file_name_regexp--sc_copyright_usage = \
|
||||
^COPYING(|\.LESSER)$$
|
||||
|
||||
exclude_file_name_regexp--sc_flags_usage = \
|
||||
^(cfg\.mk|docs/|src/util/virnetdevtap\.c$$|tests/((vir(cgroup|pci|test|usb)|nss|qemuxml2argv)mock|virfilewrapper)\.c$$)
|
||||
^(cfg\.mk|docs/|src/util/virnetdevtap\.c$$|tests/((vir(cgroup|pci|test|usb)|nss|qemuxml2argv|qemusecurity)mock|virfilewrapper)\.c$$)
|
||||
|
||||
exclude_file_name_regexp--sc_libvirt_unmarked_diagnostics = \
|
||||
^(src/rpc/gendispatch\.pl$$|tests/)
|
||||
@@ -1200,7 +1221,7 @@ exclude_file_name_regexp--sc_prohibit_strdup = \
|
||||
^(docs/|examples/|src/util/virstring\.c|tests/vir(netserverclient|cgroup)mock.c|tests/commandhelper\.c$$)
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_close = \
|
||||
(\.p[yl]$$|\.spec\.in$$|^docs/|^(src/util/virfile\.c|src/libvirt-stream\.c|tests/vir.+mock\.c|tests/commandhelper\.c)$$)
|
||||
(\.p[yl]$$|\.spec\.in$$|^docs/|^(src/util/virfile\.c|src/libvirt-stream\.c|tests/(vir.+mock\.c|commandhelper\.c|qemusecuritymock\.c))$$)
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \
|
||||
(^tests/(virhostcpu|virpcitest)data/|docs/js/.*\.js|docs/fonts/.*\.woff|\.diff|tests/virconfdata/no-newline\.conf$$)
|
||||
@@ -1221,13 +1242,13 @@ exclude_file_name_regexp--sc_prohibit_newline_at_end_of_diagnostic = \
|
||||
^src/rpc/gendispatch\.pl$$
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_nonreentrant = \
|
||||
^((po|tests)/|docs/.*(py|js|html\.in)|run.in$$|tools/wireshark/util/genxdrstub\.pl$$)
|
||||
^((po|tests|examples/admin)/|docs/.*(py|js|html\.in)|run.in$$|tools/wireshark/util/genxdrstub\.pl$$)
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_select = \
|
||||
^cfg\.mk$$
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_canonicalize_file_name = \
|
||||
^cfg\.mk$$
|
||||
^(cfg\.mk|tests/virfilemock\.c)$$
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_raw_allocation = \
|
||||
^(docs/hacking\.html\.in|src/util/viralloc\.[ch]|examples/.*|tests/(securityselinuxhelper|(vircgroup|nss)mock|commandhelper)\.c|tools/wireshark/src/packet-libvirt\.c)$$
|
||||
@@ -1270,7 +1291,7 @@ exclude_file_name_regexp--sc_correct_id_types = \
|
||||
exclude_file_name_regexp--sc_m4_quote_check = m4/virt-lib.m4
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_include_public_headers_quote = \
|
||||
^(src/internal\.h$$|tools/wireshark/src/packet-libvirt.h$$)
|
||||
^(src/internal\.h$$|tools/wireshark/src/packet-libvirt.c$$)
|
||||
|
||||
exclude_file_name_regexp--sc_prohibit_include_public_headers_brackets = \
|
||||
^(tools/|examples/|include/libvirt/(virterror|libvirt(-(admin|qemu|lxc))?)\.h$$)
|
||||
|
@@ -19,7 +19,7 @@
|
||||
/*
|
||||
* Since virt-login-shell will be setuid, we must do everything
|
||||
* we can to avoid linking to other libraries. Many of them do
|
||||
* unsafe things in functions marked __atttribute__((constructor)).
|
||||
* unsafe things in functions marked __attribute__((constructor)).
|
||||
* The only way to avoid such deps is to re-compile the
|
||||
* functions with the code in question disabled, and for that we
|
||||
* must override the main config.h rules. Hence this file :-(
|
||||
@@ -69,7 +69,6 @@
|
||||
# undef WITH_VIRTUALPORT
|
||||
# undef WITH_SECDRIVER_SELINUX
|
||||
# undef WITH_SECDRIVER_APPARMOR
|
||||
# undef WITH_CAPNG
|
||||
#endif /* LIBVIRT_NSS */
|
||||
|
||||
#ifndef __GNUC__
|
||||
|
77
configure.ac
77
configure.ac
@@ -16,7 +16,7 @@ dnl You should have received a copy of the GNU Lesser General Public
|
||||
dnl License along with this library. If not, see
|
||||
dnl <http://www.gnu.org/licenses/>.
|
||||
|
||||
AC_INIT([libvirt], [4.7.0], [libvir-list@redhat.com], [], [https://libvirt.org])
|
||||
AC_INIT([libvirt], [5.2.0], [libvir-list@redhat.com], [], [https://libvirt.org])
|
||||
AC_CONFIG_SRCDIR([src/libvirt.c])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
@@ -225,7 +225,6 @@ if test "$with_libvirtd" = "no" ; then
|
||||
with_qemu=no
|
||||
with_lxc=no
|
||||
with_libxl=no
|
||||
with_uml=no
|
||||
with_vbox=no
|
||||
fi
|
||||
|
||||
@@ -247,6 +246,7 @@ LIBVIRT_ARG_CAPNG
|
||||
LIBVIRT_ARG_CURL
|
||||
LIBVIRT_ARG_DBUS
|
||||
LIBVIRT_ARG_FIREWALLD
|
||||
LIBVIRT_ARG_FIREWALLD_ZONE
|
||||
LIBVIRT_ARG_FUSE
|
||||
LIBVIRT_ARG_GLUSTER
|
||||
LIBVIRT_ARG_HAL
|
||||
@@ -287,6 +287,7 @@ LIBVIRT_CHECK_DBUS
|
||||
LIBVIRT_CHECK_DEVMAPPER
|
||||
LIBVIRT_CHECK_DLOPEN
|
||||
LIBVIRT_CHECK_FIREWALLD
|
||||
LIBVIRT_CHECK_FIREWALLD_ZONE
|
||||
LIBVIRT_CHECK_FUSE
|
||||
LIBVIRT_CHECK_GLUSTER
|
||||
LIBVIRT_CHECK_GNUTLS
|
||||
@@ -322,17 +323,49 @@ AC_CHECK_SIZEOF([long])
|
||||
|
||||
dnl Availability of various common functions (non-fatal if missing),
|
||||
dnl and various less common threadsafe functions
|
||||
AC_CHECK_FUNCS_ONCE([cfmakeraw fallocate geteuid getgid getgrnam_r \
|
||||
getmntent_r getpwuid_r getrlimit getuid if_indextoname kill mmap \
|
||||
newlocale posix_fallocate posix_memalign prlimit regexec \
|
||||
sched_getaffinity setgroups setns setrlimit symlink sysctlbyname \
|
||||
getifaddrs sched_setscheduler unshare])
|
||||
AC_CHECK_FUNCS_ONCE([\
|
||||
cfmakeraw \
|
||||
fallocate \
|
||||
geteuid \
|
||||
getgid \
|
||||
getifaddrs \
|
||||
getmntent_r \
|
||||
getpwuid_r \
|
||||
getrlimit \
|
||||
getuid \
|
||||
if_indextoname \
|
||||
mmap \
|
||||
newlocale \
|
||||
posix_fallocate \
|
||||
posix_memalign \
|
||||
prlimit \
|
||||
sched_getaffinity \
|
||||
sched_setscheduler \
|
||||
setgroups \
|
||||
setns \
|
||||
setrlimit \
|
||||
symlink \
|
||||
sysctlbyname \
|
||||
unshare \
|
||||
])
|
||||
|
||||
dnl Availability of various common headers (non-fatal if missing).
|
||||
AC_CHECK_HEADERS([pwd.h regex.h sys/un.h \
|
||||
sys/poll.h syslog.h mntent.h net/ethernet.h linux/magic.h \
|
||||
sys/un.h sys/syscall.h sys/sysctl.h netinet/tcp.h ifaddrs.h \
|
||||
libtasn1.h sys/ucred.h sys/mount.h stdarg.h])
|
||||
AC_CHECK_HEADERS([\
|
||||
ifaddrs.h \
|
||||
libtasn1.h \
|
||||
linux/magic.h \
|
||||
mntent.h \
|
||||
net/ethernet.h \
|
||||
netinet/tcp.h \
|
||||
pwd.h \
|
||||
stdarg.h \
|
||||
syslog.h \
|
||||
sys/mount.h \
|
||||
sys/syscall.h \
|
||||
sys/sysctl.h \
|
||||
sys/ucred.h \
|
||||
sys/un.h \
|
||||
])
|
||||
dnl Check whether endian provides handy macros.
|
||||
AC_CHECK_DECLS([htole64], [], [], [[#include <endian.h>]])
|
||||
AC_CHECK_FUNCS([stat stat64 __xstat __xstat64 lstat lstat64 __lxstat __lxstat64])
|
||||
@@ -413,7 +446,6 @@ LIBVIRT_DRIVER_ARG_VBOX
|
||||
LIBVIRT_DRIVER_ARG_LXC
|
||||
LIBVIRT_DRIVER_ARG_VZ
|
||||
LIBVIRT_DRIVER_ARG_BHYVE
|
||||
LIBVIRT_DRIVER_ARG_UML
|
||||
LIBVIRT_DRIVER_ARG_ESX
|
||||
LIBVIRT_DRIVER_ARG_HYPERV
|
||||
LIBVIRT_DRIVER_ARG_TEST
|
||||
@@ -432,7 +464,6 @@ LIBVIRT_DRIVER_CHECK_VBOX
|
||||
LIBVIRT_DRIVER_CHECK_LXC
|
||||
LIBVIRT_DRIVER_CHECK_VZ
|
||||
LIBVIRT_DRIVER_CHECK_BHYVE
|
||||
LIBVIRT_DRIVER_CHECK_UML
|
||||
LIBVIRT_DRIVER_CHECK_ESX
|
||||
LIBVIRT_DRIVER_CHECK_HYPERV
|
||||
LIBVIRT_DRIVER_CHECK_TEST
|
||||
@@ -707,23 +738,6 @@ fi
|
||||
AC_SUBST([VIR_TEST_EXPENSIVE_DEFAULT])
|
||||
AM_CONDITIONAL([WITH_EXPENSIVE_TESTS], [test $VIR_TEST_EXPENSIVE_DEFAULT = 1])
|
||||
|
||||
LIBVIRT_ARG_ENABLE([TEST_COVERAGE], [turn on code coverage instrumentation], [no])
|
||||
case "$enable_test_coverage" in
|
||||
yes|no) ;;
|
||||
*) AC_MSG_ERROR([bad value ${enable_test_coverga} for test-coverage option]) ;;
|
||||
esac
|
||||
|
||||
if test "$enable_test_coverage" = yes; then
|
||||
save_WARN_CFLAGS=$WARN_CFLAGS
|
||||
WARN_CFLAGS=
|
||||
gl_WARN_ADD([-fprofile-arcs])
|
||||
gl_WARN_ADD([-ftest-coverage])
|
||||
COVERAGE_FLAGS=$WARN_CFLAGS
|
||||
AC_SUBST([COVERAGE_CFLAGS], [$COVERAGE_FLAGS])
|
||||
AC_SUBST([COVERAGE_LDFLAGS], [$COVERAGE_FLAGS])
|
||||
WARN_CFLAGS=$save_WARN_CFLAGS
|
||||
fi
|
||||
|
||||
LIBVIRT_ARG_ENABLE([TEST_OOM], [memory allocation failure checking], [no])
|
||||
case "$enable_test_oom" in
|
||||
yes|no) ;;
|
||||
@@ -915,7 +929,6 @@ AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Drivers])
|
||||
AC_MSG_NOTICE([])
|
||||
LIBVIRT_DRIVER_RESULT_QEMU
|
||||
LIBVIRT_DRIVER_RESULT_UML
|
||||
LIBVIRT_DRIVER_RESULT_OPENVZ
|
||||
LIBVIRT_DRIVER_RESULT_VMWARE
|
||||
LIBVIRT_DRIVER_RESULT_VBOX
|
||||
@@ -972,6 +985,7 @@ LIBVIRT_RESULT_CURL
|
||||
LIBVIRT_RESULT_DBUS
|
||||
LIBVIRT_RESULT_DLOPEN
|
||||
LIBVIRT_RESULT_FIREWALLD
|
||||
LIBVIRT_RESULT_FIREWALLD_ZONE
|
||||
LIBVIRT_RESULT_FUSE
|
||||
LIBVIRT_RESULT_GLUSTER
|
||||
LIBVIRT_RESULT_GNUTLS
|
||||
@@ -1010,7 +1024,6 @@ LIBVIRT_WIN_RESULT_WINDRES
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Test suite])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([ Coverage: $enable_test_coverage])
|
||||
AC_MSG_NOTICE([ Alloc OOM: $enable_test_oom])
|
||||
AC_MSG_NOTICE([])
|
||||
AC_MSG_NOTICE([Miscellaneous])
|
||||
|
@@ -287,6 +287,119 @@
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h2><a id="connect_driver">Hypervisor Driver connect_driver</a></h2>
|
||||
<p>
|
||||
The <code>connect_driver</code> parameter describes the
|
||||
client's <a href="remote.html">remote Connection Driver</a>
|
||||
name based on the <a href="uri.html">URI</a> used for the
|
||||
connection.
|
||||
</p>
|
||||
<p>
|
||||
<span class="since">Since 4.1.0</span>, when calling an API
|
||||
outside the scope of the primary connection driver, the
|
||||
primary driver will attempt to open a secondary connection
|
||||
to the specific API driver in order to process the API. For
|
||||
example, when hypervisor domain processing needs to make an
|
||||
API call within the storage driver or the network filter driver
|
||||
an attempt to open a connection to the "storage" or "nwfilter"
|
||||
driver will be made. Similarly, a "storage" primary connection
|
||||
may need to create a connection to the "secret" driver in order
|
||||
to process secrets for the API. If successful, then calls to
|
||||
those API's will occur in the <code>connect_driver</code> context
|
||||
of the secondary connection driver rather than in the context of
|
||||
the primary driver. This affects the <code>connect_driver</code>
|
||||
returned from rule generation from the <code>action.loookup</code>
|
||||
function. The following table provides a list of the various
|
||||
connection drivers and the <code>connect_driver</code> name
|
||||
used by each regardless of primary or secondary connection.
|
||||
The access denied error message from libvirt will list the
|
||||
connection driver by name that denied the access.
|
||||
</p>
|
||||
|
||||
<h3><a id="object_connect_driver">Connection Driver Name</a></h3>
|
||||
<table class="acl">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Connection Driver</th>
|
||||
<th><code>connect_driver</code> name</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>bhyve</td>
|
||||
<td>bhyve</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>esx</td>
|
||||
<td>ESX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>hyperv</td>
|
||||
<td>Hyper-V</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>interface</td>
|
||||
<td>interface</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>libxl</td>
|
||||
<td>xenlight</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>lxc</td>
|
||||
<td>LXC</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>network</td>
|
||||
<td>network</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>nodedev</td>
|
||||
<td>nodedev</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>nwfilter</td>
|
||||
<td>NWFilter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>openvz</td>
|
||||
<td>OPENVZ</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>phyp</td>
|
||||
<td>PHYP</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>qemu</td>
|
||||
<td>QEMU</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>secret</td>
|
||||
<td>secret</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>storage</td>
|
||||
<td>storage</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vbox</td>
|
||||
<td>VBOX</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vmware</td>
|
||||
<td>VMWARE</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vz</td>
|
||||
<td>vz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>xenapi</td>
|
||||
<td>XenAPI</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<h2><a id="user">User identity attributes</a></h2>
|
||||
|
||||
|
@@ -1003,6 +1003,8 @@ class CParser:
|
||||
# skip hidden macros
|
||||
if name in hidden_macros:
|
||||
return token
|
||||
if name[-2:] == "_H" or name[-8:] == "_H_ALLOW":
|
||||
return token
|
||||
|
||||
strValue = None
|
||||
if len(lst) == 1 and lst[0][0] == '"' and lst[0][-1] == '"':
|
||||
@@ -2115,12 +2117,22 @@ class docBuilder:
|
||||
self.modulename_file(id.header)))
|
||||
if id.info is not None:
|
||||
info = id.info
|
||||
valhex = ""
|
||||
if info[0] is not None and info[0] != '':
|
||||
try:
|
||||
val = eval(info[0])
|
||||
valhex = hex(val)
|
||||
except:
|
||||
val = info[0]
|
||||
output.write(" value='%s'" % (val))
|
||||
|
||||
if valhex != "":
|
||||
output.write(" value_hex='%s'" % (valhex))
|
||||
|
||||
m = re.match("\(?1<<(\d+)\)?", info[0])
|
||||
if m:
|
||||
output.write(" value_bitshift='%s'" % (m.group(1)))
|
||||
|
||||
if info[2] is not None and info[2] != '':
|
||||
output.write(" type='%s'" % info[2])
|
||||
if info[1] is not None and info[1] != '':
|
||||
@@ -2270,7 +2282,7 @@ class docBuilder:
|
||||
output.write(" <file name='%s'>\n" % (module))
|
||||
dict = self.headers[file]
|
||||
if dict.info is not None:
|
||||
for data in ('Summary', 'Description', 'Author'):
|
||||
for data in ('Summary', 'Description'):
|
||||
try:
|
||||
output.write(" <%s>%s</%s>\n" % (
|
||||
data.lower(),
|
||||
|
@@ -30,26 +30,6 @@
|
||||
<img src="logos/logo-square-powered-256.png" alt="libvirt powered"/>
|
||||
</p>
|
||||
|
||||
<h2><a id="clientserver">Client/Server applications</a></h2>
|
||||
|
||||
<dl>
|
||||
<dt><a href="http://archipelproject.org">Archipel</a></dt>
|
||||
<dd>
|
||||
Archipel is a libvirt-based solution to manage and supervise virtual
|
||||
machines. It uses XMPP for all communication. There is no web
|
||||
service or custom protocol. You just need at least one XMPP server,
|
||||
like eJabberd, to start playing with it. This allows Archipel to
|
||||
work completely real time. You never have to refresh the user
|
||||
interface, you'll be notified as soon as something happens. You can
|
||||
even use your favorite chat clients to command your infrastructure.
|
||||
</dd>
|
||||
<dd>
|
||||
Isn't it great to be able to open a chat conversation with your
|
||||
virtual machine and say things like "How are you today?" or "Hey,
|
||||
please reboot"?
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h2><a id="command">Command line tools</a></h2>
|
||||
|
||||
<dl>
|
||||
@@ -142,7 +122,7 @@
|
||||
<h2><a id="continuousintegration">Continuous Integration</a></h2>
|
||||
|
||||
<dl>
|
||||
<dt><a href="https://buildbot.net/buildbot/docs/current/Libvirt.html">BuildBot</a></dt>
|
||||
<dt><a href="http://docs.buildbot.net/latest/manual/configuration/workers-libvirt.html">BuildBot</a></dt>
|
||||
<dd>
|
||||
BuildBot is a system to automate the compile/test cycle required
|
||||
by most software projects. CVS commits trigger new builds, run on
|
||||
@@ -373,12 +353,6 @@
|
||||
metrics. It supports pCPU, vCPU, memory, block device, network interface,
|
||||
and performance event metrics for each virtual guest.
|
||||
</dd>
|
||||
<dt><a href="https://community.zenoss.org/docs/DOC-4687">Zenoss</a></dt>
|
||||
<dd>
|
||||
The Zenoss libvirt Zenpack adds support for monitoring virtualization
|
||||
servers. It has been tested with KVM, QEMU, VMware ESX, and VMware
|
||||
GSX.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h2><a id="provisioning">Provisioning</a></h2>
|
||||
@@ -483,17 +457,6 @@
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h2><a id="mobile">Mobile applications</a></h2>
|
||||
|
||||
<dl>
|
||||
<dt><a href="https://market.android.com/details?id=vm.manager">VM Manager</a></dt>
|
||||
<dd>
|
||||
VM Manager is VM (libvirt) manager (over SSH) application. VM Manager
|
||||
is an application for libvirt VM / Domain management over SSH.
|
||||
Please keep in mind that this software is under heavy development.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h2><a id="other">Other</a></h2>
|
||||
|
||||
<dl>
|
||||
|
@@ -184,15 +184,29 @@ Default policy will still allow any application to connect to the RO socket.
|
||||
</p>
|
||||
<p>
|
||||
The default policy can be overridden by creating a new policy file in the
|
||||
local override directory <code>/etc/polkit-1/localauthority/50-local.d/</code>.
|
||||
Policy files should have a unique name ending with .pkla. Using reverse DNS
|
||||
naming works well. Information on the options available can be found by
|
||||
reading the pklocalauthority man page. The two libvirt daemon actions
|
||||
available are named <code>org.libvirt.unix.manage</code> for full management
|
||||
access, and <code>org.libvirt.unix.monitor</code> for read-only access.
|
||||
</p>
|
||||
<code>/etc/polkit-1/rules.d</code> directory. Information on the options
|
||||
available can be found by reading the <code>polkit(8)</code> man page. The
|
||||
two libvirt actions are named <code>org.libvirt.unix.manage</code> for full
|
||||
management access, and <code>org.libvirt.unix.monitor</code> for read-only
|
||||
access.
|
||||
</p>
|
||||
<p>
|
||||
As an example, this gives the user <code>fred</code> full management access:
|
||||
As an example, creating <code>/etc/polkit-1/rules.d/80-libvirt-manage.rules</code>
|
||||
with the following gives the user <code>fred</code> full management access
|
||||
when accessing from an active local session:
|
||||
</p>
|
||||
<pre>polkit.addRule(function(action, subject) {
|
||||
if (action.id == "org.libvirt.unix.manage" &&
|
||||
subject.local && subject.active && subject.user == "fred") {
|
||||
return polkit.Result.YES;
|
||||
}
|
||||
});</pre>
|
||||
<p>
|
||||
Older versions of PolicyKit used policy files ending with .pkla in the
|
||||
local override directory <code>/etc/polkit-1/localauthority/50-local.d/</code>.
|
||||
Compatibility with this older format is provided by <a
|
||||
href="https://pagure.io/polkit-pkla-compat">polkit-pkla-compat</a>. As an
|
||||
example, this gives the user <code>fred</code> full management access:
|
||||
</p>
|
||||
<pre>[Allow fred libvirt management permissions]
|
||||
Identity=unix-user:fred
|
||||
@@ -200,10 +214,6 @@ Action=org.libvirt.unix.manage
|
||||
ResultAny=yes
|
||||
ResultInactive=yes
|
||||
ResultActive=yes</pre>
|
||||
<p>
|
||||
Further examples of PolicyKit setup can be found on the
|
||||
<a href="http://wiki.libvirt.org/page/SSHPolicyKitSetup">wiki page</a>.
|
||||
</p>
|
||||
<h2><a id="ACL_server_sasl">SASL pluggable authentication</a></h2>
|
||||
|
||||
<p>
|
||||
|
@@ -72,7 +72,6 @@
|
||||
<xsl:if test="deprecated">
|
||||
<p> WARNING: this module is deprecated !</p>
|
||||
</xsl:if>
|
||||
<p>Author(s): <xsl:value-of select="author"/></p>
|
||||
<div class="refsynopsisdiv">
|
||||
<h2>Synopsis</h2>
|
||||
<pre class="synopsis">
|
||||
|
@@ -77,6 +77,7 @@
|
||||
<a href="formatstorageencryption.html">storage encryption</a>,
|
||||
<a href="formatcaps.html">capabilities</a>,
|
||||
<a href="formatdomaincaps.html">domain capabilities</a>,
|
||||
<a href="formatstoragecaps.html">storage pool capabilities</a>,
|
||||
<a href="formatnode.html">node devices</a>,
|
||||
<a href="formatsecret.html">secrets</a>,
|
||||
<a href="formatsnapshot.html">snapshots</a></dd>
|
||||
|
@@ -29,7 +29,6 @@
|
||||
<li><strong><a href="drvopenvz.html">OpenVZ</a></strong></li>
|
||||
<li><strong><a href="drvqemu.html">QEMU</a></strong></li>
|
||||
<li><strong><a href="drvtest.html">Test</a></strong> - Used for testing</li>
|
||||
<li><strong><a href="drvuml.html">UML</a></strong> - User Mode Linux</li>
|
||||
<li><strong><a href="drvvbox.html">VirtualBox</a></strong></li>
|
||||
<li><strong><a href="drvesx.html">VMware ESX</a></strong></li>
|
||||
<li><strong><a href="drvvmware.html">VMware Workstation/Player</a></strong></li>
|
||||
|
@@ -462,5 +462,32 @@ Example:</p>
|
||||
</domain>
|
||||
</pre>
|
||||
|
||||
<h3><a id="bhyvecommand">Pass-through of arbitrary bhyve commands</a></h3>
|
||||
|
||||
<p><span class="since">Since 5.1.0</span>, it's possible to pass additional command-line
|
||||
arguments to the bhyve process when starting the domain using the
|
||||
<code><bhyve:commandline></code> element under <code>domain</code>.
|
||||
To supply an argument, use the element <code><bhyve:arg></code> with
|
||||
the attribute <code>value</code> set to additional argument to be added.
|
||||
The arg element may be repeated multiple times. To use this XML addition, it is necessary
|
||||
to issue an XML namespace request (the special <code>xmlns:<i>name</i></code> attribute)
|
||||
that pulls in <code>http://libvirt.org/schemas/domain/bhyve/1.0</code>;
|
||||
typically, the namespace is given the name of <code>bhyve</code>.
|
||||
</p>
|
||||
<p>Example:</p>
|
||||
<pre>
|
||||
<domain type="bhyve" xmlns:bhyve="http://libvirt.org/schemas/domain/bhyve/1.0">
|
||||
...
|
||||
<bhyve:commandline>
|
||||
<bhyve:arg value='-somebhyvearg'/>
|
||||
</bhyve:commandline>
|
||||
</domain>
|
||||
</pre>
|
||||
|
||||
<p>Note that these extensions are for testing and development purposes only.
|
||||
They are <b>unsupported</b>, using them may result in inconsistent state,
|
||||
and upgrading either bhyve or libvirtd maybe break behavior of a domain that
|
||||
was relying on a specific commands pass-through.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -8,7 +8,7 @@
|
||||
|
||||
<p>
|
||||
The libvirt KVM/QEMU driver can manage any QEMU emulator from
|
||||
version 0.12.0 or later.
|
||||
version 1.5.0 or later.
|
||||
</p>
|
||||
|
||||
<h2><a id="project">Project Links</a></h2>
|
||||
@@ -395,9 +395,8 @@ chmod o+x /path/to/directory
|
||||
<pre>
|
||||
/dev/null, /dev/full, /dev/zero,
|
||||
/dev/random, /dev/urandom,
|
||||
/dev/ptmx, /dev/kvm, /dev/kqemu,
|
||||
/dev/rtc, /dev/hpet, /dev/net/tun,
|
||||
/dev/sev
|
||||
/dev/ptmx, /dev/kvm,
|
||||
/dev/rtc, /dev/hpet
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
|
@@ -1,93 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<body>
|
||||
<h1>User Mode Linux driver</h1>
|
||||
|
||||
<p>
|
||||
The UML driver for libvirt allows use and management of paravirtualized
|
||||
guests built for User Mode Linux. UML requires no special support in
|
||||
the host kernel, so can be used by any user of any linux system, provided
|
||||
they have enough free RAM for their guest's needs, though there are
|
||||
certain restrictions on network connectivity unless the administrator
|
||||
has pre-created TAP devices.
|
||||
</p>
|
||||
|
||||
<h2><a id="project">Project Links</a></h2>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
The <a href="http://user-mode-linux.sourceforge.net/">User
|
||||
Mode Linux</a> paravirtualized kernel
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>Connections to UML driver</h2>
|
||||
|
||||
<p>
|
||||
The libvirt UML driver follows the QEMU driver in providing two
|
||||
types of connection. There is one privileged instance per host,
|
||||
which runs as root. This is called the "system" instance, and allows
|
||||
full use of all host resources. Then, there is a per-user unprivileged
|
||||
"session", instance. This has more restricted capabilities, and may
|
||||
require the host administrator to setup certain resources ahead of
|
||||
time to allow full integration with the network. Example connection
|
||||
URIs are
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
uml:///session (local access to per-user instance)
|
||||
uml+unix:///session (local access to per-user instance)
|
||||
|
||||
uml:///system (local access to system instance)
|
||||
uml+unix:///system (local access to system instance)
|
||||
uml://example.com/system (remote access, TLS/x509)
|
||||
uml+tcp://example.com/system (remote access, SASl/Kerberos)
|
||||
uml+ssh://root@example.com/system (remote access, SSH tunnelled)
|
||||
</pre>
|
||||
|
||||
<h2>Example XML configuration</h2>
|
||||
|
||||
<p>
|
||||
User mode Linux driver only supports directly kernel boot at
|
||||
this time. A future driver enhancement may allow a paravirt
|
||||
bootloader in a similar style to Xen's pygrub. For now though,
|
||||
the UML kernel must be stored on the host and referenced
|
||||
explicitly in the "os" element. Since UML is a paravirtualized
|
||||
technology, the kernel "type" is set to "uml"
|
||||
</p>
|
||||
|
||||
<p>
|
||||
There is not yet support for networking in the driver, but
|
||||
disks can be specified in the usual libvirt manner. The main
|
||||
variation is the target device naming scheme "ubd0", and
|
||||
bus type of "uml".
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Once booted the primary console is connected to a PTY, and
|
||||
thus accessible with "virsh console" or equivalent tools
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
<domain type='uml'>
|
||||
<name>demo</name>
|
||||
<uuid>b4433fc2-a22e-ffb3-0a3d-9c173b395800</uuid>
|
||||
<memory>500000</memory>
|
||||
<currentMemory>500000</currentMemory>
|
||||
<vcpu>1</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64'>uml</type>
|
||||
<kernel>/home/berrange/linux-uml-2.6.26-x86_64</kernel>
|
||||
</os>
|
||||
<devices>
|
||||
<disk type='file' device='disk'>
|
||||
<source file='/home/berrange/FedoraCore6-AMD64-root_fs'/>
|
||||
<target dev='ubd0' bus='uml'/>
|
||||
</disk>
|
||||
<console type='pty'/>
|
||||
</devices>
|
||||
</domain>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
@@ -8,7 +8,7 @@
|
||||
|
||||
<p>
|
||||
The libvirt libxl driver provides the ability to manage virtual
|
||||
machines on any Xen release from 4.4.0 onwards.
|
||||
machines on any Xen release from 4.6.0 onwards.
|
||||
</p>
|
||||
|
||||
<h2><a id="project">Project Links</a></h2>
|
||||
|
@@ -129,6 +129,44 @@ MASQUERADE all -- * * 192.168.122.0/24 !192.168.122.0/24</pre>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3><a id="fw-firewalld-and-virtual-network-driver">firewalld and the virtual network driver</a>
|
||||
</h3>
|
||||
<p>
|
||||
If <a href="https://firewalld.org">firewalld</a> is active on
|
||||
the host, libvirt will attempt to place the bridge interface of
|
||||
a libvirt virtual network into the firewalld zone named
|
||||
"libvirt" (thus making all guest->host traffic on that network
|
||||
subject to the rules of the "libvirt" zone). This is done
|
||||
because, if firewalld is using its nftables backend (available
|
||||
since firewalld 0.6.0) the default firewalld zone (which would
|
||||
be used if libvirt didn't explicitly set the zone) prevents
|
||||
forwarding traffic from guests through the bridge, as well as
|
||||
preventing DHCP, DNS, and most other traffic from guests to
|
||||
host. The zone named "libvirt" is installed into the firewalld
|
||||
configuration by libvirt (not by firewalld), and allows
|
||||
forwarded traffic through the bridge as well as DHCP, DNS, TFTP,
|
||||
and SSH traffic to the host - depending on firewalld's backend
|
||||
this will be implemented via either iptables or nftables
|
||||
rules. libvirt's own rules outlined above will *always* be
|
||||
iptables rules regardless of which backend is in use by
|
||||
firewalld.
|
||||
</p>
|
||||
<p>
|
||||
NB: It is possible to manually set the firewalld zone for a
|
||||
network's interface with the "zone" attribute of the network's
|
||||
"bridge" element.
|
||||
</p>
|
||||
<p>
|
||||
NB: Prior to libvirt 5.1.0, the firewalld "libvirt" zone did not
|
||||
exist, and prior to firewalld 0.7.0 a feature crucial to making
|
||||
the "libvirt" zone operate properly (rich rule priority
|
||||
settings) was not implemented in firewalld. In cases where one
|
||||
or the other of the two packages is missing the necessary
|
||||
functionality, it's still possible to have functional guest
|
||||
networking by setting the firewalld backend to "iptables" (in
|
||||
firewalld prior to 0.6.0, this was the only backend available).
|
||||
</p>
|
||||
|
||||
<h3><a id="fw-network-filter-driver">The network filter driver</a>
|
||||
</h3>
|
||||
<p>This driver provides a fully configurable network filtering capability
|
||||
|
@@ -21,6 +21,7 @@
|
||||
<li><a href="formatstorageencryption.html">Storage encryption</a></li>
|
||||
<li><a href="formatcaps.html">Capabilities</a></li>
|
||||
<li><a href="formatdomaincaps.html">Domain capabilities</a></li>
|
||||
<li><a href="formatstoragecaps.html">Storage Pool capabilities</a></li>
|
||||
<li><a href="formatnode.html">Node devices</a></li>
|
||||
<li><a href="formatsecret.html">Secrets</a></li>
|
||||
<li><a href="formatsnapshot.html">Snapshots</a></li>
|
||||
|
@@ -74,24 +74,44 @@
|
||||
is able to run. Possible values are:
|
||||
<dl>
|
||||
<dt><code>xen</code></dt>
|
||||
<dd>for XEN</dd>
|
||||
<dd>for XEN PV</dd>
|
||||
|
||||
<dt><code>linux</code></dt>
|
||||
<dd>legacy alias for <code>xen</code></dd>
|
||||
|
||||
<dt><code>xenpvh</code></dt>
|
||||
<dd>for XEN PVH</dd>
|
||||
|
||||
<dt><code>hvm</code></dt>
|
||||
<dd>Unmodified operating system</dd>
|
||||
|
||||
<dt><code>exe</code></dt>
|
||||
<dd>Container based virtualization</dd>
|
||||
|
||||
<dt><code>uml</code></dt>
|
||||
<dd>User Mode Linux</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
|
||||
<dt><code>arch</code></dt>
|
||||
<dd>This element brings some information on supported guest architecture.</dd>
|
||||
<dd>This element brings some information on supported guest
|
||||
architecture. Possible subelements are:
|
||||
<dl>
|
||||
<dt><code>wordsize</code></dt><dd>Size of CPU word in bits, for example 64.</dd>
|
||||
<dt><code>emulator</code></dt><dd>Emulator (device model) path, for
|
||||
use in <a href="formatdomain.html#elementEmulator">emulator</a>
|
||||
element of domain XML.</dd>
|
||||
<dt><code>loader</code></dt><dd>Loader path, for use in
|
||||
<a href="formatdomain.html#elementLoader">loader</a> element of domain
|
||||
XML.</dd>
|
||||
<dt><code>machine</code></dt><dd>Machine type, for use in
|
||||
<a href="formatdomain.html#attributeOSTypeMachine">machine</a>
|
||||
attribute of os/type element in domain XML. For example Xen
|
||||
supports <code>xenfv</code> for HVM, <code>xenpv</code> for
|
||||
PV, or <code>xenpvh</code> for PVH.</dd>
|
||||
<dt><code>domain</code></dt><dd>The <code>type</code> attribute of
|
||||
this element specifies the type of hypervisor required to run the
|
||||
domain. Use in <a href="formatdomain.html#attributeDomainType">type</a>
|
||||
attribute of the domain root element.</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
|
||||
<dt><code>features</code></dt>
|
||||
<dd>This optional element encases possible features that can be used
|
||||
|
@@ -19,9 +19,10 @@
|
||||
<p>
|
||||
The root element required for all virtual machines is
|
||||
named <code>domain</code>. It has two attributes, the
|
||||
<code>type</code> specifies the hypervisor used for running
|
||||
<a id="attributeDomainType"><code>type</code></a>
|
||||
specifies the hypervisor used for running
|
||||
the domain. The allowed values are driver specific, but
|
||||
include "xen", "kvm", "qemu", "lxc" and "kqemu". The
|
||||
include "xen", "kvm", "qemu" and "lxc". The
|
||||
second attribute is <code>id</code> which is a unique
|
||||
integer identifier for the running guest machine. Inactive
|
||||
machines have no id value.
|
||||
@@ -127,7 +128,7 @@
|
||||
|
||||
<pre>
|
||||
...
|
||||
<os>
|
||||
<os firmware='uefi'>
|
||||
<type>hvm</type>
|
||||
<loader readonly='yes' secure='no' type='rom'>/usr/lib/xen/boot/hvmloader</loader>
|
||||
<nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/nvram/guest_VARS.fd</nvram>
|
||||
@@ -140,6 +141,26 @@
|
||||
...</pre>
|
||||
|
||||
<dl>
|
||||
<dt><code>firmware</code></dt>
|
||||
<dd>The <code>firmware</code> attribute allows management
|
||||
applications to automatically fill <code><loader/></code>
|
||||
and <code><nvram/></code> elements and possibly enable
|
||||
some features required by selected firmware. Accepted values are
|
||||
<code>bios</code> and <code>efi</code>.<br/>
|
||||
The selection process scans for files describing installed
|
||||
firmware images in specified location and uses the most specific
|
||||
one which fulfils domain requirements. The locations in order of
|
||||
preference (from generic to most specific one) are:
|
||||
<ul>
|
||||
<li><code>/usr/share/qemu/firmware</code></li>
|
||||
<li><code>/etc/qemu/firmware</code></li>
|
||||
<li><code>$XDG_CONFIG_HOME/qemu/firmware</code></li>
|
||||
</ul>
|
||||
For more information refer to firmware metadata specification as
|
||||
described in <code>docs/interop/firmware.json</code> in QEMU
|
||||
repository. Regular users do not need to bother.
|
||||
<span class="since">Since 5.2.0 (QEMU and KVM only)</span>
|
||||
</dd>
|
||||
<dt><code>type</code></dt>
|
||||
<dd>The content of the <code>type</code> element specifies the
|
||||
type of operating system to be booted in the virtual machine.
|
||||
@@ -148,11 +169,11 @@
|
||||
(badly named!) refers to an OS that supports the Xen 3 hypervisor
|
||||
guest ABI. There are also two optional attributes, <code>arch</code>
|
||||
specifying the CPU architecture to virtualization,
|
||||
and <code>machine</code> referring to the machine
|
||||
type. The <a href="formatcaps.html">Capabilities XML</a>
|
||||
and <a id="attributeOSTypeMachine"><code>machine</code></a> referring
|
||||
to the machine type. The <a href="formatcaps.html">Capabilities XML</a>
|
||||
provides details on allowed values for
|
||||
these. <span class="since">Since 0.0.1</span></dd>
|
||||
<dt><code>loader</code></dt>
|
||||
<dt><a id="elementLoader"><code>loader</code></a></dt>
|
||||
<dd>The optional <code>loader</code> tag refers to a firmware blob,
|
||||
which is specified by absolute path,
|
||||
used to assist the domain creation process. It is used by Xen
|
||||
@@ -758,6 +779,12 @@
|
||||
<cachetune vcpus='0-3'>
|
||||
<cache id='0' level='3' type='both' size='3' unit='MiB'/>
|
||||
<cache id='1' level='3' type='both' size='3' unit='MiB'/>
|
||||
<monitor level='3' vcpus='1'/>
|
||||
<monitor level='3' vcpus='0-3'/>
|
||||
</cachetune>
|
||||
<cachetune vcpus='4-5'>
|
||||
<monitor level='3' vcpus='4'/>
|
||||
<monitor level='3' vcpus='5'/>
|
||||
</cachetune>
|
||||
<memorytune vcpus='0-3'>
|
||||
<node id='0' bandwidth='60'/>
|
||||
@@ -942,8 +969,8 @@
|
||||
<dl>
|
||||
<dt><code>cache</code></dt>
|
||||
<dd>
|
||||
This element controls the allocation of CPU cache and has the
|
||||
following attributes:
|
||||
This optional element controls the allocation of CPU cache and has
|
||||
the following attributes:
|
||||
<dl>
|
||||
<dt><code>level</code></dt>
|
||||
<dd>
|
||||
@@ -977,6 +1004,26 @@
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt><code>monitor</code><span class="since">Since 4.10.0</span></dt>
|
||||
<dd>
|
||||
The optional element <code>monitor</code> creates the cache
|
||||
monitor(s) for current cache allocation and has the following
|
||||
required attributes:
|
||||
<dl>
|
||||
<dt><code>level</code></dt>
|
||||
<dd>
|
||||
Host cache level the monitor belongs to.
|
||||
</dd>
|
||||
<dt><code>vcpus</code></dt>
|
||||
<dd>
|
||||
vCPU list the monitor applies to. A monitor's vCPU list
|
||||
can only be the member(s) of the vCPU list of the associated
|
||||
allocation. The default monitor has the same vCPU list as the
|
||||
associated allocation. For non-default monitors, overlapping
|
||||
vCPUs are not permitted.
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
|
||||
@@ -1099,7 +1146,7 @@
|
||||
</hugepages>
|
||||
<nosharepages/>
|
||||
<locked/>
|
||||
<source type="file|anonymous"/>
|
||||
<source type="file|anonymous|memfd"/>
|
||||
<access mode="shared|private"/>
|
||||
<allocation mode="immediate|ondemand"/>
|
||||
<discard/>
|
||||
@@ -1150,13 +1197,17 @@
|
||||
suitable for the specific environment at the same time to mitigate
|
||||
the risks described above. <span class="since">Since 1.0.6</span></dd>
|
||||
<dt><code>source</code></dt>
|
||||
<dd>In this attribute you can switch to file memorybacking or keep
|
||||
default anonymous.</dd>
|
||||
<dd>Using the <code>type</code> attribute, it's possible to
|
||||
provide "file" to utilize file memorybacking or keep the
|
||||
default "anonymous". <span class="since">Since 4.10.0</span>,
|
||||
you may choose "memfd" backing. (QEMU/KVM only)</dd>
|
||||
<dt><code>access</code></dt>
|
||||
<dd>Specify if memory is shared or private. This can be overridden per
|
||||
numa node by <code>memAccess</code></dd>
|
||||
<dd>Using the <code>mode</code> attribute, specify if the memory is
|
||||
to be "shared" or "private". This can be overridden per numa node by
|
||||
<code>memAccess</code>.</dd>
|
||||
<dt><code>allocation</code></dt>
|
||||
<dd>Specify when allocate the memory</dd>
|
||||
<dd>Using the <code>mode</code> attribute, specify when to allocate
|
||||
the memory by supplying either "immediate" or "ondemand".</dd>
|
||||
<dt><code>discard</code></dt>
|
||||
<dd>When set and supported by hypervisor the memory
|
||||
content is discarded just before guest shuts down (or
|
||||
@@ -1212,9 +1263,9 @@
|
||||
<a href="#elementsMemoryBacking">memory backing</a> because your
|
||||
workload demands it, you'll have to take into account the specifics of
|
||||
your deployment and figure out a value for <code>hard_limit</code> that
|
||||
balances the risk of your guest being killed because the limit was set
|
||||
too low and the risk of your host crashing because it cannot reclaim
|
||||
the memory used by the guest due to <code>locked</code>. Good luck!</dd>
|
||||
is large enough to support the memory requirements of your guest, but
|
||||
small enough to protect your host against a malicious guest locking all
|
||||
memory.</dd>
|
||||
<dt><code>soft_limit</code></dt>
|
||||
<dd> The optional <code>soft_limit</code> element is the memory limit to
|
||||
enforce during memory contention. The units for this value are
|
||||
@@ -1977,6 +2028,9 @@
|
||||
<frequencies state='on'/>
|
||||
<reenlightenment state='on'/>
|
||||
<tlbflush state='on'/>
|
||||
<ipi state='on'/>
|
||||
<evmcs state='on'/>
|
||||
<msrs unknown='ignore'/>
|
||||
</hyperv>
|
||||
<kvm>
|
||||
<hidden state='on'/>
|
||||
@@ -2048,7 +2102,7 @@
|
||||
<tr>
|
||||
<td>relaxed</td>
|
||||
<td>Relax constraints on timers</td>
|
||||
<td> on, off</td>
|
||||
<td>on, off</td>
|
||||
<td><span class="since">1.0.0 (QEMU 2.0)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -2066,31 +2120,31 @@
|
||||
<tr>
|
||||
<td>vpindex</td>
|
||||
<td>Virtual processor index</td>
|
||||
<td> on, off</td>
|
||||
<td>on, off</td>
|
||||
<td><span class="since">1.3.3 (QEMU 2.5)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>runtime</td>
|
||||
<td>Processor time spent on running guest code and on behalf of guest code</td>
|
||||
<td> on, off</td>
|
||||
<td>on, off</td>
|
||||
<td><span class="since">1.3.3 (QEMU 2.5)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>synic</td>
|
||||
<td>Enable Synthetic Interrupt Controller (SyNIC)</td>
|
||||
<td> on, off</td>
|
||||
<td>on, off</td>
|
||||
<td><span class="since">1.3.3 (QEMU 2.6)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>stimer</td>
|
||||
<td>Enable SyNIC timers</td>
|
||||
<td> on, off</td>
|
||||
<td>on, off</td>
|
||||
<td><span class="since">1.3.3 (QEMU 2.6)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>reset</td>
|
||||
<td>Enable hypervisor reset</td>
|
||||
<td> on, off</td>
|
||||
<td>on, off</td>
|
||||
<td><span class="since">1.3.3 (QEMU 2.5)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -2102,21 +2156,33 @@
|
||||
<tr>
|
||||
<td>frequencies</td>
|
||||
<td>Expose frequency MSRs</td>
|
||||
<td> on, off</td>
|
||||
<td>on, off</td>
|
||||
<td><span class="since">4.7.0 (QEMU 2.12)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>reenlightenment</td>
|
||||
<td>Enable re-enlightenment notification on migration</td>
|
||||
<td> on, off</td>
|
||||
<td>on, off</td>
|
||||
<td><span class="since">4.7.0 (QEMU 3.0)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>tlbflush</td>
|
||||
<td>Enable PV TLB flush support</td>
|
||||
<td> on, off</td>
|
||||
<td>on, off</td>
|
||||
<td><span class="since">4.7.0 (QEMU 3.0)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ipi</td>
|
||||
<td>Enable PV IPI support</td>
|
||||
<td>on, off</td>
|
||||
<td><span class="since">4.10.0 (QEMU 3.1)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>evmcs</td>
|
||||
<td>Enable Enlightened VMCS</td>
|
||||
<td>on, off</td>
|
||||
<td><span class="since">4.10.0 (QEMU 3.1)</span></td>
|
||||
</tr>
|
||||
</table>
|
||||
</dd>
|
||||
<dt><code>pvspinlock</code></dt>
|
||||
@@ -2250,6 +2316,27 @@
|
||||
defined, the hypervisor default will be used.
|
||||
<span class="since">Since 4.6.0</span> (QEMU/KVM only)
|
||||
</dd>
|
||||
<dt><code>nested-hv</code></dt>
|
||||
<dd>Configure nested HV availability for pSeries guests. This needs to
|
||||
be enabled from the host (L0) in order to be effective; having HV
|
||||
support in the (L1) guest is very desiderable if it's planned to
|
||||
run nested (L2) guests inside it, because it will result in those
|
||||
nested guests having much better performance than they would when
|
||||
using KVM PR or TCG.
|
||||
Possible values for the <code>state</code> attribute are
|
||||
<code>on</code> and <code>off</code>. If the attribute is not
|
||||
defined, the hypervisor default will be used.
|
||||
<span class="since">Since 4.10.0</span> (QEMU/KVM only)
|
||||
</dd>
|
||||
<dt><code>msrs</code></dt>
|
||||
<dd>Some guests might require ignoring unknown
|
||||
Model Specific Registers (MSRs) reads and writes. It's possible
|
||||
to switch this by setting <code>unknown</code> attribute
|
||||
of <code>msrs</code> to <code>ignore</code>. If the attribute is
|
||||
not defined, or set to <code>fault</code>, unknown reads and writes
|
||||
will not be ignored.
|
||||
<span class="since">Since 5.1.0</span> (bhyve only)
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h3><a id="elementsTime">Time keeping</a></h3>
|
||||
@@ -2618,7 +2705,7 @@
|
||||
...</pre>
|
||||
|
||||
<dl>
|
||||
<dt><code>emulator</code></dt>
|
||||
<dt><a id="elementEmulator"><code>emulator</code></a></dt>
|
||||
<dd>
|
||||
The contents of the <code>emulator</code> element specify
|
||||
the fully qualified path to the device model emulator binary.
|
||||
@@ -2791,7 +2878,6 @@
|
||||
</source>
|
||||
<target dev='sdb' bus='scsi'/>
|
||||
</disk>
|
||||
</disk>
|
||||
<disk type='network' device='lun'>
|
||||
<driver name='qemu' type='raw'/>
|
||||
<source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool/0'>
|
||||
@@ -2866,6 +2952,17 @@
|
||||
<span class="since">Since 0.1.4</span>
|
||||
</p>
|
||||
</dd>
|
||||
<dt><code>model</code></dt>
|
||||
<dd>
|
||||
Indicates the emulated device model of the disk. Typically
|
||||
this is indicated solely by the <code>bus</code> property but
|
||||
for <code>bus</code> "virtio" the model can be specified further
|
||||
with "virtio-transitional", "virtio-non-transitional", or
|
||||
"virtio". See
|
||||
<a href="#elementsVirtioTransitional">Virtio transitional devices</a>
|
||||
for more details.
|
||||
<span class="since">Since 5.2.0</span>
|
||||
</dd>
|
||||
<dt><code>rawio</code></dt>
|
||||
<dd>
|
||||
Indicates whether the disk needs rawio capability. Valid
|
||||
@@ -3814,6 +3911,11 @@
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<span class="since">Since 5.2.0</span>, the filesystem element
|
||||
has an optional attribute <code>model</code> with supported values
|
||||
"virtio-transitional", "virtio-non-transitional", or "virtio".
|
||||
See <a href="#elementsVirtioTransitional">Virtio transitional devices</a>
|
||||
for more details.
|
||||
</dd>
|
||||
|
||||
<dt><code>driver</code></dt>
|
||||
@@ -3921,7 +4023,15 @@
|
||||
(<span class="since">since 0.9.7, requires QEMU
|
||||
0.13</span>). <code>multifunction</code> defaults to 'off',
|
||||
but should be set to 'on' for function 0 of a slot that will
|
||||
have multiple functions used.<br/>
|
||||
have multiple functions used.
|
||||
(<span class="since">Since 4.10.0</span>), PCI address extensions
|
||||
depending on the architecture are supported. For example, PCI
|
||||
addresses for S390 guests will have a <code>zpci</code> child
|
||||
element, with two attributes: <code>uid</code> (a hex value
|
||||
between 0x0001 and 0xffff, inclusive), and <code>fid</code> (a
|
||||
hex value between 0x00000000 and 0xffffffff, inclusive) used by
|
||||
PCI devices on S390 for User-defined Identifiers and Function
|
||||
Identifiers.<br/>
|
||||
<span class="since">Since 1.3.5</span>, some hypervisor
|
||||
drivers may accept an <code><address type='pci'/></code>
|
||||
element with no other attributes as an explicit request to
|
||||
@@ -4010,6 +4120,63 @@
|
||||
<span class="since">Since 3.5.0</span>
|
||||
</p>
|
||||
|
||||
<h4><a id="elementsVirtioTransitional">Virtio transitional devices</a></h4>
|
||||
|
||||
<p>
|
||||
<span class="since">Since 5.2.0</span>, some of QEMU's virtio devices,
|
||||
when used with PCI/PCIe machine types, accept the following
|
||||
<code>model</code> values:
|
||||
</p>
|
||||
|
||||
<dl>
|
||||
<dt><code>virtio-transitional</code></dt>
|
||||
<dd>This device can work both with virtio 0.9 and virtio 1.0 guest
|
||||
drivers, so it's the best choice when compatibility with older
|
||||
guest operating systems is desired. libvirt will plug the device
|
||||
into a conventional PCI slot.
|
||||
</dd>
|
||||
<dt><code>virtio-non-transitional</code></dt>
|
||||
<dd>This device can only work with virtio 1.0 guest drivers, and it's
|
||||
the recommended option unless compatibility with older guest
|
||||
operating systems is necessary. libvirt will plug the device into
|
||||
either a PCI Express slot or a conventional PCI slot based on the
|
||||
machine type, resulting in a more optimized PCI topology.
|
||||
</dd>
|
||||
<dt><code>virtio</code></dt>
|
||||
<dd>This device will work like a <code>virtio-non-transitional</code>
|
||||
device when plugged into a PCI Express slot, and like a
|
||||
<code>virtio-transitional</code> device otherwise; libvirt will
|
||||
pick one or the other based on the machine type. This is the best
|
||||
choice when compatibility with libvirt versions older than 5.2.0
|
||||
is necessary, but it's otherwise not recommended to use it.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p>
|
||||
While the information outlined above applies to most virtio devices,
|
||||
there are a few exceptions:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
for SCSI controllers, <code>virtio-scsi</code> must be used instead
|
||||
of <code>virtio</code> for backwards compatibility reasons;
|
||||
</li>
|
||||
<li>
|
||||
some devices, such as GPUs and input devices (keyboard, tablet and
|
||||
mouse), are only defined in the virtio 1.0 spec and as such don't
|
||||
have a transitional variant: the only accepted model is
|
||||
<code>virtio</code>, which will result in a non-transitional device.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
For more details see the
|
||||
<a href="https://lists.gnu.org/archive/html/qemu-devel/2018-12/msg00923.html">qemu patch posting</a> and the
|
||||
<a href="http://docs.oasis-open.org/virtio/virtio/v1.0/virtio-v1.0.html">virtio-1.0 spec</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<h4><a id="elementsControllers">Controllers</a></h4>
|
||||
|
||||
<p>
|
||||
@@ -4034,6 +4201,7 @@
|
||||
<driver iothread='4'/>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
|
||||
</controller>
|
||||
<controller type='xenbus' maxGrantFrames='64'/>
|
||||
...
|
||||
</devices>
|
||||
...</pre>
|
||||
@@ -4057,12 +4225,20 @@
|
||||
<dd>The <code>virtio-serial</code> controller has two additional
|
||||
optional attributes <code>ports</code> and <code>vectors</code>,
|
||||
which control how many devices can be connected through the
|
||||
controller.</dd>
|
||||
controller. <span class="since">Since 5.2.0</span>, it
|
||||
supports an optional attribute <code>model</code> which can
|
||||
be 'virtio', 'virtio-transitional', or 'virtio-non-transitional'. See
|
||||
<a href="#elementsVirtioTransitional">Virtio transitional devices</a>
|
||||
for more details.
|
||||
</dd>
|
||||
<dt><code>scsi</code></dt>
|
||||
<dd>A <code>scsi</code> controller has an optional attribute
|
||||
<code>model</code>, which is one of 'auto', 'buslogic', 'ibmvscsi',
|
||||
'lsilogic', 'lsisas1068', 'lsisas1078', 'virtio-scsi' or
|
||||
'vmpvscsi'.</dd>
|
||||
'lsilogic', 'lsisas1068', 'lsisas1078', 'virtio-scsi',
|
||||
'vmpvscsi', 'virtio-transitional', 'virtio-non-transitional'. See
|
||||
<a href="#elementsVirtioTransitional">Virtio transitional devices</a>
|
||||
for more details.
|
||||
</dd>
|
||||
<dt><code>usb</code></dt>
|
||||
<dd>A <code>usb</code> controller has an optional attribute
|
||||
<code>model</code>, which is one of "piix3-uhci", "piix4-uhci",
|
||||
@@ -4081,6 +4257,11 @@
|
||||
<dd><span class="since">Since 3.10.0</span> for the vbox driver, the
|
||||
<code>ide</code> controller has an optional attribute
|
||||
<code>model</code>, which is one of "piix3", "piix4" or "ich6".</dd>
|
||||
<dt><code>xenbus</code></dt>
|
||||
<dd><span class="since">Since 5.2.0</span>, the <code>xenbus</code>
|
||||
controller has an optional attribute <code>maxGrantFrames</code>,
|
||||
which specifies the maximum number of grant frames the controller
|
||||
makes available for connected devices.</dd>
|
||||
</dl>
|
||||
|
||||
<p>
|
||||
@@ -4606,14 +4787,20 @@
|
||||
<dd><span class="since">since 2.5.0</span>For SCSI devices, user
|
||||
is responsible to make sure the device is not used by host. This
|
||||
<code>type</code> passes all LUNs presented by a single HBA to
|
||||
the guest.
|
||||
the guest. <span class="since">Since 5.2.0,</span> the
|
||||
<code>model</code> attribute can be specified further
|
||||
with "virtio-transitional", "virtio-non-transitional", or
|
||||
"virtio". See
|
||||
<a href="#elementsVirtioTransitional">Virtio transitional devices</a>
|
||||
for more details.
|
||||
</dd>
|
||||
<dt><code>mdev</code></dt>
|
||||
<dd>For mediated devices (<span class="since">Since 3.2.0</span>)
|
||||
the <code>model</code> attribute specifies the device API which
|
||||
determines how the host's vfio driver will expose the device to the
|
||||
guest. Currently, <code>model='vfio-pci'</code> and
|
||||
guest. Currently, <code>model='vfio-pci'</code>,
|
||||
<code>model='vfio-ccw'</code> (<span class="since">Since 4.4.0</span>)
|
||||
and <code>model='vfio-ap'</code> (<span class="since">Since 4.9.0</span>)
|
||||
is supported. <a href="drvnodedev.html#MDEV">MDEV</a> section
|
||||
provides more information about mediated devices as well as how to
|
||||
create mediated devices on the host.
|
||||
@@ -5163,7 +5350,6 @@
|
||||
<virtualport>
|
||||
<parameters instanceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f'/>
|
||||
</virtualport>
|
||||
|
||||
</interface>
|
||||
</devices>
|
||||
...</pre>
|
||||
@@ -5640,7 +5826,11 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
|
||||
<p>
|
||||
Typical values for QEMU and KVM include:
|
||||
ne2k_isa i82551 i82557b i82559er ne2k_pci pcnet rtl8139 e1000 virtio
|
||||
ne2k_isa i82551 i82557b i82559er ne2k_pci pcnet rtl8139 e1000 virtio.
|
||||
<span class="since">Since 5.2.0</span>, <code>virtio-transitional</code>
|
||||
and <code>virtio-non-transitional</code> values are supported.
|
||||
See <a href="#elementsVirtioTransitional">Virtio transitional devices</a>
|
||||
for more details.
|
||||
</p>
|
||||
|
||||
<h5><a id="elementsDriverBackendOptions">Setting NIC driver-specific options</a></h5>
|
||||
@@ -5656,8 +5846,7 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<host csum='off' gso='off' tso4='off' tso6='off' ecn='off' ufo='off' mrg_rxbuf='off'/>
|
||||
<guest csum='off' tso4='off' tso6='off' ecn='off' ufo='off'/>
|
||||
</driver>
|
||||
</b>
|
||||
</interface>
|
||||
</b></interface>
|
||||
</devices>
|
||||
...</pre>
|
||||
|
||||
@@ -6159,7 +6348,7 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<b><route family='ipv4' address='192.168.122.0' prefix='24' gateway='192.168.122.1'/></b>
|
||||
<b><route family='ipv4' address='192.168.122.8' gateway='192.168.122.1'/></b>
|
||||
</hostdev>
|
||||
|
||||
...
|
||||
</devices>
|
||||
...
|
||||
</pre>
|
||||
@@ -6351,6 +6540,12 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
For type <code>passthrough</code>, the mandatory sub-element <code>source</code>
|
||||
must have an <code>evdev</code> attribute containing the absolute path to the
|
||||
event device passed through to guests. (KVM only)
|
||||
|
||||
<span class="since">Since 5.2.0</span>, the <code>input</code> element
|
||||
accepts a <code>model</code> attribute which has the values 'virtio',
|
||||
'virtio-transitional' and 'virtio-non-transitional'. See
|
||||
<a href="#elementsVirtioTransitional">Virtio transitional devices</a>
|
||||
for more details.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -6641,12 +6836,17 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
the other types, for practical reasons it should be paired with
|
||||
either <code>vnc</code> or <code>spice</code> graphics types.
|
||||
This display type is only supported by QEMU domains
|
||||
(needs QEMU <span class="since">2.10</span> or newer) and doesn't
|
||||
accept any attributes.
|
||||
(needs QEMU <span class="since">2.10</span> or newer).
|
||||
<span class="Since">5.0.0</span> this element accepts a
|
||||
<code><gl/></code> sub-element with an optional attribute
|
||||
<code>rendernode</code> which can be used to specify an absolute
|
||||
path to a host's DRI device to be used for OpenGL rendering.
|
||||
</p>
|
||||
<pre>
|
||||
<graphics type='spice' autoport='yes'/>
|
||||
<graphics type='egl-headless'/>
|
||||
<graphics type='egl-headless'>
|
||||
<gl rendernode='/dev/dri/renderD128'/>
|
||||
</graphics>
|
||||
</pre>
|
||||
</dd>
|
||||
</dl>
|
||||
@@ -7093,9 +7293,9 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
Valid values for the <code>type</code> attribute are:
|
||||
<code>serial</code> (described below);
|
||||
<code>virtio</code> (usable whenever VirtIO support is available);
|
||||
<code>xen</code>, <code>lxc</code>, <code>uml</code> and
|
||||
<code>openvz</code> (available when the corresponding hypervisor is in
|
||||
use). <code>sclp</code> and <code>sclplm</code> (usable for s390 and
|
||||
<code>xen</code>, <code>lxc</code> and <code>openvz</code>
|
||||
(available when the corresponding hypervisor is in use).
|
||||
<code>sclp</code> and <code>sclplm</code> (usable for s390 and
|
||||
s390x QEMU guests) are supported for compatibility reasons but should
|
||||
not be used for new guests: use the <code>sclpconsole</code> and
|
||||
<code>sclplmconsole</code> target models, respectively, with the
|
||||
@@ -7817,8 +8017,12 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
</p>
|
||||
<ul>
|
||||
<li>'virtio' - default with QEMU/KVM</li>
|
||||
<li>'virtio-transitional' <span class="since">Since 5.2.0</span></li>
|
||||
<li>'virtio-non-transitional' <span class="since">Since 5.2.0</span></li>
|
||||
<li>'xen' - default with Xen</li>
|
||||
</ul>
|
||||
See <a href="#elementsVirtioTransitional">Virtio transitional devices</a>
|
||||
for more details.
|
||||
</dd>
|
||||
<dt><code>autodeflate</code></dt>
|
||||
<dd>
|
||||
@@ -7890,7 +8094,11 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
</p>
|
||||
<ul>
|
||||
<li>'virtio' - supported by qemu and virtio-rng kernel module</li>
|
||||
<li>'virtio-transitional' <span class='since'>Since 5.2.0</span></li>
|
||||
<li>'virtio-non-transitional' <span class='since'>Since 5.2.0</span></li>
|
||||
</ul>
|
||||
See <a href="#elementsVirtioTransitional">Virtio transitional devices</a>
|
||||
for more details.
|
||||
</dd>
|
||||
<dt><code>rate</code></dt>
|
||||
<dd>
|
||||
@@ -8254,6 +8462,21 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<memory model='nvdimm'>
|
||||
<source>
|
||||
<path>/tmp/nvdimm</path>
|
||||
<alignsize unit='KiB'>2048</alignsize>
|
||||
</source>
|
||||
<target>
|
||||
<size unit='KiB'>524288</size>
|
||||
<node>1</node>
|
||||
<label>
|
||||
<size unit='KiB'>128</size>
|
||||
</label>
|
||||
<readonly/>
|
||||
</target>
|
||||
</memory>
|
||||
<memory model='nvdimm'>
|
||||
<source>
|
||||
<path>/dev/dax0.0</path>
|
||||
<pmem/>
|
||||
</source>
|
||||
<target>
|
||||
<size unit='KiB'>524288</size>
|
||||
@@ -8335,10 +8558,36 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
</dl>
|
||||
|
||||
<p>
|
||||
For model <code>nvdimm</code> this element is mandatory and has a
|
||||
single child element <code>path</code> that represents a path
|
||||
in the host that backs the nvdimm module in the guest.
|
||||
For model <code>nvdimm</code> this element is mandatory. The
|
||||
mandatory child element <code>path</code> represents a path in
|
||||
the host that backs the nvdimm module in the guest. The following
|
||||
optional elements may be used:
|
||||
</p>
|
||||
|
||||
<dl>
|
||||
<dt><code>alignsize</code></dt>
|
||||
<dd>
|
||||
<p>
|
||||
The <code>alignsize</code> element defines the page size
|
||||
alignment used to mmap the address range for the backend
|
||||
<code>path</code>. If not supplied the host page size is used.
|
||||
For example, to mmap a real NVDIMM device a 2M-aligned page may
|
||||
be required.
|
||||
<span class="since">Since 5.0.0</span>
|
||||
</p>
|
||||
</dd>
|
||||
|
||||
<dt><code>pmem</code></dt>
|
||||
<dd>
|
||||
<p>
|
||||
If persistent memory is supported and enabled by the hypervisor
|
||||
in order to guarantee the persistence of writes to the vNVDIMM
|
||||
backend, then use the <code>pmem</code> element in order to
|
||||
utilize the feature.
|
||||
<span class="since">Since 5.0.0</span>
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
|
||||
<dt><code>target</code></dt>
|
||||
@@ -8357,19 +8606,39 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
NUMA nodes configured.
|
||||
</p>
|
||||
<p>
|
||||
For NVDIMM type devices one can optionally use
|
||||
<code>label</code> and its subelement <code>size</code>
|
||||
to configure the size of namespaces label storage
|
||||
within the NVDIMM module. The <code>size</code> element
|
||||
has usual meaning described
|
||||
<a href="#elementsMemoryAllocation">here</a>.
|
||||
For QEMU domains the following restrictions apply:
|
||||
The following optional elements may be used:
|
||||
</p>
|
||||
<ol>
|
||||
<li>the minimum label size is 128KiB,</li>
|
||||
<li>the remaining size (total-size - label-size) has to be aligned to
|
||||
4KiB</li>
|
||||
</ol>
|
||||
|
||||
<dl>
|
||||
<dt><code>label</code></dt>
|
||||
<dd>
|
||||
<p>
|
||||
For NVDIMM type devices one can optionally use
|
||||
<code>label</code> and its subelement <code>size</code>
|
||||
to configure the size of namespaces label storage
|
||||
within the NVDIMM module. The <code>size</code> element
|
||||
has usual meaning described
|
||||
<a href="#elementsMemoryAllocation">here</a>.
|
||||
For QEMU domains the following restrictions apply:
|
||||
</p>
|
||||
<ol>
|
||||
<li>the minimum label size is 128KiB,</li>
|
||||
<li>the remaining size (total-size - label-size) will be aligned
|
||||
to 4KiB as default.</li>
|
||||
</ol>
|
||||
</dd>
|
||||
|
||||
<dt><code>readonly</code></dt>
|
||||
<dd>
|
||||
<p>
|
||||
The <code>readonly</code> element is used to mark the vNVDIMM
|
||||
as read-only. Only the real NVDIMM device backend can guarantee
|
||||
the guest write persistence, so other backend types should use
|
||||
the <code>readonly</code> element.
|
||||
<span class="since">Since 5.0.0</span>
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
@@ -8456,7 +8725,11 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<h3><a id="vsock">Vsock</a></h3>
|
||||
|
||||
<p>A vsock host/guest interface. The <code>model</code> attribute
|
||||
defaults to <code>virtio</code>.
|
||||
defaults to <code>virtio</code>. <span class="since">Since 5.2.0</span>
|
||||
<code>model</code> can also be 'virtio-transitional' and
|
||||
'virtio-non-transitional', see
|
||||
<a href="#elementsVirtioTransitional">Virtio transitional devices</a>
|
||||
for more details.
|
||||
The optional attribute <code>address</code> of the <code>cid</code>
|
||||
element specifies the CID assigned to the guest. If the attribute
|
||||
<code>auto</code> is set to <code>yes</code>, libvirt
|
||||
@@ -8656,8 +8929,8 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
different entity using a different key the encrypted guests data will
|
||||
be incorrectly decrypted, leading to unintelligible data.
|
||||
|
||||
For more information see various input parameters and its format see the SEV API spec
|
||||
<a href="https://support.amd.com/TechDocs/55766_SEV-KM%20API_Specification.pdf"> https://support.amd.com/TechDocs/55766_SEV-KM%20API_Specification.pdf </a>
|
||||
For more information see various input parameters and its format see the
|
||||
<a href="https://support.amd.com/TechDocs/55766_SEV-KM_API_Specification.pdf">SEV API spec</a>
|
||||
<span class="since">Since 4.4.0</span>
|
||||
</p>
|
||||
<pre>
|
||||
|
@@ -37,6 +37,17 @@
|
||||
management application to choose an appropriate mode for a pass-through
|
||||
host device as well as which adapter to utilize.</p>
|
||||
|
||||
<p>Some XML elements may be entirely omitted from the domaincapabilities
|
||||
XML, depending on what the libvirt driver has filled in. Applications
|
||||
should only act on what is explicitly reported in the domaincapabilities
|
||||
XML. For example, if <disk supported='yes'/> is present, you can safely
|
||||
assume the driver supports <disk> devices. If <disk supported='no'/> is
|
||||
present, you can safely assume the driver does NOT support <disk>
|
||||
devices. If the <disk> block is omitted entirely, the driver is not
|
||||
indicating one way or the other whether it supports <disk> devices, and
|
||||
applications should not interpret the missing block to mean any thing in
|
||||
particular.</p>
|
||||
|
||||
<h2><a id="elements">Element and attribute overview</a></h2>
|
||||
|
||||
<p> A new query interface was added to the virConnect API's to retrieve the
|
||||
@@ -278,7 +289,6 @@
|
||||
<value>virtio</value>
|
||||
<value>xen</value>
|
||||
<value>usb</value>
|
||||
<value>uml</value>
|
||||
<value>sata</value>
|
||||
<value>sd</value>
|
||||
</enum>
|
||||
@@ -482,7 +492,7 @@
|
||||
|
||||
<p>
|
||||
For more details on SEV feature see:
|
||||
<a href="https://support.amd.com/TechDocs/55766_SEV-KM%20API_Specification.pdf">
|
||||
<a href="https://support.amd.com/TechDocs/55766_SEV-KM_API_Specification.pdf">
|
||||
SEV API spec</a> and <a href="http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_Memory_Encryption_Whitepaper_v7-Public.pdf">
|
||||
SEV White Paper</a>
|
||||
</p>
|
||||
|
@@ -107,13 +107,13 @@
|
||||
may also be connected to the LAN. When defining
|
||||
a new network with a <code><forward></code> mode of
|
||||
|
||||
"nat" or "route" (or an isolated network with
|
||||
"nat", "route", or "open" (or an isolated network with
|
||||
no <code><forward></code> element), libvirt will
|
||||
automatically generate a unique name for the bridge device if
|
||||
none is given, and this name will be permanently stored in the
|
||||
network configuration so that that the same name will be used
|
||||
every time the network is started. For these types of networks
|
||||
(nat, routed, and isolated), a bridge name beginning with the
|
||||
(nat, route, open, and isolated), a bridge name beginning with the
|
||||
prefix "virbr" is recommended (and that is what is
|
||||
auto-generated), but not enforced.
|
||||
Attribute <code>stp</code> specifies if Spanning Tree Protocol
|
||||
@@ -152,6 +152,23 @@
|
||||
<span class="since">Since 1.2.11, requires kernel 3.17 or
|
||||
newer</span>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The optional <code>zone</code> attribute of
|
||||
the <code>bridge</code> element is used to specify
|
||||
the <a href="https://firewalld.org">firewalld</a>
|
||||
zone for the bridge of a network with <code>forward</code>
|
||||
mode of "nat", "route", "open", or one with
|
||||
no <code>forward</code> specified. By default, the bridges
|
||||
of all virtual networks with these forward modes are placed
|
||||
in the firewalld zone named "libvirt", which permits
|
||||
incoming DNS, DHCP, TFTP, and SSH to the host from guests on
|
||||
the network. This behavior can be changed either by
|
||||
modifying the libvirt zone (using firewalld management
|
||||
tools), or by placing the network in a different zone (which
|
||||
will also be managed using firewalld tools).
|
||||
<span class="since">Since 5.1.0</span>
|
||||
</p>
|
||||
</dd>
|
||||
|
||||
<dt><code>mtu</code></dt>
|
||||
|
@@ -70,6 +70,10 @@
|
||||
<dd>Describes a device on the host's PCI bus. Sub-elements
|
||||
include:
|
||||
<dl>
|
||||
<dt><code>class</code></dt>
|
||||
<dd>Optional element for combined class, subclass and
|
||||
programming interface codes as 6-digit hexadecimal number.
|
||||
<span class="since">Since 5.2.0</span></dd>
|
||||
<dt><code>domain</code></dt>
|
||||
<dd>Which domain the device belongs to.</dd>
|
||||
<dt><code>bus</code></dt>
|
||||
@@ -381,6 +385,7 @@
|
||||
<name>igb</name>
|
||||
</driver>
|
||||
<capability type='pci'>
|
||||
<class>0x020000</class>
|
||||
<domain>0</domain>
|
||||
<bus>2</bus>
|
||||
<slot>0</slot>
|
||||
|
@@ -2265,7 +2265,7 @@ echo 3 > /proc/sys/net/netfilter/nf_conntrack_icmp_timeout
|
||||
to the incoming and outgoing direction. All this is related to the ftp
|
||||
data traffic originating from TCP port 20 of the VM. This then leads to
|
||||
the following solution
|
||||
<span class="since">(since 0.8.5 (QEMU, KVM, UML))</span>:
|
||||
<span class="since">(since 0.8.5 (QEMU, KVM))</span>:
|
||||
</p>
|
||||
<pre>
|
||||
<filter name='test-eth0'>
|
||||
|
@@ -33,7 +33,7 @@
|
||||
resume in a consistent state; but if the disks are modified
|
||||
externally in the meantime, this is likely to lead to data
|
||||
corruption.</dd>
|
||||
<dt>system checkpoint</dt>
|
||||
<dt>full system</dt>
|
||||
<dd>A combination of disk snapshots for all disks as well as VM
|
||||
memory state, which can be used to resume the guest from where it
|
||||
left off with symptoms similar to hibernation (that is, TCP
|
||||
@@ -55,11 +55,12 @@
|
||||
as <code>virDomainSaveImageGetXMLDesc()</code> to work with
|
||||
those files.
|
||||
</p>
|
||||
<p>System checkpoints are created
|
||||
by <code>virDomainSnapshotCreateXML()</code> with no flags, and
|
||||
<p>Full system snapshots are created
|
||||
by <code>virDomainSnapshotCreateXML()</code> with no flags, while
|
||||
disk snapshots are created by the same function with
|
||||
the <code>VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY</code> flag; in
|
||||
both cases, they are restored by
|
||||
the <code>VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY</code>
|
||||
flag. Regardless of the flags provided, restoration of the
|
||||
snapshot is handled by
|
||||
the <code>virDomainRevertToSnapshot()</code> function. For
|
||||
these types of snapshots, libvirt tracks each snapshot as a
|
||||
separate <code>virDomainSnapshotPtr</code> object, and maintains
|
||||
@@ -78,7 +79,8 @@
|
||||
redefining a snapshot (<span class="since">since 0.9.5</span>),
|
||||
with the <code>VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE</code> flag
|
||||
of <code>virDomainSnapshotCreateXML()</code>, all of the XML
|
||||
described here is relevant.
|
||||
described here is relevant on input, even the fields that are
|
||||
normally described as readonly for output.
|
||||
</p>
|
||||
<p>
|
||||
Snapshots are maintained in a hierarchy. A domain can have a
|
||||
@@ -97,16 +99,14 @@
|
||||
</p>
|
||||
<dl>
|
||||
<dt><code>name</code></dt>
|
||||
<dd>The name for this snapshot. If the name is specified when
|
||||
initially creating the snapshot, then the snapshot will have
|
||||
that particular name. If the name is omitted when initially
|
||||
creating the snapshot, then libvirt will make up a name for
|
||||
the snapshot, based on the time when it was created.
|
||||
<dd>The optional name for this snapshot. If the name is
|
||||
omitted, libvirt will create a name based on the time of the
|
||||
creation.
|
||||
</dd>
|
||||
<dt><code>description</code></dt>
|
||||
<dd>A human-readable description of the snapshot. If the
|
||||
description is omitted when initially creating the snapshot,
|
||||
then this field will be empty.
|
||||
<dd>An optional human-readable description of the snapshot. If
|
||||
the description is omitted when initially creating the
|
||||
snapshot, then this field will be empty.
|
||||
</dd>
|
||||
<dt><code>memory</code></dt>
|
||||
<dd>On input, this is an optional request for how to handle VM
|
||||
@@ -128,13 +128,10 @@
|
||||
what file name is created in an external snapshot. On output,
|
||||
this is fully populated to show the state of each disk in the
|
||||
snapshot, including any properties that were generated by the
|
||||
hypervisor defaults. For system checkpoints, this field is
|
||||
ignored on input and omitted on output (a system checkpoint
|
||||
implies that all disks participate in the snapshot process,
|
||||
and since the current implementation only does internal system
|
||||
checkpoints, there are no extra details to add); a future
|
||||
release may allow the use of <code>disks</code> with a system
|
||||
checkpoint. This element has a list of <code>disk</code>
|
||||
hypervisor defaults. For full system snapshots, this field is
|
||||
ignored on input and omitted on output (a full system snapshot
|
||||
implies that all disks participate in the snapshot process).
|
||||
This element has a list of <code>disk</code>
|
||||
sub-elements, describing anywhere from zero to all of the
|
||||
disks associated with the domain. <span class="since">Since
|
||||
0.9.5</span>
|
||||
@@ -201,45 +198,52 @@
|
||||
</dl>
|
||||
</dd>
|
||||
<dt><code>creationTime</code></dt>
|
||||
<dd>The time this snapshot was created. The time is specified
|
||||
in seconds since the Epoch, UTC (i.e. Unix time). Readonly.
|
||||
<dd>A readonly representation of the time this snapshot was
|
||||
created. The time is specified in seconds since the Epoch,
|
||||
UTC (i.e. Unix time).
|
||||
</dd>
|
||||
<dt><code>state</code></dt>
|
||||
<dd>The state of the domain at the time this snapshot was taken.
|
||||
If the snapshot was created as a system checkpoint, then this
|
||||
is the state of the domain at that time; when the domain is
|
||||
reverted to this snapshot, the domain's state will default to
|
||||
whatever is in this field unless additional flags are passed
|
||||
to <code>virDomainRevertToSnapshot()</code>. Additionally,
|
||||
this field can be the value "disk-snapshot"
|
||||
(<span class="since">since 0.9.5</span>) when it represents
|
||||
only a disk snapshot (no VM memory state), and reverting to this
|
||||
snapshot will default to an inactive guest. Readonly.
|
||||
<dd>A readonly representation of the state of the domain at the
|
||||
time this snapshot was taken. If a full system snapshot was
|
||||
created, then this is the state of the domain at that
|
||||
time. When the domain is reverted to this snapshot, the
|
||||
domain's state will default to this state, unless overridden
|
||||
by <code>virDomainRevertToSnapshot()</code> flags to revert to
|
||||
a running or paused state. Additionally, this field can be the
|
||||
value "disk-snapshot" (<span class="since">since 0.9.5</span>)
|
||||
when it represents only a disk snapshot (no VM memory state),
|
||||
and reverting to this snapshot will default to an inactive
|
||||
guest.
|
||||
</dd>
|
||||
<dt><code>parent</code></dt>
|
||||
<dd>The parent of this snapshot. If present, this element
|
||||
contains exactly one child element, name. This specifies the
|
||||
name of the parent snapshot of this snapshot, and is used to
|
||||
represent trees of snapshots. Readonly.
|
||||
<dd>An optional readonly representation of the parent of this
|
||||
snapshot. If present, this element contains exactly one child
|
||||
element, <code>name</code>. This specifies the name of the
|
||||
parent snapshot of this snapshot, and is used to represent
|
||||
trees of snapshots.
|
||||
</dd>
|
||||
<dt><code>domain</code></dt>
|
||||
<dd>The domain that this snapshot was taken against. Older
|
||||
versions of libvirt stored only a single child element, uuid;
|
||||
reverting to a snapshot like this is risky if the current
|
||||
state of the domain differs from the state that the domain was
|
||||
created in, and requires the use of the
|
||||
<code>VIR_DOMAIN_SNAPSHOT_REVERT_FORCE</code> flag
|
||||
<dd>A readonly representation of the domain that this snapshot
|
||||
was taken against. Older versions of libvirt stored only a
|
||||
single child element, uuid; reverting to a snapshot like this
|
||||
is risky if the current state of the domain differs from the
|
||||
state that the domain was created in, and requires the use of
|
||||
the <code>VIR_DOMAIN_SNAPSHOT_REVERT_FORCE</code> flag
|
||||
in <code>virDomainRevertToSnapshot()</code>. Newer versions
|
||||
of libvirt (<span class="since">since 0.9.5</span>) store the entire
|
||||
inactive <a href="formatdomain.html">domain configuration</a>
|
||||
at the time of the snapshot (<span class="since">since
|
||||
0.9.5</span>). Readonly.
|
||||
of libvirt (<span class="since">since 0.9.5</span>) store the
|
||||
entire inactive <a href="formatdomain.html">domain
|
||||
configuration</a> at the time of the snapshot
|
||||
(<span class="since">since 0.9.5</span>). The domain will have
|
||||
security-sensitive information omitted
|
||||
unless the flag <code>VIR_DOMAIN_SNAPSHOT_XML_SECURE</code> is
|
||||
provided on a read-write connection.
|
||||
</dd>
|
||||
<dt><code>cookie</code></dt>
|
||||
<dd>Save image cookie containing additional data libvirt may need to
|
||||
properly restore a domain from an active snapshot when such data
|
||||
cannot be stored directly in the <code>domain</code> to maintain
|
||||
compatibility with older libvirt or hypervisor. Readonly.
|
||||
<dd>An optional readonly representation of a save image cookie
|
||||
containing additional data libvirt may need to properly
|
||||
restore a domain from an active snapshot when such data cannot
|
||||
be stored directly in the <code>domain</code> to maintain
|
||||
compatibility with older libvirt or hypervisor.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
@@ -19,14 +19,15 @@
|
||||
a single attribute <code>type</code>, which is one of <code>dir</code>,
|
||||
<code>fs</code>, <code>netfs</code>, <code>disk</code>,
|
||||
<code>iscsi</code>, <code>logical</code>, <code>scsi</code>
|
||||
(all <span class="since">since 0.4.1</span>), <code>mpath</code>
|
||||
(<span class="since">since 0.7.1</span>), <code>rbd</code>
|
||||
(<span class="since">since 0.9.13</span>), <code>sheepdog</code>
|
||||
(<span class="since">since 0.10.0</span>),
|
||||
<code>gluster</code> (<span class="since">since
|
||||
1.2.0</span>), <code>zfs</code> (<span class="since">since
|
||||
1.2.8</span>) or <code>vstorage</code> (<span class="since">since
|
||||
3.1.0</span>). This corresponds to the
|
||||
(all <span class="since">since 0.4.1</span>),
|
||||
<code>mpath</code> (<span class="since">since 0.7.1</span>),
|
||||
<code>rbd</code> (<span class="since">since 0.9.13</span>),
|
||||
<code>sheepdog</code> (<span class="since">since 0.10.0</span>),
|
||||
<code>gluster</code> (<span class="since">since 1.2.0</span>),
|
||||
<code>zfs</code> (<span class="since">since 1.2.8</span>),
|
||||
<code>vstorage</code> (<span class="since">since 3.1.0</span>),
|
||||
or <code>iscsi-direct</code> (<span class="since">since 4.7.0</span>).
|
||||
This corresponds to the
|
||||
storage backend drivers listed further along in this document.
|
||||
</p>
|
||||
<h3><a id="StoragePoolFirst">General metadata</a></h3>
|
||||
@@ -121,15 +122,26 @@
|
||||
</source>
|
||||
...</pre>
|
||||
|
||||
<pre>
|
||||
...
|
||||
<source>
|
||||
<host name='localhost'/>
|
||||
<dir path='/var/lib/libvirt/images'/>
|
||||
<format type='nfs'/>
|
||||
<protocol ver='3'/>
|
||||
</source>
|
||||
...</pre>
|
||||
|
||||
<dl>
|
||||
<dt><code>device</code></dt>
|
||||
<dd>Provides the source for pools backed by physical devices
|
||||
(pool types <code>fs</code>, <code>logical</code>, <code>disk</code>,
|
||||
<code>iscsi</code>, <code>zfs</code>, <code>vstorage</code>).
|
||||
<code>iscsi</code>, <code>iscsi-direct</code>, <code>zfs</code>,
|
||||
<code>vstorage</code>).
|
||||
May be repeated multiple times depending on backend driver. Contains
|
||||
a required attribute <code>path</code> which is either the fully
|
||||
qualified path to the block device node or for <code>iscsi</code>
|
||||
the iSCSI Qualified Name (IQN).
|
||||
or <code>iscsi-direct</code> the iSCSI Qualified Name (IQN).
|
||||
<span class="since">Since 0.4.1</span>
|
||||
<p>An optional attribute <code>part_separator</code> for each
|
||||
<code>path</code> may be supplied. Valid values for the attribute
|
||||
@@ -334,6 +346,7 @@
|
||||
<dt><code>host</code></dt>
|
||||
<dd>Provides the source for pools backed by storage from a
|
||||
remote server (pool types <code>netfs</code>, <code>iscsi</code>,
|
||||
<code>iscsi-direct</code>,
|
||||
<code>rbd</code>, <code>sheepdog</code>, <code>gluster</code>). Will be
|
||||
used in combination with a <code>directory</code>
|
||||
or <code>device</code> element. Contains an attribute <code>name</code>
|
||||
@@ -348,11 +361,19 @@
|
||||
server. See the <a href="storage.html">storage driver page</a> for
|
||||
any restrictions for specific storage backends.
|
||||
<span class="since">Since 0.4.1</span></dd>
|
||||
<dt><code>initiator</code></dt>
|
||||
<dd>Required by the <code>iscsi-direct</code> pool in order to provide
|
||||
the iSCSI Qualified Name (IQN) to communicate with the pool's
|
||||
<code>device</code> target IQN. There is one sub-element
|
||||
<code>iqn</code> with the <code>name</code> attribute to describe
|
||||
the IQN for the initiator.
|
||||
<span class="since">Since 4.7.0</span></dd>
|
||||
<dt><code>auth</code></dt>
|
||||
<dd>If present, the <code>auth</code> element provides the
|
||||
authentication credentials needed to access the source by the
|
||||
setting of the <code>type</code> attribute (pool
|
||||
types <code>iscsi</code>, <code>rbd</code>). The <code>type</code>
|
||||
types <code>iscsi</code>, <code>iscsi-direct</code>, <code>rbd</code>).
|
||||
The <code>type</code>
|
||||
must be either "chap" or "ceph". Use "ceph" for
|
||||
Ceph RBD (Rados Block Device) network sources and use "iscsi" for CHAP
|
||||
(Challenge-Handshake Authentication Protocol) iSCSI
|
||||
@@ -386,6 +407,12 @@
|
||||
LVM metadata type. All drivers are required to have a default
|
||||
value for this, so it is optional. <span class="since">Since 0.4.1</span></dd>
|
||||
|
||||
<dt><code>protocol</code></dt>
|
||||
<dd>For a <code>netfs</code> Storage Pool provide a mechanism to
|
||||
define which NFS protocol version number will be used to contact
|
||||
the server's NFS service. The attribute <code>ver</code> accepts
|
||||
an unsigned integer as the version number to use.
|
||||
<span class="since">Since 5.1.0</span></dd>
|
||||
<dt><code>vendor</code></dt>
|
||||
<dd>Provides optional information about the vendor of the
|
||||
storage device. This contains a single
|
||||
@@ -451,8 +478,8 @@
|
||||
The <code>owner</code> element contains the numeric user ID.
|
||||
The <code>group</code> element contains the numeric group ID.
|
||||
If <code>owner</code> or <code>group</code> aren't specified when
|
||||
creating a directory, the values are inherited from the parent
|
||||
directory. The <code>label</code> element contains the MAC (eg SELinux)
|
||||
creating a directory, the UID and GID of the libvirtd process are used.
|
||||
The <code>label</code> element contains the MAC (eg SELinux)
|
||||
label string.
|
||||
<span class="since">Since 0.4.1</span>
|
||||
For running directory or filesystem based pools, these fields
|
||||
@@ -481,6 +508,145 @@
|
||||
device, measured in bytes. <span class="since">Since 0.4.1</span>
|
||||
</p>
|
||||
|
||||
<h3><a id="StoragePoolRefresh">Refresh overrides</a></h3>
|
||||
|
||||
<p>
|
||||
The optional <code>refresh</code> element can control how the pool and
|
||||
associated volumes are refreshed (pool type <code>rbd</code>). The
|
||||
<code>allocation</code> attribute of the <code>volume</code> child element
|
||||
controls the method used for computing the allocation of a volume. The
|
||||
valid attribute values are <code>default</code> to compute the actual
|
||||
usage or <code>capacity</code> to use the logical capacity for cases where
|
||||
computing the allocation is too expensive. The following XML snippet
|
||||
shows the syntax:
|
||||
<pre>
|
||||
<pool type="rbd">
|
||||
<name>myrbdpool</name>
|
||||
...
|
||||
<source/>
|
||||
...
|
||||
<refresh>
|
||||
<volume allocation='capacity'/>
|
||||
</refresh>
|
||||
...
|
||||
</pool>
|
||||
</pre>
|
||||
<span class="since">Since 5.2.0</span>
|
||||
</p>
|
||||
|
||||
<h3><a id="StoragePoolNamespaces">Storage Pool Namespaces</a></h3>
|
||||
|
||||
<p>
|
||||
Usage of Storage Pool Namespaces provides a mechanism to provide
|
||||
pool type specific data in a free form or arbitrary manner via
|
||||
XML syntax targeted solely for the needs of the specific pool type
|
||||
which is not otherwise supported in standard XML. For the "fs" and
|
||||
"netfs" pool types this provides a mechanism to provide additional
|
||||
mount options on the command line. For the "rbd" pool this provides
|
||||
a mechanism to override default settings for RBD configuration options.
|
||||
</p>
|
||||
<p>
|
||||
Usage of namespaces comes with no support guarantees. It is intended
|
||||
for developers testing out a concept prior to requesting an explicitly
|
||||
supported XML option in libvirt, and thus should never be used in
|
||||
production.
|
||||
</p>
|
||||
<dl>
|
||||
<dt><code>fs:mount_opts</code></dt>
|
||||
<dd>Provides an XML namespace mechanism to optionally utilize
|
||||
specifically named options for the mount command via the "-o"
|
||||
option for the <code>fs</code> or <code>netfs</code> type storage
|
||||
pools. In order to designate that the Storage Pool will be using
|
||||
the mechanism, the <code>pool</code> element must be modified to
|
||||
provide the XML namespace attribute syntax as follows:
|
||||
|
||||
<p>
|
||||
xmlns:fs='http://libvirt.org/schemas/storagepool/fs/1.0'
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The <code>fs:mount_opts</code> defines the mount options by
|
||||
specifying multiple <code>fs:option</code> subelements with
|
||||
the attribute <code>name</code> specifying the mount option to
|
||||
be added. The value of the named option is not checked since
|
||||
it's possible options don't exist on all distributions. It is
|
||||
expected that proper and valid options will be supplied for the
|
||||
target host.
|
||||
</p>
|
||||
|
||||
The following XML snippet shows the syntax required in order to
|
||||
utilize for a netfs pool:
|
||||
<pre>
|
||||
<pool type="netfs" xmlns:fs='http://libvirt.org/schemas/storagepool/fs/1.0'>
|
||||
<name>nfsimages</name>
|
||||
...
|
||||
<source>
|
||||
...
|
||||
</source>
|
||||
...
|
||||
<target>
|
||||
...
|
||||
</target>
|
||||
<fs:mount_opts>
|
||||
<fs:option name='sync'/>
|
||||
<fs:option name='lazytime'/>
|
||||
</fs:mount_opts>
|
||||
</pool>
|
||||
...</pre>
|
||||
|
||||
<span class="since">Since 5.1.0.</span></dd>
|
||||
|
||||
<dt><code>rbd:config_opts</code></dt>
|
||||
<dd>Provides an XML namespace mechanism to optionally utilize
|
||||
specifically named options for the RBD configuration options
|
||||
via the rados_conf_set API for the <code>rbd</code> type
|
||||
storage pools. In order to designate that the Storage Pool
|
||||
will be using the mechanism, the <code>pool</code> element
|
||||
must be modified to provide the XML namespace attribute
|
||||
syntax as follows:
|
||||
|
||||
<p>
|
||||
xmlns:rbd='http://libvirt.org/schemas/storagepool/rbd/1.0'
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The <code>rbd:config_opts</code> defines the configuration options
|
||||
by specifying multiple <code>rbd:option</code> subelements with
|
||||
the attribute <code>name</code> specifying the configuration option
|
||||
to be added and <code>value</code> specifying the configuration
|
||||
option value. The name and value for each option is only checked
|
||||
to be not empty. The name and value provided are not checked since
|
||||
it's possible options don't exist on all distributions. It is
|
||||
expected that proper and valid options will be supplied for the
|
||||
target host.
|
||||
</p>
|
||||
|
||||
The following XML snippet shows the syntax required in order to
|
||||
utilize
|
||||
<pre>
|
||||
<pool type="rbd" xmlns:rbd='http://libvirt.org/schemas/storagepool/rbd/1.0'>
|
||||
<name>myrbdpool</name>
|
||||
...
|
||||
<source>
|
||||
...
|
||||
</source>
|
||||
...
|
||||
<target>
|
||||
...
|
||||
</target>
|
||||
...
|
||||
<rbd:config_opts>
|
||||
<rbd:option name='client_mount_timeout' value='45'/>
|
||||
<rbd:option name='rados_mon_op_timeout' value='20'/>
|
||||
<rbd:option name='rados_osd_op_timeout' value='10'/>
|
||||
</rbd:config_opts>
|
||||
</pool>
|
||||
</pre>
|
||||
|
||||
<span class="since">Since 5.1.0.</span></dd>
|
||||
|
||||
</dl>
|
||||
|
||||
<h2><a id="StorageVol">Storage volume XML</a></h2>
|
||||
<p>
|
||||
A storage volume will generally be either a file or a device
|
||||
@@ -636,8 +802,8 @@
|
||||
The <code>owner</code> element contains the numeric user ID.
|
||||
The <code>group</code> element contains the numeric group ID.
|
||||
If <code>owner</code> or <code>group</code> aren't specified when
|
||||
creating a supported volume, the values are inherited from the parent
|
||||
directory. The <code>label</code> element contains the MAC (eg SELinux)
|
||||
creating a supported volume, the UID and GID of the libvirtd process
|
||||
are used. The <code>label</code> element contains the MAC (eg SELinux)
|
||||
label string.
|
||||
For existing directory or filesystem based volumes, these fields
|
||||
will be filled with the values used by the existing file.
|
||||
|
101
docs/formatstoragecaps.html.in
Normal file
101
docs/formatstoragecaps.html.in
Normal file
@@ -0,0 +1,101 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<body>
|
||||
<h1>Storage Pool Capabilities XML format</h1>
|
||||
|
||||
<ul id="toc"></ul>
|
||||
|
||||
<h2><a id="Overview">Overview</a></h2>
|
||||
|
||||
<p>The Storage Pool Capabilities XML will provide the information
|
||||
to determine what types of Storage Pools exist, whether the pool is
|
||||
supported, and if relevant the source format types, the required
|
||||
source elements, and the target volume format types. </p>
|
||||
|
||||
<p>The Storage Pool Capabilities XML provides more information than the
|
||||
<a href="/html/libvirt-libvirt-host.html#virConnectGetCapabilities">
|
||||
<code>virConnectGetCapabilities</code>
|
||||
</a>
|
||||
which only provides an enumerated list of supported pool types.</p>
|
||||
|
||||
<h2><a id="elements">Element and attribute overview</a></h2>
|
||||
|
||||
<p>A query interface was added to the virConnect API's to retrieve the
|
||||
XML listing of the set of Storage Pool Capabilities
|
||||
(<span class="since">Since 5.2.0</span>):</p>
|
||||
|
||||
<pre>
|
||||
<a href="/html/libvirt-libvirt-domain.html#virConnectGetStoragePoolCapabilities">virConnectGetStoragePoolCapabilities</a>
|
||||
</pre>
|
||||
|
||||
<p>The root element that emulator capability XML document starts with is
|
||||
named <code>storagepoolCapabilities</code>. There will be any number of
|
||||
<code>pool</code> child elements with two attributes <code>type</code>
|
||||
and <code>supported</code>. Each <code>pool</code> element may have
|
||||
a <code>poolOptions</code> or <code>volOptions</code> subelements to
|
||||
describe the available features. Sample XML output is:</p>
|
||||
|
||||
<pre>
|
||||
<storagepoolCapabilities>
|
||||
<pool type='dir' supported='yes'>
|
||||
<volOptions>
|
||||
<defaultFormat type='raw'</>
|
||||
<enum name='targetFormatType'>
|
||||
<value>none</value>
|
||||
<value>raw</value>
|
||||
...
|
||||
</enum>
|
||||
</volOptions>
|
||||
</pool>
|
||||
<pool type='fs' supported='yes'>
|
||||
<poolOptions>
|
||||
<defaultFormat type='auto'</>
|
||||
<enum name='sourceFormatType'>
|
||||
<value>auto</value>
|
||||
<value>ext2</value>
|
||||
...
|
||||
</enum>
|
||||
</poolOptions>
|
||||
<volOptions>
|
||||
<defaultFormat type='raw'</>
|
||||
<enum name='targetFormatType'>
|
||||
<value>none</value>
|
||||
<value>raw</value>
|
||||
...
|
||||
</enum>
|
||||
</volOptions>
|
||||
</pool>
|
||||
...
|
||||
</storagepoolCapabilities>
|
||||
</pre>
|
||||
|
||||
<p>The following section decribes subelements of the
|
||||
<code>poolOptions</code> and <code>volOptions</code> subelements </p>:
|
||||
|
||||
<dl>
|
||||
<dt><code>defaultFormat</code></dt>
|
||||
<dd>For the <code>poolOptions</code>, the <code>type</code> attribute
|
||||
describes the default format name used for the pool source. For the
|
||||
<code>volOptions</code>, the <code>type</code> attribute describes
|
||||
the default volume name used for each volume.
|
||||
</dd>
|
||||
<dl>
|
||||
<dt><code>enum</code></dt>
|
||||
<dd>Each enum uses a name from the list below with any number of
|
||||
<code>value</code> value subelements describing the valid values.
|
||||
<dl>
|
||||
<dt><code>sourceFormatType</code></dt>
|
||||
<dd>Lists all the possible <code>poolOptions</code> source
|
||||
pool format types.
|
||||
</dd>
|
||||
<dt><code>targetFormatType</code></dt>
|
||||
<dd>Lists all the possible <code>volOptions</code> target volume
|
||||
format types.
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
</dl>
|
||||
</body>
|
||||
</html>
|
@@ -155,7 +155,7 @@
|
||||
also implicitly stating that they have the legal right to make the
|
||||
contribution, if doing so on behalf of a broader organization /
|
||||
company. Most of the project's code is distributed under the GNU
|
||||
Lesser General Public License, version 2 or later. Details of the
|
||||
Lesser General Public License, version 2.1 or later. Details of the
|
||||
exact license under which contributions will be presumed to be
|
||||
covered are found in the source repositories, or website in question.
|
||||
</p>
|
||||
|
@@ -1412,5 +1412,34 @@ int foo()
|
||||
in the same way, but still make sure they get reviewed if non-trivial.
|
||||
</li>
|
||||
</ul>
|
||||
<h2><a id="coverage">Code coverage reports</a></h2>
|
||||
|
||||
<p>
|
||||
Code coverage HTML reports can be generated with:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
make coverage
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Reports will be generated in the <code>cov/</code> directory. Point a
|
||||
web browser at <code>cov/index.html</code> for the full report.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The <code>make coverage</code> target is provided by <code>gnulib</code>.
|
||||
It is a convenience helper for calling the following 3 targets in order.
|
||||
It may be useful to occasionally call these directly.
|
||||
|
||||
<ul>
|
||||
<li><code>make init-coverage</code>: run <code>make clean</code> and
|
||||
remove all code coverage counter files (*.gcno, etc.)</li>
|
||||
<li><code>make build-coverage</code>: run <code>make</code> and
|
||||
<code>make check</code> with <code>CFLAGS</code> filled in with
|
||||
necessary coverage flags</li>
|
||||
<li><code>make gen-coverage</code>: generate the HTML report</li>
|
||||
</ul>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -66,6 +66,7 @@
|
||||
<a href="formatstorageencryption.html">storage encryption</a>,
|
||||
<a href="formatcaps.html">capabilities</a>,
|
||||
<a href="formatdomaincaps.html">domain capabilities</a>,
|
||||
<a href="formatstoragecaps.html">storage pool capabilities</a>,
|
||||
<a href="formatnode.html">node devices</a>,
|
||||
<a href="formatsecret.html">secrets</a>,
|
||||
<a href="formatsnapshot.html">snapshots</a></dd>
|
||||
|
@@ -426,7 +426,7 @@ dprintf(logfd, "%s: ", timestamp);
|
||||
VIR_FREE(timestamp);
|
||||
virCommandWriteArgLog(cmd, logfd);
|
||||
|
||||
string = virCommandToString(cmd);
|
||||
string = virCommandToString(cmd, false);
|
||||
if (string)
|
||||
VIR_DEBUG("about to run %s", string);
|
||||
VIR_FREE(string);
|
||||
|
@@ -100,14 +100,15 @@
|
||||
margin-right: auto;
|
||||
padding: 0px;
|
||||
padding-bottom: 1em;
|
||||
max-width: 60em;
|
||||
max-width: 95%;
|
||||
width: 70em;
|
||||
}
|
||||
|
||||
body.index #content,
|
||||
body.docs #content,
|
||||
body.hvsupport #content
|
||||
{
|
||||
max-width: inherit;
|
||||
width: inherit;
|
||||
}
|
||||
|
||||
pre {
|
||||
@@ -393,6 +394,7 @@ table.acl {
|
||||
|
||||
table.acl tr, table.acl td {
|
||||
padding: 0.3em;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
table.acl thead {
|
||||
@@ -536,3 +538,7 @@ dl.mail dt a:hover {
|
||||
color: rgb(255, 230, 0);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
td.enumvalue {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
@@ -288,6 +288,24 @@
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="enumvalue">
|
||||
<xsl:param name="value" select="@value"/>
|
||||
<xsl:param name="valuehex" select="@value_hex"/>
|
||||
<xsl:param name="valuebitshift" select="@value_bitshift"/>
|
||||
<xsl:value-of select="@value"/>
|
||||
<xsl:if test="$valuehex != '' or $valuebitshift != ''">
|
||||
<xsl:text> (</xsl:text>
|
||||
<xsl:if test="$valuehex != ''">
|
||||
<xsl:value-of select="@value_hex"/>
|
||||
</xsl:if>
|
||||
<xsl:if test="$valuebitshift != ''">
|
||||
<xsl:text>; 1 << </xsl:text>
|
||||
<xsl:value-of select="@value_bitshift"/>
|
||||
</xsl:if>
|
||||
<xsl:text>)</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="typedef[@type = 'enum']">
|
||||
<xsl:variable name="name" select="string(@name)"/>
|
||||
<h3><a name="{$name}"><code><xsl:value-of select="$name"/></code></a></h3>
|
||||
@@ -306,7 +324,7 @@
|
||||
<td><xsl:text> = </xsl:text></td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="@info != ''">
|
||||
<td><xsl:value-of select="@value"/></td>
|
||||
<td class="enumvalue"><xsl:call-template name="enumvalue"/></td>
|
||||
<td>
|
||||
<div class="comment">
|
||||
<xsl:call-template name="dumptext">
|
||||
@@ -316,7 +334,7 @@
|
||||
</td>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<td colspan="2"><xsl:value-of select="@value"/></td>
|
||||
<td colspan="2" class="enumvalue"><xsl:call-template name="enumvalue"/></td>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</tr>
|
||||
|
863
docs/news.xml
863
docs/news.xml
@@ -33,7 +33,823 @@
|
||||
-->
|
||||
|
||||
<libvirt>
|
||||
<release version="v4.7.0" date="unreleased">
|
||||
<release version="v5.2.0" date="2019-04-03">
|
||||
<section title="New features">
|
||||
<change>
|
||||
<summary>
|
||||
Add Storage Pool Capabilities output
|
||||
</summary>
|
||||
<description>
|
||||
Add support to list an enumerated list of supported Storage
|
||||
Pools via the virConnectGetCapabilities API when connected
|
||||
via a Storage Driver. Add support to get a more detailed
|
||||
list XML output Storage Pool Capabilities vis the
|
||||
virConnectGetStoragePoolCapabilites API.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Support virtio-{non-}transitional device models
|
||||
</summary>
|
||||
<description>
|
||||
<code>virtio-transitional</code> and
|
||||
<code>virtio-non-transitional</code> <code>model</code> values
|
||||
were added to the QEMU driver for the following devices:
|
||||
<code>disk</code>, <code>interface</code>, <code>filesystem</code>,
|
||||
<code>rng</code>, <code>vsock</code>, <code>memballoon</code>,
|
||||
<code>controller</code> type <code>scsi</code>,
|
||||
<code>controller</code> type <code>virtio-serial</code>,
|
||||
<code>input</code> bus <code>virtio</code>
|
||||
type <code>passthrough</code>,
|
||||
<code>hostdev</code> type <code>scsi_host</code>. These new
|
||||
models can be used to give fine grained control over what
|
||||
virtio device version is presented to the guest.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Enable firmware autoselection
|
||||
</summary>
|
||||
<description>
|
||||
Libvirt allows users to provide loader path for some time now.
|
||||
However, this puts some burden on users because they need to
|
||||
know what firmware meets their requirements. Now that QEMU
|
||||
ships firmware description files this burden can be moved onto
|
||||
libvirt. It is as easy as setting the <code>firmware</code>
|
||||
attribute in the <code>os</code> element (accepted values are
|
||||
<code>bios</code> and <code>efi</code>). Moreover, libvirt
|
||||
automatically enables domain features needed for firmware it
|
||||
chooses.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
snapshots: Add support for topological listings
|
||||
</summary>
|
||||
<description>
|
||||
A new flag VIR_DOMAIN_SNAPSHOT_LIST_TOPOLOGICAL is available
|
||||
for the various snapshot listing APIs such as
|
||||
virDomainListAllSnapshots(). For drivers that support the
|
||||
flag, the listed snapshots are guaranteed to be sorted such
|
||||
that parents occur before children.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
Xen: Add support for max grant frames setting
|
||||
</summary>
|
||||
<description>
|
||||
Add support for Xen's max_grant_frames setting by adding a
|
||||
new xenbus controller type with a maxGrantFrames attribute.
|
||||
E.g. <code><controller type='xenbus' maxGrantFrames='64'/></code>
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Add support for parallel migration
|
||||
</summary>
|
||||
<description>
|
||||
With QEMU 4.0.0 libvirt can enable parallel migration which causes
|
||||
the memory pages to be processed in parallel by several threads and
|
||||
sent to the destination host using several connections at the same
|
||||
time. This may increase migration speed in case a single thread is
|
||||
unable to saturate the network link.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Removed features">
|
||||
<change>
|
||||
<summary>
|
||||
Drop support for Upstart and "Red Hat" init scripts
|
||||
</summary>
|
||||
<description>
|
||||
Not a single one of the platforms we target still uses Upstart,
|
||||
and the Upstart project itself has been abandoned for several years
|
||||
now; the same is true for the "Red Hat" (really System V) init
|
||||
scripts, since RHEL 7 and later releases use systemd.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Improvements">
|
||||
<change>
|
||||
<summary>
|
||||
Report class information for PCI node device capability.
|
||||
</summary>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
Split setup of IPv4 and IPv6 top level chain
|
||||
</summary>
|
||||
<description>
|
||||
The requirement resulting from private chains improvement done
|
||||
in <code>v5.1.0</code> was refined so that only tables from
|
||||
corresponding IP version are required. This means that if a
|
||||
network doesn't have <code>IPv6</code> enabled then those
|
||||
tables are not required.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
Don't default to building the QEMU driver
|
||||
</summary>
|
||||
<description>
|
||||
Historically, the QEMU driver has been special in that it was
|
||||
enabled by default, with the option to explicitly opt-out of it;
|
||||
starting now, we're enabling it opportunistically if we detect that
|
||||
all requirements are available, just like we do with other drivers.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Bug fixes">
|
||||
<change>
|
||||
<summary>
|
||||
virt-host-validate: Fix IOMMU check on s390x
|
||||
</summary>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Allow creating pSeries guests with graphics and no USB mouse
|
||||
</summary>
|
||||
<description>
|
||||
It's now possible to prevent libvirt from automatically adding a
|
||||
USB mouse to pSeries guests by including a USB tablet in the input
|
||||
XML: doing so is desiderable as using a tablet results in a much
|
||||
better user experience when working with GUIs.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Set $HOME and XGD variables for qemu:///system guests
|
||||
</summary>
|
||||
<description>
|
||||
This avoids files being accidentally created under <code>/</code> or
|
||||
the guests not being able to start because they lack the necessary
|
||||
permissions to write to that location.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
</release>
|
||||
<release version="v5.1.0" date="2019-03-04">
|
||||
<section title="New features">
|
||||
<change>
|
||||
<summary>
|
||||
bhyve: Add support for additional command-line arguments
|
||||
</summary>
|
||||
<description>
|
||||
The bhyve driver now supports passing additional command-line
|
||||
arguments to the bhyve process using the new
|
||||
<code><bhyve:commandline></code> element in domain
|
||||
configuration.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
network: Support setting a firewalld "zone" for virtual network bridges
|
||||
</summary>
|
||||
<description>
|
||||
All libvirt virtual networks with bridges managed by libvirt
|
||||
(i.e. those with forward mode of "nat", "route", "open", or
|
||||
no forward mode) will now be placed in a special firewalld
|
||||
zone called "libvirt" by default. The zone of any network
|
||||
bridge can be changed using the <code>zone</code> attribute
|
||||
of the network's <code>bridge</code> element.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
bhyve: Support for ignoring unknown MSRs reads and writes
|
||||
</summary>
|
||||
<description>
|
||||
A new <features> element <msrs unknown='ignore'/> was
|
||||
introduced and the bhyve driver supports it to control unknown
|
||||
Model Specific Registers (MSRs) reads and writes.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Add support for encrypted VNC TLS keys
|
||||
</summary>
|
||||
<description>
|
||||
Use the password stored in the secret driver under the uuid
|
||||
specified by the <code>vnc_tls_x509_secret_uuid</code> option
|
||||
in qemu.conf.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
Add storage pool namespace options
|
||||
</summary>
|
||||
<description>
|
||||
Allow for adjustment of RBD configuration options via Storage
|
||||
Pool XML Namespace adjustments.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Add support for setting post-copy migration bandwidth
|
||||
</summary>
|
||||
<description>
|
||||
Users can now limit the bandwidth of post-copy migration, e.g.
|
||||
via <code>virsh migrate --postcopy-bandwidth</code>.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Improvements">
|
||||
<change>
|
||||
<summary>
|
||||
Create private chains for virtual network firewall rules
|
||||
</summary>
|
||||
<description>
|
||||
Historically firewall rules for virtual networks were added
|
||||
straight into the base chains. This works but has a number of
|
||||
bugs and design limitations. To address them, libvirt now puts
|
||||
firewall rules into its own chains. Note that with this change the
|
||||
<code>filter</code>, <code>nat</code> and <code>mangle</code> tables
|
||||
are required for both <code>IPv4</code> and <code>IPv6</code>.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
Detect CEPH and GPFS as shared FS
|
||||
</summary>
|
||||
<description>
|
||||
When starting a migration libvirt performs some sanity checks
|
||||
to make sure domain will be able to run on the destination.
|
||||
One of the requirements is that the disk has to either be
|
||||
migrated too or be accessible from a network filesystem. CEPH
|
||||
and GPFS weren't detected as a network filesystem.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
Advertise network MTU via DHCP when specified
|
||||
</summary>
|
||||
<description>
|
||||
If network MTU is set and the network has DHCP enabled,
|
||||
advertise the MTU in DHCP transaction too so that clients can
|
||||
adjust their link accordingly.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Allocate memory at the configured NUMA nodes from start
|
||||
</summary>
|
||||
<description>
|
||||
Libvirt used to just start QEMU, let it allocate memory for
|
||||
the guest, and then use CGroups to move the memory to
|
||||
configured NUMA nodes. This is suboptimal as huge chunks of
|
||||
memory have to be moved. Moreover, this relies on ability to
|
||||
move memory later which is not always true. A change was made
|
||||
to set process affinity correctly from the start so that memory
|
||||
is allocated on the configured nodes from the beginning.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
Support for newer Wireshark
|
||||
</summary>
|
||||
<description>
|
||||
Adapt libvirt to use the more recent release requiring a
|
||||
source build configuration of libvirt
|
||||
<code>--with-wireshark</code> to upgrade to the more recent
|
||||
version.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
Batch mode virsh and virt-admin parsing improvements
|
||||
</summary>
|
||||
<description>
|
||||
When parsing a single-argument command_string in batch mode,
|
||||
virsh and virt-admin now permit newlines in addition to
|
||||
semicolons for splitting commands, and backslash-newline for
|
||||
splitting long lines, to be more like shell parsing.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Bug fixes">
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Use CAP_DAC_OVERRIDE during QEMU capabilities probing
|
||||
</summary>
|
||||
<description>
|
||||
By default, libvirt runs the QEMU process as <code>qemu:qemu</code>
|
||||
which could cause issues during probing as some features like AMD SEV
|
||||
might be inaccessible to QEMU because of file system permissions.
|
||||
Therefore, <code>CAP_DAC_OVERRIDE</code> is granted to overcome these
|
||||
for the purposes of probing.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
storage: Add default mount options for fs/netfs storage pools
|
||||
</summary>
|
||||
<description>
|
||||
Altered the command line generation for fs/netfs storage pools to
|
||||
add some default options. For Linux based systems, the options
|
||||
added are "nodev, nosuid, noexec". For FreeBSD based systems,
|
||||
the options added are "nosuid, noexec".
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Allow use of PCI for RISC-V guests
|
||||
</summary>
|
||||
<description>
|
||||
This works with QEMU 4.0.0+ only and is opt-in at the moment, since
|
||||
it requires users to manually assign PCI addresses, but is otherwise
|
||||
fully functional.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
network: Fix virtual networks on systems using firewalld+nftables
|
||||
</summary>
|
||||
<description>
|
||||
Because of the transitional state of firewalld's new support
|
||||
for nftables, not all iptables features required by libvirt
|
||||
are yet available, so libvirt must continue to use iptables
|
||||
for its own packet filtering rules even when the firewalld
|
||||
backend is set to use nftables. However, due to the way
|
||||
iptables support is implemented in kernels using nftables
|
||||
(iptables rules are converted to nftables rules and
|
||||
processed in a separate hook from the native nftables
|
||||
rules), guest networking was broken on hosts with firewalld
|
||||
configured to use nftables as the backend. This has been
|
||||
fixed by putting libvirt-managed bridges in their own
|
||||
firewalld zone, so that guest traffic can be forwarded
|
||||
beyond the host and host services can be exposed to guests
|
||||
on the virtual network without opening up those same
|
||||
services to the rest of the physical network. This means
|
||||
that host access from virtual machines is no longer
|
||||
controlled by the firewalld default zone (usually "public"),
|
||||
but rather by the new firewalld zone called "libvirt"
|
||||
(unless configured otherwise using the new zone
|
||||
attribute of the network bridge element).
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Fix i6300esb watchdog hotplug on Q35
|
||||
</summary>
|
||||
<description>
|
||||
Ensure that libvirt allocates a PCI address for the device so
|
||||
that QEMU did not default to an address that would not allow
|
||||
for device hotplug.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
lxc: Don't reboot host on virDomainReboot
|
||||
</summary>
|
||||
<description>
|
||||
If the container is really a simple one (init is just bash and
|
||||
the whole root is passed through) then virDomainReboot and
|
||||
virDomainShutdown would reboot or shutdown the host. The
|
||||
solution is to use different method to reboot or shutdown the
|
||||
container in that case (e.g. signal).
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
rpc: Various stream fixes
|
||||
</summary>
|
||||
<description>
|
||||
One particular race was fixed, one locking problem and error
|
||||
reporting from streams was made better.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Fix guestfwd hotplug/hotunplug
|
||||
</summary>
|
||||
<description>
|
||||
Fixed the generation of the guestfwd hotplug/unplug command
|
||||
sent to QEMU to match the syntax used when creating the
|
||||
initial command line.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Forbid CDROMs on virtio bus
|
||||
</summary>
|
||||
<description>
|
||||
Attempting to create an empty virtio-blk drive or attempting
|
||||
to eject it results into an error. Forbid configurations
|
||||
where users would attempt to use CDROMs in virtio bus.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Use 'raw' for 'volume' disks without format
|
||||
</summary>
|
||||
<description>
|
||||
Storage pools might want to specify format of the image when
|
||||
translating the volume thus libvirt can't add any default
|
||||
format when parsing the XML. Add an explicit format when
|
||||
starting the VM and format is not present neither by user
|
||||
specifying it nor by the storage pool translation function.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Assume 'raw' default storage format also for network storage
|
||||
</summary>
|
||||
<description>
|
||||
Post parse callback adds the 'raw' type only for local files.
|
||||
Remote files can also have backing store (even local) so we
|
||||
should do this also for network backed storage.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Fix block job progress reporting and advocate for READY event
|
||||
</summary>
|
||||
<description>
|
||||
In some cases QEMU can get to 100% and still not reach the
|
||||
synchronised phase. Initiating a pivot in that case will fail.
|
||||
Therefore it is strongly advised to wait for
|
||||
<code>VIR_DOMAIN_BLOCK_JOB_READY</code> event which does not
|
||||
suffer from this problem.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Don't format image properties for empty drive
|
||||
</summary>
|
||||
<description>
|
||||
If a <code>-drive</code> has no image, then formatting
|
||||
attributes such as cache, readonly, etc. would cause errors to
|
||||
be reported from QEMU. This was fixed by not supplying the
|
||||
attributes for devices without an image.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
External snapshot metadata redefinition is fixed
|
||||
</summary>
|
||||
<description>
|
||||
Attempting to use VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE to
|
||||
reinstate the metadata describing an external snapshot
|
||||
created earlier for an offline domain no longer fails.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
</release>
|
||||
<release version="v5.0.0" date="2019-01-15">
|
||||
<section title="New features">
|
||||
<change>
|
||||
<summary>
|
||||
Xen: Add support for openvswitch
|
||||
</summary>
|
||||
<description>
|
||||
The libxl driver now supports virtual interfaces that connect to
|
||||
an openvswitch bridge, including interfaces with VLAN tagging and
|
||||
trunking configuration.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Report whether KVM nesting is available
|
||||
</summary>
|
||||
<description>
|
||||
Running nested KVM guests requires specific configuration steps to
|
||||
be performed on the host; libvirt will now report in the host
|
||||
capabilities whether KVM nesting support is available.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Removed features">
|
||||
<change>
|
||||
<summary>
|
||||
Drop UML driver
|
||||
</summary>
|
||||
<description>
|
||||
The UML driver was unmaintained and not tested for
|
||||
quite some time now. Worse, there is a bug that causes
|
||||
it to deadlock on some very basic operations (e.g.
|
||||
dumping domain XML). These facts make us believe no one
|
||||
uses it.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Improvements">
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Add support for ARMv6l guests
|
||||
</summary>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
Support more NVDIMM configuration options
|
||||
</summary>
|
||||
<description>
|
||||
Introduce more configuration options. For the source element, add
|
||||
the 'alignsize' and 'pmem' subelements. For the target element, add
|
||||
the 'readonly' subelement.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
cpu: Add support for "stibp" x86_64 feature
|
||||
</summary>
|
||||
<description>
|
||||
Add cpu flag stibp (Single Thread Indirect Branch Predictors) to
|
||||
prevent indirect branch predictions from being controlled by the
|
||||
sibling Hyperthread.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
libxl: Handle external domain destroy
|
||||
</summary>
|
||||
<description>
|
||||
Historically, if a domain was destroyed using <code>xl</code>
|
||||
rather than through libvirt APIs, libvirt would not be aware of
|
||||
the fact and keep considering it as running. This is no longer the
|
||||
case.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
Start selecting the first available DRI device for OpenGL operations
|
||||
</summary>
|
||||
<description>
|
||||
If OpenGL support is needed (either with SPICE gl enabled or with
|
||||
egl-headless), libvirt is now able to pick the first available DRI
|
||||
device for the job. At the same time, this improvement is also a
|
||||
bugfix as it prevents permission-related issues with regards to our
|
||||
mount namespaces and the default DRI render node's permissions which
|
||||
would normally prevent QEMU from accessing such a device.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Add support for postcopy-requests migration statistics
|
||||
</summary>
|
||||
<description>
|
||||
The <code>virDomainJobInfo</code> can get number page requests
|
||||
received from the destination host during post-copy migration.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Bug fixes">
|
||||
<change>
|
||||
<summary>
|
||||
lxc: Don't forbid interfaces with type=direct
|
||||
</summary>
|
||||
<description>
|
||||
Such interfaces are supported by lxc and should be allowed.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Fully clean up RNG devices on detach
|
||||
</summary>
|
||||
<description>
|
||||
Some RNG device types, such as those using EGD, might need extra
|
||||
clean up on the host in addition to removing the guest-side device.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
</release>
|
||||
<release version="v4.10.0" date="2018-12-03">
|
||||
<section title="New features">
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Add Hyper-V PV IPI and Enlightened VMCS support
|
||||
</summary>
|
||||
<description>
|
||||
The QEMU driver now has support for Hyper-V PV IPI and Enlightened VMCS
|
||||
for Windows and Hyper-V guests.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Added support for PCI devices on S390
|
||||
</summary>
|
||||
<description>
|
||||
PCI addresses can now include the new zpci element which contains
|
||||
uid (user-defined identifier) and fid (PCI function identifier)
|
||||
attributes and makes the corresponding devices usable by S390
|
||||
guests.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
Support changing IOThread polling parameters for a live guest
|
||||
</summary>
|
||||
<description>
|
||||
Introduced virDomainSetIOThreadParams which allows dynamically
|
||||
setting the IOThread polling parameters used by QEMU to manage
|
||||
the thread polling interval and the algorithm for growth or
|
||||
shrink of the polling time. The values only affect a running
|
||||
guest with IOThreads. The guest's IOThread polling values can
|
||||
be viewed via the domain statistics.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
Xen: Add support for PVH
|
||||
</summary>
|
||||
<description>
|
||||
The libxl driver now supports Xen's PVH virtual machine type.
|
||||
PVH machines are enabled with the new "xenpvh" OS type, e.g.
|
||||
<code><os><type>xenpvh</type></os></code>
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Added support for CMT (Cache Monitoring Technology)
|
||||
</summary>
|
||||
<description>
|
||||
Introduced cache monitoring using the <code>monitor</code>
|
||||
element in <code>cachetune</code> for vCPU threads. Added
|
||||
interfaces to get and display the cache utilization statistics
|
||||
through the command 'virsh domstats' via the
|
||||
virConnectGetAllDomainStats API.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Add support for nested HV for pSeries guests
|
||||
</summary>
|
||||
<description>
|
||||
Nested HV support makes it possible to run nested (L2) guests
|
||||
with minimal performance penalty when compared to regular (L1)
|
||||
guests on ppc64 hardware.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Improvements">
|
||||
</section>
|
||||
<section title="Bug fixes">
|
||||
<change>
|
||||
<summary>
|
||||
Xen: Handle soft reset shutdown event
|
||||
</summary>
|
||||
<description>
|
||||
The pvops Linux kernel uses soft reset to handle the crash
|
||||
machine operation. The libxl driver now supports the soft
|
||||
reset shutdown event, allowing proper crash handling of
|
||||
pvops-based HVM domains.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
</release>
|
||||
<release version="v4.9.0" date="2018-11-04">
|
||||
<section title="New features">
|
||||
<change>
|
||||
<summary>
|
||||
util: Add cgroup v2 support
|
||||
</summary>
|
||||
<description>
|
||||
cgroup v2 support has been implemented in libvirt, with both
|
||||
"unified" (v2 only) and "hybrid" (v2 + v1) setups being usable;
|
||||
existing "legacy" (v1 only) setups will keep working.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Add vfio AP support
|
||||
</summary>
|
||||
<description>
|
||||
The QEMU driver now has support to passthrough adjunct processors
|
||||
into QEMU guests on S390.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Improvements">
|
||||
<change>
|
||||
<summary>
|
||||
rpc: Make 'genprotocol' output reproducible
|
||||
</summary>
|
||||
<description>
|
||||
This is another step towards making libvirt builds fully
|
||||
reproducible.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Bug fixes">
|
||||
<change>
|
||||
<summary>
|
||||
security: Fix permissions for UNIX sockets
|
||||
</summary>
|
||||
<description>
|
||||
Since 4.5.0, libvirt is using FD passing to hand sockets over to
|
||||
QEMU, which in theory removes the need for them to be accessible by
|
||||
the user under which the QEMU process is running; however, other
|
||||
processes such as vdsm need to access the sockets as well, which
|
||||
means adjusting permissions is still necessary.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
cpu_map: Add Icelake model definitions
|
||||
</summary>
|
||||
<description>
|
||||
These CPU models will be available in the upcoming 3.1.0 QEMU
|
||||
release.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
util: Properly parse URIs with missing trailing slash
|
||||
</summary>
|
||||
<description>
|
||||
Some storage URIs were not parsed correctly, in which case libvirt
|
||||
ended up emitting XML that it would then refuse to parse back.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
</release>
|
||||
<release version="v4.8.0" date="2018-10-01">
|
||||
<section title="New features">
|
||||
<change>
|
||||
<summary>
|
||||
Xen: Support PM Suspend and Wakeup
|
||||
</summary>
|
||||
<description>
|
||||
The libxl driver now supports the virDomainPMSuspendForDuration
|
||||
and virDomainPMWakeup APIs.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Removed features">
|
||||
<change>
|
||||
<summary>
|
||||
Xen: Drop support for Xen 4.4 and 4.5
|
||||
</summary>
|
||||
<description>
|
||||
Xen 4.4 and 4.5 are no longer supported by the Xen community.
|
||||
Drop support for these older versions and require Xen >= 4.6.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
nwfilter: Disallow binding creation in session mode
|
||||
</summary>
|
||||
<description>
|
||||
Ensure that a filter binding creation is not attempted in session
|
||||
mode and generates a proper error message.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Improvements">
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Retrieve guest hostname through QEMU Guest Agent command
|
||||
</summary>
|
||||
<description>
|
||||
QEMU is now able to retrieve the guest hostname using a new QEMU-GA
|
||||
command called 'guest-get-host-name'. Virsh users can execute
|
||||
'domhostname' for QEMU driver for domains configured to use the
|
||||
Guest Agent.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
virsh: Implement vsh-table in virsh and virsh-admin
|
||||
</summary>
|
||||
<description>
|
||||
The new API fixes problems with table-alignment, making the tables
|
||||
more readable and deals with unicode.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Bug fixes">
|
||||
<change>
|
||||
<summary>
|
||||
storage: Allow inputvol to be encrypted
|
||||
</summary>
|
||||
<description>
|
||||
When creating a storage volume based on another volume, the base
|
||||
input volume is allowed to be encrypted.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
virsh: Require explicit --domain for domxml-to-native
|
||||
</summary>
|
||||
<description>
|
||||
The --domain option for domxml-to-native virsh command has always
|
||||
been documented as required, but commit v4.3.0-127-gd86531daf2
|
||||
accidentally made it optional.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
lxc_monitor: Avoid AB / BA lock race
|
||||
</summary>
|
||||
<description>
|
||||
A deadlock situation could occur when autostarting a LXC domain
|
||||
'guest' due to two threads attempting to take opposing locks while
|
||||
holding opposing locks (AB BA problem).
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
</release>
|
||||
<release version="v4.7.0" date="2018-09-03">
|
||||
<section title="New features">
|
||||
<change>
|
||||
<summary>
|
||||
@@ -71,8 +887,53 @@
|
||||
Support the vhost-vsock-ccw device on S390.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
qemu: Make default machine type independent of QEMU
|
||||
</summary>
|
||||
<description>
|
||||
We can't control whether or not QEMU will change its default
|
||||
machine type in the future, or whether downstream distributions
|
||||
will decide to compile out some machine types, so our only option
|
||||
to provide a predictable behavior is taking care of the default
|
||||
ourselves; management applications and users are encouraged to
|
||||
explicitly pick a machine type when creating new guests.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
apparmor: Various improvements
|
||||
</summary>
|
||||
<description>
|
||||
Rules have been added to deal with a number of scenarios that
|
||||
didn't work correctly.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
<section title="Bug fixes">
|
||||
<change>
|
||||
<summary>
|
||||
esx: Truncate CPU model name
|
||||
</summary>
|
||||
<description>
|
||||
Some CPU model names are too long to be stored into the
|
||||
corresponding property, and should be explicitly truncated
|
||||
to avoid unexpected behavior in users of the
|
||||
<code>virNodeGetInfo()</code> API such as
|
||||
<code>virsh nodeinfo</code>.
|
||||
</description>
|
||||
</change>
|
||||
<change>
|
||||
<summary>
|
||||
utils: Remove arbitrary limit on socket_id/core_id
|
||||
</summary>
|
||||
<description>
|
||||
Both values were assumed to be smaller than 4096, but in fact
|
||||
they are entirely hardware-dependent and there have been reports
|
||||
of machines presenting much bigger values, preventing libvirt from
|
||||
working correctly; all such limits have now been removed.
|
||||
</description>
|
||||
</change>
|
||||
</section>
|
||||
</release>
|
||||
<release version="v4.6.0" date="2018-08-06">
|
||||
|
@@ -175,7 +175,6 @@
|
||||
<h3>Community</h3>
|
||||
<ul>
|
||||
<li><a href="https://twitter.com/hashtag/libvirt">twitter</a></li>
|
||||
<li><a href="https://plus.google.com/communities/109522598353007505282">google+</a></li>
|
||||
<li><a href="http://stackoverflow.com/questions/tagged/libvirt">stackoverflow</a></li>
|
||||
<li><a href="http://serverfault.com/questions/tagged/libvirt">serverfault</a></li>
|
||||
</ul>
|
||||
|
@@ -39,7 +39,7 @@
|
||||
<ul>
|
||||
<li><a href="https://repology.org/metapackage/libvirt/versions">libvirt</a></li>
|
||||
<li><a href="https://repology.org/metapackage/qemu/versions">qemu</a></li>
|
||||
<li><a href="https://repology.org/metapackage/qemu/versions">qemu-kvm</a></li>
|
||||
<li><a href="https://repology.org/metapackage/qemu-kvm/versions">qemu-kvm</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@@ -17,9 +17,6 @@
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library. If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Authors:
|
||||
# Andrea Bolognani <abologna@redhat.com>
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
|
@@ -65,6 +65,17 @@
|
||||
</data>
|
||||
</choice>
|
||||
</define>
|
||||
<define name="uint32">
|
||||
<choice>
|
||||
<data type="string">
|
||||
<param name="pattern">(0x)?[0-9a-fA-F]{1,8}</param>
|
||||
</data>
|
||||
<data type="unsignedInt">
|
||||
<param name="minInclusive">0</param>
|
||||
<param name="maxInclusive">4294967295</param>
|
||||
</data>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
<define name="UUID">
|
||||
<choice>
|
||||
@@ -111,6 +122,22 @@
|
||||
</attribute>
|
||||
</optional>
|
||||
</define>
|
||||
<define name="zpciaddress">
|
||||
<optional>
|
||||
<element name="zpci">
|
||||
<optional>
|
||||
<attribute name="uid">
|
||||
<ref name="uint16"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="fid">
|
||||
<ref name="uint32"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<!-- a 6 byte MAC address in ASCII-hex format, eg "12:34:56:78:9A:BC" -->
|
||||
<!-- The lowest bit of the 1st byte is the "multicast" bit. a -->
|
||||
@@ -252,6 +279,12 @@
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name="zoneName">
|
||||
<data type="string">
|
||||
<param name="pattern">[a-zA-Z0-9_\-]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name="filePath">
|
||||
<data type="string">
|
||||
<param name="pattern">.+</param>
|
||||
@@ -379,6 +412,7 @@
|
||||
<choice>
|
||||
<value>aarch64</value>
|
||||
<value>alpha</value>
|
||||
<value>armv6l</value>
|
||||
<value>armv7l</value>
|
||||
<value>cris</value>
|
||||
<value>i686</value>
|
||||
|
@@ -316,6 +316,9 @@
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</oneOrMore>
|
||||
<optional>
|
||||
<ref name='cpuMonitor'/>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
@@ -347,7 +350,7 @@
|
||||
<optional>
|
||||
<attribute name='min'>
|
||||
<ref name='unsignedInt'/>
|
||||
</attribute>
|
||||
</attribute>
|
||||
</optional>
|
||||
<attribute name='maxAllocs'>
|
||||
<ref name='unsignedInt'/>
|
||||
@@ -356,9 +359,41 @@
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</oneOrMore>
|
||||
<optional>
|
||||
<ref name='cpuMonitor'/>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='cpuMonitor'>
|
||||
<element name='monitor'>
|
||||
<optional>
|
||||
<attribute name='level'>
|
||||
<ref name='unsignedInt'/>
|
||||
</attribute>
|
||||
<attribute name='reuseThreshold'>
|
||||
<ref name='unsignedInt'/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<attribute name='maxMonitors'>
|
||||
<ref name='unsignedInt'/>
|
||||
</attribute>
|
||||
<oneOrMore>
|
||||
<element name='feature'>
|
||||
<attribute name='name'>
|
||||
<ref name='monitorFeature'/>
|
||||
</attribute>
|
||||
</element>
|
||||
</oneOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='monitorFeature'>
|
||||
<data type='string'>
|
||||
<param name='pattern'>(llc_|mbm_)[a-zA-Z0-9\-_]+</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='guestcaps'>
|
||||
<element name='guest'>
|
||||
<ref name='ostype'/>
|
||||
@@ -377,7 +412,7 @@
|
||||
but is also used by phyp driver -->
|
||||
<value>hvm</value> <!-- unmodified OS -->
|
||||
<value>exe</value> <!-- For container based virt -->
|
||||
<value>uml</value> <!-- user mode linux -->
|
||||
<value>uml</value> <!-- user mode linux; NOT USED ANYMORE -->
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
@@ -449,7 +484,7 @@
|
||||
<value>kqemu</value>
|
||||
<value>kvm</value>
|
||||
<value>xen</value>
|
||||
<value>uml</value>
|
||||
<value>uml</value> <!-- NOT USED ANYMORE -->
|
||||
<value>lxc</value>
|
||||
<value>openvz</value>
|
||||
<value>test</value>
|
||||
|
@@ -142,12 +142,18 @@
|
||||
|
||||
<define name='devices'>
|
||||
<element name='devices'>
|
||||
<interleave>
|
||||
<optional>
|
||||
<ref name='disk'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='graphics'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='video'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='hostdev'/>
|
||||
</interleave>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
@@ -181,12 +187,18 @@
|
||||
|
||||
<define name='features'>
|
||||
<element name='features'>
|
||||
<interleave>
|
||||
<optional>
|
||||
<ref name='gic'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='vmcoreinfo'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='vmgenid'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='sev'/>
|
||||
</interleave>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
|
@@ -81,6 +81,9 @@
|
||||
<optional>
|
||||
<ref name='launchSecurity'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='bhyvecmdline'/>
|
||||
</optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
@@ -204,7 +207,7 @@
|
||||
<value>kvm</value>
|
||||
<value>xen</value>
|
||||
<value>lxc</value>
|
||||
<value>uml</value>
|
||||
<value>uml</value> <!-- NOT USED ANYMORE -->
|
||||
<value>openvz</value>
|
||||
<value>test</value>
|
||||
<value>vmware</value>
|
||||
@@ -253,6 +256,14 @@
|
||||
</optional>
|
||||
<element name="os">
|
||||
<interleave>
|
||||
<optional>
|
||||
<attribute name="firmware">
|
||||
<choice>
|
||||
<value>bios</value>
|
||||
<value>efi</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<ref name="ostypehvm"/>
|
||||
<optional>
|
||||
<element name="loader">
|
||||
@@ -280,7 +291,9 @@
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<ref name="absFilePath"/>
|
||||
<optional>
|
||||
<ref name="absFilePath"/>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
@@ -340,13 +353,15 @@
|
||||
<attribute name="machine">
|
||||
<choice>
|
||||
<value>xenpv</value>
|
||||
<value>xenner</value>
|
||||
<value>xenfv</value>
|
||||
<value>xenpvh</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<choice>
|
||||
<value>xen</value>
|
||||
<value>linux</value>
|
||||
<value>xenpvh</value>
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
@@ -655,6 +670,7 @@
|
||||
<choice>
|
||||
<value>file</value>
|
||||
<value>anonymous</value>
|
||||
<value>memfd</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</element>
|
||||
@@ -956,7 +972,7 @@
|
||||
<attribute name="vcpus">
|
||||
<ref name='cpuset'/>
|
||||
</attribute>
|
||||
<oneOrMore>
|
||||
<zeroOrMore>
|
||||
<element name="cache">
|
||||
<attribute name="id">
|
||||
<ref name='unsignedInt'/>
|
||||
@@ -980,7 +996,17 @@
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</oneOrMore>
|
||||
</zeroOrMore>
|
||||
<zeroOrMore>
|
||||
<element name="monitor">
|
||||
<attribute name="level">
|
||||
<ref name='unsignedInt'/>
|
||||
</attribute>
|
||||
<attribute name="vcpus">
|
||||
<ref name='cpuset'/>
|
||||
</attribute>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
<zeroOrMore>
|
||||
@@ -1493,6 +1519,15 @@
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
<optional>
|
||||
<attribute name="model">
|
||||
<choice>
|
||||
<value>virtio</value>
|
||||
<value>virtio-transitional</value>
|
||||
<value>virtio-non-transitional</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="snapshot"/>
|
||||
</optional>
|
||||
@@ -1894,7 +1929,7 @@
|
||||
<value>virtio</value>
|
||||
<value>xen</value>
|
||||
<value>usb</value>
|
||||
<value>uml</value>
|
||||
<value>uml</value> <!-- NOT USED ANYMORE -->
|
||||
<value>sata</value>
|
||||
<value>sd</value>
|
||||
</choice>
|
||||
@@ -2131,6 +2166,8 @@
|
||||
<value>ibmvscsi</value>
|
||||
<value>virtio-scsi</value>
|
||||
<value>lsisas1078</value>
|
||||
<value>virtio-transitional</value>
|
||||
<value>virtio-non-transitional</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
@@ -2288,6 +2325,15 @@
|
||||
<attribute name="type">
|
||||
<value>virtio-serial</value>
|
||||
</attribute>
|
||||
<optional>
|
||||
<attribute name="model">
|
||||
<choice>
|
||||
<value>virtio</value>
|
||||
<value>virtio-transitional</value>
|
||||
<value>virtio-non-transitional</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="ports">
|
||||
<ref name="unsignedInt"/>
|
||||
@@ -2299,6 +2345,17 @@
|
||||
</attribute>
|
||||
</optional>
|
||||
</group>
|
||||
<!-- xenbus has an optional attribute "maxGrantFrames" -->
|
||||
<group>
|
||||
<attribute name="type">
|
||||
<value>xenbus</value>
|
||||
</attribute>
|
||||
<optional>
|
||||
<attribute name="maxGrantFrames">
|
||||
<ref name="unsignedInt"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</group>
|
||||
</choice>
|
||||
<optional>
|
||||
<element name="driver">
|
||||
@@ -2477,6 +2534,15 @@
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
<optional>
|
||||
<attribute name="model">
|
||||
<choice>
|
||||
<value>virtio</value>
|
||||
<value>virtio-transitional</value>
|
||||
<value>virtio-non-transitional</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
<define name="fsDriver">
|
||||
@@ -2752,7 +2818,7 @@
|
||||
<ref name="usbAddr"/>
|
||||
</attribute>
|
||||
<attribute name="device">
|
||||
<ref name="usbPort"/>
|
||||
<ref name="usbAddr"/>
|
||||
</attribute>
|
||||
</group>
|
||||
</choice>
|
||||
@@ -3405,9 +3471,20 @@
|
||||
</attribute>
|
||||
</optional>
|
||||
</group>
|
||||
<attribute name="type">
|
||||
<value>egl-headless</value>
|
||||
</attribute>
|
||||
<group>
|
||||
<attribute name="type">
|
||||
<value>egl-headless</value>
|
||||
</attribute>
|
||||
<optional>
|
||||
<element name="gl">
|
||||
<optional>
|
||||
<attribute name="rendernode">
|
||||
<ref name="absFilePath"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
</group>
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
@@ -3701,7 +3778,7 @@
|
||||
<choice>
|
||||
<value>xen</value>
|
||||
<value>serial</value>
|
||||
<value>uml</value>
|
||||
<value>uml</value> <!-- NOT USED ANYMORE -->
|
||||
<value>virtio</value>
|
||||
<value>lxc</value>
|
||||
<value>openvz</value>
|
||||
@@ -4048,6 +4125,8 @@
|
||||
<attribute name="model">
|
||||
<choice>
|
||||
<value>virtio</value>
|
||||
<value>virtio-transitional</value>
|
||||
<value>virtio-non-transitional</value>
|
||||
<value>xen</value>
|
||||
<value>none</value>
|
||||
</choice>
|
||||
@@ -4257,7 +4336,11 @@
|
||||
<element name="vsock">
|
||||
<optional>
|
||||
<attribute name="model">
|
||||
<value>virtio</value>
|
||||
<choice>
|
||||
<value>virtio</value>
|
||||
<value>virtio-transitional</value>
|
||||
<value>virtio-non-transitional</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<interleave>
|
||||
@@ -4358,6 +4441,15 @@
|
||||
</element>
|
||||
</group>
|
||||
</choice>
|
||||
<optional>
|
||||
<attribute name="model">
|
||||
<choice>
|
||||
<value>virtio</value>
|
||||
<value>virtio-transitional</value>
|
||||
<value>virtio-non-transitional</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="alias"/>
|
||||
</optional>
|
||||
@@ -4594,6 +4686,15 @@
|
||||
<attribute name="type">
|
||||
<value>scsi_host</value>
|
||||
</attribute>
|
||||
<optional>
|
||||
<attribute name="model">
|
||||
<choice>
|
||||
<value>virtio</value>
|
||||
<value>virtio-transitional</value>
|
||||
<value>virtio-non-transitional</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</optional>
|
||||
<element name="source">
|
||||
<choice>
|
||||
<group>
|
||||
@@ -4618,6 +4719,7 @@
|
||||
<choice>
|
||||
<value>vfio-pci</value>
|
||||
<value>vfio-ccw</value>
|
||||
<value>vfio-ap</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<optional>
|
||||
@@ -4684,7 +4786,7 @@
|
||||
<ref name="usbAddr"/>
|
||||
</attribute>
|
||||
<attribute name="device">
|
||||
<ref name="usbPort"/>
|
||||
<ref name="usbAddr"/>
|
||||
</attribute>
|
||||
</element>
|
||||
</define>
|
||||
@@ -4964,6 +5066,14 @@
|
||||
<ref name="featurestate"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="nested-hv">
|
||||
<ref name="featurestate"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name="msrs"/>
|
||||
</optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</optional>
|
||||
@@ -5212,6 +5322,17 @@
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="msrs">
|
||||
<element name="msrs">
|
||||
<attribute name="unknown">
|
||||
<choice>
|
||||
<value>ignore</value>
|
||||
<value>fault</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name="address">
|
||||
<element name="address">
|
||||
<choice>
|
||||
@@ -5220,6 +5341,7 @@
|
||||
<value>pci</value>
|
||||
</attribute>
|
||||
<ref name="pciaddress"/>
|
||||
<ref name="zpciaddress"/>
|
||||
</group>
|
||||
<group>
|
||||
<attribute name="type">
|
||||
@@ -5353,9 +5475,21 @@
|
||||
</interleave>
|
||||
</group>
|
||||
<group>
|
||||
<element name="path">
|
||||
<ref name="absFilePath"/>
|
||||
</element>
|
||||
<interleave>
|
||||
<element name="path">
|
||||
<ref name="absFilePath"/>
|
||||
</element>
|
||||
<optional>
|
||||
<element name="alignsize">
|
||||
<ref name="scaledInteger"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="pmem">
|
||||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</group>
|
||||
</choice>
|
||||
</element>
|
||||
@@ -5379,6 +5513,11 @@
|
||||
</element>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="readonly">
|
||||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
@@ -5386,7 +5525,11 @@
|
||||
<define name="rng">
|
||||
<element name="rng">
|
||||
<attribute name="model">
|
||||
<value>virtio</value>
|
||||
<choice>
|
||||
<value>virtio</value>
|
||||
<value>virtio-transitional</value>
|
||||
<value>virtio-non-transitional</value>
|
||||
</choice>
|
||||
</attribute>
|
||||
<interleave>
|
||||
<ref name="rng-backend"/>
|
||||
@@ -5450,6 +5593,8 @@
|
||||
<attribute name="iommu">
|
||||
<ref name="virOnOff"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="ats">
|
||||
<ref name="virOnOff"/>
|
||||
</attribute>
|
||||
@@ -5768,6 +5913,16 @@
|
||||
<ref name="featurestate"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="ipi">
|
||||
<ref name="featurestate"/>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="evmcs">
|
||||
<ref name="featurestate"/>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
@@ -6067,6 +6222,20 @@
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!--
|
||||
Optional hypervisor extensions in their own namespace:
|
||||
Bhyve
|
||||
-->
|
||||
<define name="bhyvecmdline">
|
||||
<element name="commandline" ns="http://libvirt.org/schemas/domain/bhyve/1.0">
|
||||
<zeroOrMore>
|
||||
<element name="arg">
|
||||
<attribute name='value'/>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!--
|
||||
Type library
|
||||
-->
|
||||
|
@@ -58,6 +58,12 @@
|
||||
</attribute>
|
||||
</optional>
|
||||
|
||||
<optional>
|
||||
<attribute name="zone">
|
||||
<ref name="zoneName"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
|
||||
<optional>
|
||||
<attribute name="stp">
|
||||
<ref name="virOnOff"/>
|
||||
|
@@ -133,6 +133,13 @@
|
||||
<value>pci</value>
|
||||
</attribute>
|
||||
|
||||
<optional>
|
||||
<element name='class'>
|
||||
<data type="string">
|
||||
<param name="pattern">0x[0-9a-fA-F]{6}</param>
|
||||
</data>
|
||||
</element>
|
||||
</optional>
|
||||
<element name='domain'>
|
||||
<ref name='unsignedLong'/>
|
||||
</element>
|
||||
|
@@ -24,9 +24,7 @@
|
||||
</choice>
|
||||
</attribute>
|
||||
<interleave>
|
||||
<zeroOrMore>
|
||||
<ref name='secret'/>
|
||||
</zeroOrMore>
|
||||
<ref name='secret'/>
|
||||
<optional>
|
||||
<element name='cipher'>
|
||||
<ref name='keycipher'/>
|
||||
@@ -238,4 +236,11 @@
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='refreshVolumeAllocation'>
|
||||
<choice>
|
||||
<value>default</value>
|
||||
<value>capacity</value>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
</grammar>
|
||||
|
@@ -52,6 +52,9 @@
|
||||
<ref name='sourcefs'/>
|
||||
<ref name='target'/>
|
||||
</interleave>
|
||||
<optional>
|
||||
<ref name='fs_mount_opts'/>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='poolnetfs'>
|
||||
@@ -64,6 +67,9 @@
|
||||
<ref name='sourcenetfs'/>
|
||||
<ref name='target'/>
|
||||
</interleave>
|
||||
<optional>
|
||||
<ref name='fs_mount_opts'/>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='poollogical'>
|
||||
@@ -149,7 +155,11 @@
|
||||
<ref name='commonMetadataNameOptional'/>
|
||||
<ref name='sizing'/>
|
||||
<ref name='sourcerbd'/>
|
||||
<ref name='refresh'/>
|
||||
</interleave>
|
||||
<optional>
|
||||
<ref name='rbd_config_opts'/>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='poolsheepdog'>
|
||||
@@ -531,6 +541,13 @@
|
||||
<ref name='sourceinfohost'/>
|
||||
<ref name='sourceinfodir'/>
|
||||
<ref name='sourcefmtnetfs'/>
|
||||
<optional>
|
||||
<element name='protocol'>
|
||||
<attribute name='ver'>
|
||||
<ref name='unsignedInt'/>
|
||||
</attribute>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='sourceinfovendor'/>
|
||||
</optional>
|
||||
@@ -675,4 +692,63 @@
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='refresh'>
|
||||
<optional>
|
||||
<element name='refresh'>
|
||||
<interleave>
|
||||
<ref name='refreshVolume'/>
|
||||
</interleave>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='refreshVolume'>
|
||||
<optional>
|
||||
<element name='volume'>
|
||||
<optional>
|
||||
<attribute name='allocation'>
|
||||
<ref name="refreshVolumeAllocation"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<!--
|
||||
Optional storage pool extensions in their own namespace:
|
||||
"fs" or "netfs"
|
||||
-->
|
||||
|
||||
<define name="fs_mount_opts">
|
||||
<element name="mount_opts" ns="http://libvirt.org/schemas/storagepool/fs/1.0">
|
||||
<zeroOrMore>
|
||||
<element name="option">
|
||||
<attribute name='name'>
|
||||
<text/>
|
||||
</attribute>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<!--
|
||||
Optional storage pool extensions in their own namespace:
|
||||
RBD
|
||||
-->
|
||||
|
||||
<define name="rbd_config_opts">
|
||||
<element name="config_opts" ns="http://libvirt.org/schemas/storagepool/rbd/1.0">
|
||||
<zeroOrMore>
|
||||
<element name="option">
|
||||
<attribute name='name'>
|
||||
<text/>
|
||||
</attribute>
|
||||
<attribute name='value'>
|
||||
<text/>
|
||||
</attribute>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
</grammar>
|
||||
|
88
docs/schemas/storagepoolcaps.rng
Normal file
88
docs/schemas/storagepoolcaps.rng
Normal file
@@ -0,0 +1,88 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- A Relax NG schema for the libvirt storage pool capabilities XML format -->
|
||||
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||
<include href='basictypes.rng'/>
|
||||
<start>
|
||||
<ref name='storagepoolCapabilities'/>
|
||||
</start>
|
||||
|
||||
|
||||
<define name='storagepoolCapabilities'>
|
||||
<element name='storagepoolCapabilities'>
|
||||
<zeroOrMore>
|
||||
<ref name='poolCapsType'/>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='poolCapsType'>
|
||||
<element name='pool'>
|
||||
<ref name='poolCapsTypes'/>
|
||||
<ref name='poolCapsSupported'/>
|
||||
<optional>
|
||||
<ref name='poolCapsPoolOptions'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='poolCapsVolOptions'/>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='poolCapsTypes'>
|
||||
<attribute name='type'>
|
||||
<text/>
|
||||
</attribute>
|
||||
</define>
|
||||
|
||||
<define name='poolCapsSupported'>
|
||||
<attribute name='supported'>
|
||||
<ref name="virYesNo"/>
|
||||
</attribute>
|
||||
</define>
|
||||
|
||||
<define name='poolCapsPoolOptions'>
|
||||
<element name='poolOptions'>
|
||||
<optional>
|
||||
<ref name='poolDefaultFormat'/>
|
||||
</optional>
|
||||
<optional>
|
||||
<ref name='poolCapsEnum'/>
|
||||
</optional>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='poolCapsVolOptions'>
|
||||
<element name='volOptions'>
|
||||
<ref name='poolDefaultFormat'/>
|
||||
<ref name='poolCapsEnum'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='poolDefaultFormat'>
|
||||
<element name='defaultFormat'>
|
||||
<attribute name='type'>
|
||||
<text/>
|
||||
</attribute>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='poolCapsEnum'>
|
||||
<zeroOrMore>
|
||||
<element name='enum'>
|
||||
<attribute name='name'>
|
||||
<text/>
|
||||
</attribute>
|
||||
<ref name='value'/>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
</define>
|
||||
|
||||
<define name='value'>
|
||||
<zeroOrMore>
|
||||
<element name='value'>
|
||||
<text/>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
</define>
|
||||
|
||||
</grammar>
|
@@ -139,6 +139,7 @@
|
||||
</element>
|
||||
<ref name='format'/>
|
||||
<ref name='permissions'/>
|
||||
<ref name='timestamps'/>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
|
@@ -310,7 +310,7 @@
|
||||
on the size and placement of volumes. The 'free extents'
|
||||
information will detail the regions which are available for creating
|
||||
new volumes. A volume cannot span across 2 different free extents.
|
||||
It will default to using <code>msdos</code> as the pool source format.
|
||||
It will default to using <code>dos</code> as the pool source format.
|
||||
</p>
|
||||
|
||||
<h3>Example pool input</h3>
|
||||
@@ -357,8 +357,10 @@
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
The <code>dos</code> or <code>gpt</code> formats are recommended for
|
||||
best portability - the latter is needed for disks larger than 2TB.
|
||||
The formats <code>dos</code> ("msdos" in parted terminology,
|
||||
good for BIOS systems) or <code>gpt</code> (good for UEFI
|
||||
systems) are recommended for best portability - the latter is
|
||||
needed for disks larger than 2TB.
|
||||
</p>
|
||||
|
||||
<h3>Valid volume format types</h3>
|
||||
@@ -435,9 +437,9 @@
|
||||
|
||||
<h2><a id="StorageBackendISCSIDirect">iSCSI direct pool</a></h2>
|
||||
<p>
|
||||
This is a variant of the iSCSI pool. Instead of unsing iscsiadm, it uses
|
||||
This is a variant of the iSCSI pool. Instead of using iscsiadm, it uses
|
||||
libiscsi.
|
||||
It require a host, a path which is the target iqn and an initiator iqn.
|
||||
It requires a host, a path which is the target IQN, and an initiator IQN.
|
||||
</p>
|
||||
|
||||
<h3>Example pool input</h3>
|
||||
@@ -455,12 +457,12 @@
|
||||
|
||||
<h3>Valid pool format types</h3>
|
||||
<p>
|
||||
The iSCSI volume pool does not use the pool format type element.
|
||||
The iSCSI direct volume pool does not use the pool format type element.
|
||||
</p>
|
||||
|
||||
<h3>Valid volume format types</h3>
|
||||
<p>
|
||||
The iSCSI volume pool does not use the volume format type element.
|
||||
The iSCSI direct volume pool does not use the volume format type element.
|
||||
</p>
|
||||
|
||||
<h2><a id="StorageBackendSCSI">SCSI pool</a></h2>
|
||||
@@ -780,7 +782,7 @@
|
||||
The ZFS volume pool does not use the pool format type element.
|
||||
</p>
|
||||
|
||||
<h3>Valid pool format types</h3>
|
||||
<h3>Valid volume format types</h3>
|
||||
<p>
|
||||
The ZFS volume pool does not use the volume format type element.
|
||||
</p>
|
||||
@@ -808,6 +810,12 @@
|
||||
<path>/mnt/clustername</path>
|
||||
</target>
|
||||
</pool></pre>
|
||||
|
||||
<h3>Valid pool format types</h3>
|
||||
<p>
|
||||
The Vstorage volume pool does not use the pool format type element.
|
||||
</p>
|
||||
|
||||
<h3>Valid volume format types</h3>
|
||||
<p>The valid volume types are the same as for the directory pool.</p>
|
||||
</body>
|
||||
|
@@ -19,12 +19,6 @@
|
||||
FILTERS = $(wildcard $(srcdir)/xml/nwfilter/*.xml)
|
||||
|
||||
EXTRA_DIST = \
|
||||
apparmor/TEMPLATE.qemu \
|
||||
apparmor/TEMPLATE.lxc \
|
||||
apparmor/libvirt-qemu \
|
||||
apparmor/libvirt-lxc \
|
||||
apparmor/usr.lib.libvirt.virt-aa-helper \
|
||||
apparmor/usr.sbin.libvirtd \
|
||||
lxcconvert/virt-lxc-convert \
|
||||
polkit/libvirt-acl.rules \
|
||||
$(wildcard $(srcdir)/systemtap/*.stp) \
|
||||
@@ -33,10 +27,10 @@ EXTRA_DIST = \
|
||||
$(wildcard $(srcdir)/xml/test/*.xml)
|
||||
|
||||
|
||||
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir) \
|
||||
-I$(top_builddir)/gnulib/lib -I$(top_srcdir)/gnulib/lib
|
||||
LDADD = $(STATIC_BINARIES) $(WARN_CFLAGS) $(COVERAGE_LDFLAGS) \
|
||||
$(top_builddir)/src/libvirt.la $(top_builddir)/gnulib/lib/libgnu.la \
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)
|
||||
LDADD = $(STATIC_BINARIES) $(WARN_CFLAGS) \
|
||||
$(top_builddir)/src/libvirt.la \
|
||||
$(top_builddir)/src/libvirt-admin.la
|
||||
|
||||
noinst_PROGRAMS=dominfo/info1 dommigrate/dommigrate domsuspend/suspend \
|
||||
@@ -70,36 +64,6 @@ admin_logging_SOURCES = admin/logging.c
|
||||
INSTALL_DATA_LOCAL =
|
||||
UNINSTALL_LOCAL =
|
||||
|
||||
if WITH_APPARMOR_PROFILES
|
||||
apparmordir = $(sysconfdir)/apparmor.d/
|
||||
apparmor_DATA = \
|
||||
apparmor/usr.lib.libvirt.virt-aa-helper \
|
||||
apparmor/usr.sbin.libvirtd \
|
||||
$(NULL)
|
||||
|
||||
abstractionsdir = $(apparmordir)/abstractions
|
||||
abstractions_DATA = \
|
||||
apparmor/libvirt-qemu \
|
||||
apparmor/libvirt-lxc \
|
||||
$(NULL)
|
||||
|
||||
templatesdir = $(apparmordir)/libvirt
|
||||
templates_DATA = \
|
||||
apparmor/TEMPLATE.qemu \
|
||||
apparmor/TEMPLATE.lxc \
|
||||
$(NULL)
|
||||
|
||||
APPARMOR_LOCAL_DIR = "$(DESTDIR)$(apparmordir)/local"
|
||||
install-apparmor-local:
|
||||
$(MKDIR_P) "$(APPARMOR_LOCAL_DIR)"
|
||||
echo "# Site-specific additions and overrides for \
|
||||
'usr.lib.libvirt.virt-aa-helper'" \
|
||||
>$(APPARMOR_LOCAL_DIR)/usr.lib.libvirt.virt-aa-helper
|
||||
|
||||
INSTALL_DATA_LOCAL += install-apparmor-local
|
||||
UNINSTALL_LOCAL += uninstall-apparmor-local
|
||||
endif WITH_APPARMOR_PROFILES
|
||||
|
||||
if WITH_NWFILTER
|
||||
NWFILTER_DIR = "$(DESTDIR)$(sysconfdir)/libvirt/nwfilter"
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
#include<libvirt/libvirt.h>
|
||||
#include<libvirt/libvirt-admin.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <libvirt/libvirt.h>
|
||||
#include <libvirt/libvirt-admin.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
@@ -1,9 +1,9 @@
|
||||
#define _GNU_SOURCE
|
||||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
#include<time.h>
|
||||
#include<string.h>
|
||||
#include<libvirt/libvirt-admin.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <string.h>
|
||||
#include <libvirt/libvirt-admin.h>
|
||||
|
||||
static const char *
|
||||
exampleTransportToString(int transport)
|
||||
@@ -30,9 +30,13 @@ exampleGetTimeStr(time_t then)
|
||||
{
|
||||
char *ret = NULL;
|
||||
struct tm timeinfo;
|
||||
struct tm *timeinfop;
|
||||
|
||||
if (!localtime_r(&then, &timeinfo))
|
||||
/* localtime_r() is smarter, but since mingw lacks it and this
|
||||
* example is single-threaded, we can get away with localtime */
|
||||
if (!(timeinfop = localtime(&then)))
|
||||
return NULL;
|
||||
timeinfo = *timeinfop;
|
||||
|
||||
if (!(ret = calloc(64, sizeof(char))))
|
||||
return NULL;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
#include<libvirt/libvirt-admin.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <libvirt/libvirt-admin.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
#include<time.h>
|
||||
#include<libvirt/libvirt-admin.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <libvirt/libvirt-admin.h>
|
||||
|
||||
static const char *
|
||||
exampleTransportToString(int transport)
|
||||
@@ -28,9 +28,13 @@ exampleGetTimeStr(time_t then)
|
||||
{
|
||||
char *ret = NULL;
|
||||
struct tm timeinfo;
|
||||
struct tm *timeinfop;
|
||||
|
||||
if (!localtime_r(&then, &timeinfo))
|
||||
/* localtime_r() is smarter, but since mingw lacks it and this
|
||||
* example is single-threaded, we can get away with localtime */
|
||||
if (!(timeinfop = localtime(&then)))
|
||||
return NULL;
|
||||
timeinfo = *timeinfop;
|
||||
|
||||
if (!(ret = calloc(64, sizeof(char))))
|
||||
return NULL;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
#include<libvirt/libvirt-admin.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <libvirt/libvirt-admin.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
@@ -1,11 +1,10 @@
|
||||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
#include<stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "config.h"
|
||||
#include<unistd.h>
|
||||
#include<libvirt/libvirt-admin.h>
|
||||
#include<libvirt/virterror.h>
|
||||
#include <unistd.h>
|
||||
#include <libvirt/libvirt-admin.h>
|
||||
#include <libvirt/virterror.h>
|
||||
|
||||
static void printHelp(const char *argv0)
|
||||
{
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
#include<libvirt/libvirt-admin.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <libvirt/libvirt-admin.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
|
@@ -5,7 +5,6 @@
|
||||
* hypervisor and extract domain information.
|
||||
* usage: info1
|
||||
* test: info1
|
||||
* author: Daniel Veillard
|
||||
* copy: see Copyright for the status of this software.
|
||||
*/
|
||||
|
||||
|
@@ -18,8 +18,6 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Sahid Orentino Ferdjaoui <sahid.ferdjaoui@cloudwatt.com>
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
@@ -81,8 +79,7 @@ main(int argc, char *argv[])
|
||||
cleanup:
|
||||
if (dom != NULL)
|
||||
virDomainFree(dom);
|
||||
if (conn != NULL)
|
||||
virConnectClose(conn);
|
||||
virConnectClose(conn);
|
||||
|
||||
out:
|
||||
return ret;
|
||||
|
@@ -17,12 +17,8 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Michal Privoznik <mprivozn@redhat.com>
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <getopt.h>
|
||||
#include <libvirt/libvirt.h>
|
||||
|
@@ -16,12 +16,8 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Michal Privoznik <mprivozn@redhat.com>
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <getopt.h>
|
||||
#include <libvirt/libvirt.h>
|
||||
@@ -245,7 +241,8 @@ print_cpu_usage(const char *dom_name,
|
||||
|
||||
if (delim)
|
||||
printf("\t");
|
||||
printf("CPU%zu: %.2lf", cpu + i, usage);
|
||||
/* mingw lacks %zu */
|
||||
printf("CPU%u: %.2lf", (unsigned)(cpu + i), usage);
|
||||
delim = true;
|
||||
}
|
||||
|
||||
@@ -269,10 +266,6 @@ do_top(virConnectPtr conn,
|
||||
int max_id = 0;
|
||||
int nparams = 0, then_nparams = 0, now_nparams = 0;
|
||||
virTypedParameterPtr then_params = NULL, now_params = NULL;
|
||||
struct sigaction action_stop;
|
||||
|
||||
memset(&action_stop, 0, sizeof(action_stop));
|
||||
action_stop.sa_handler = stop;
|
||||
|
||||
/* Lookup the domain */
|
||||
if (!(dom = virDomainLookupByName(conn, dom_name))) {
|
||||
@@ -298,8 +291,10 @@ do_top(virConnectPtr conn,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
sigaction(SIGTERM, &action_stop, NULL);
|
||||
sigaction(SIGINT, &action_stop, NULL);
|
||||
/* The ideal program would use sigaction to set this handler, but
|
||||
* this way is portable to mingw. */
|
||||
signal(SIGTERM, stop);
|
||||
signal(SIGINT, stop);
|
||||
|
||||
run_top = true;
|
||||
while (run_top) {
|
||||
|
@@ -17,7 +17,6 @@
|
||||
# License along with this library. If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: Cedric Bosdonnat <cbosdonnat@suse.com>
|
||||
|
||||
handler_cleanup()
|
||||
{
|
||||
|
@@ -1,13 +1,9 @@
|
||||
#include <config.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
#include <verify.h>
|
||||
|
||||
#define VIR_ENUM_SENTINELS
|
||||
|
||||
#include <libvirt/libvirt.h>
|
||||
@@ -17,6 +13,14 @@
|
||||
#define STREQ(a, b) (strcmp(a, b) == 0)
|
||||
#define NULLSTR(s) ((s) ? (s) : "<null>")
|
||||
|
||||
#if (4 < __GNUC__ + (6 <= __GNUC_MINOR__) \
|
||||
&& (201112L <= __STDC_VERSION__ || !defined __STRICT_ANSI__) \
|
||||
&& !defined __cplusplus)
|
||||
# define verify(cond) _Static_assert(cond, "verify (" #cond ")")
|
||||
#else
|
||||
# define verify(cond)
|
||||
#endif
|
||||
|
||||
#ifndef ATTRIBUTE_UNUSED
|
||||
# define ATTRIBUTE_UNUSED __attribute__((__unused__))
|
||||
#endif
|
||||
@@ -944,10 +948,11 @@ myDomainEventBlockThresholdCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
unsigned long long excess,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
/* Casts to uint64_t to work around mingw not knowing %lld */
|
||||
printf("%s EVENT: Domain %s(%d) block threshold callback dev '%s'(%s), "
|
||||
"threshold: '%llu', excess: '%llu'",
|
||||
"threshold: '%" PRIu64 "', excess: '%" PRIu64 "'",
|
||||
__func__, virDomainGetName(dom), virDomainGetID(dom),
|
||||
dev, NULLSTR(path), threshold, excess);
|
||||
dev, NULLSTR(path), (uint64_t)threshold, (uint64_t)excess);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1142,13 +1147,8 @@ main(int argc, char **argv)
|
||||
virConnectPtr dconn = NULL;
|
||||
int callback1ret = -1;
|
||||
int callback16ret = -1;
|
||||
struct sigaction action_stop;
|
||||
size_t i;
|
||||
|
||||
memset(&action_stop, 0, sizeof(action_stop));
|
||||
|
||||
action_stop.sa_handler = stop;
|
||||
|
||||
if (argc > 1 && STREQ(argv[1], "--help")) {
|
||||
printf("%s uri\n", argv[0]);
|
||||
goto cleanup;
|
||||
@@ -1179,8 +1179,10 @@ main(int argc, char **argv)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
sigaction(SIGTERM, &action_stop, NULL);
|
||||
sigaction(SIGINT, &action_stop, NULL);
|
||||
/* The ideal program would use sigaction to set this handler, but
|
||||
* this way is portable to mingw. */
|
||||
signal(SIGTERM, stop);
|
||||
signal(SIGINT, stop);
|
||||
|
||||
printf("Registering event callbacks\n");
|
||||
|
||||
|
@@ -16,7 +16,6 @@
|
||||
# License along with this library. If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
#
|
||||
# This script will monitor all operation of the libvirt event loop
|
||||
# in both client and server. Example output is:
|
||||
|
@@ -16,7 +16,6 @@
|
||||
#
|
||||
# Debug RWLock mechanisms as well.
|
||||
#
|
||||
# Author: Martin Kletzander <mkletzan@redhat.com>
|
||||
|
||||
|
||||
global mx_tolock
|
||||
|
@@ -16,7 +16,6 @@
|
||||
# License along with this library. If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
#
|
||||
# This script will monitor all messages sent/received between libvirt
|
||||
# and the QEMU monitor
|
||||
|
@@ -16,7 +16,6 @@
|
||||
# License along with this library. If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
#
|
||||
# This script will monitor all RPC messages going in/out of libvirtd and
|
||||
# any connected clients. Example output:
|
||||
|
@@ -27,4 +27,4 @@ noinst_LTLIBRARIES =
|
||||
|
||||
include gnulib.mk
|
||||
|
||||
INCLUDES = -I$(top_srcdir) $(GETTEXT_CPPFLAGS)
|
||||
AM_CPPFLAGS = -I$(top_srcdir)
|
||||
|
@@ -18,8 +18,6 @@
|
||||
|
||||
include gnulib.mk
|
||||
|
||||
INCLUDES = $(GETTEXT_CPPFLAGS)
|
||||
|
||||
GNULIB_TESTS0 =
|
||||
GNULIB_TESTS1 = $(GNULIB_TESTS)
|
||||
if WITH_EXPENSIVE_TESTS
|
||||
|
@@ -19,12 +19,10 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Martin Kletzander <mkletzan@redhat.com>
|
||||
*/
|
||||
|
||||
#ifndef __VIR_ADMIN_H__
|
||||
# define __VIR_ADMIN_H__
|
||||
#ifndef LIBVIRT_ADMIN_H
|
||||
# define LIBVIRT_ADMIN_H
|
||||
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -424,4 +422,4 @@ int virAdmConnectSetLoggingFilters(virAdmConnectPtr conn,
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif /* __VIR_ADMIN_H__ */
|
||||
#endif /* LIBVIRT_ADMIN_H */
|
||||
|
@@ -3,7 +3,6 @@
|
||||
* Summary: common macros and enums for the libvirt and libvirt-admin library
|
||||
* Description: Provides common macros and enums needed by both libvirt and
|
||||
* libvirt-admin libraries
|
||||
* Author: Erik Skultety <eskultet@redhat.com>
|
||||
*
|
||||
* Copyright (C) 2015 Red Hat, Inc.
|
||||
*
|
||||
|
@@ -2,7 +2,6 @@
|
||||
* libvirt-domain-snapshot.h
|
||||
* Summary: APIs for management of domain snapshots
|
||||
* Description: Provides APIs for the management of domain snapshots
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*
|
||||
* Copyright (C) 2006-2014 Red Hat, Inc.
|
||||
*
|
||||
@@ -21,8 +20,8 @@
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __VIR_LIBVIRT_DOMAIN_SNAPSHOT_H__
|
||||
# define __VIR_LIBVIRT_DOMAIN_SNAPSHOT_H__
|
||||
#ifndef LIBVIRT_DOMAIN_SNAPSHOT_H
|
||||
# define LIBVIRT_DOMAIN_SNAPSHOT_H
|
||||
|
||||
# ifndef __VIR_LIBVIRT_H_INCLUDES__
|
||||
# error "Don't include this file directly, only use libvirt/libvirt.h"
|
||||
@@ -60,7 +59,7 @@ typedef enum {
|
||||
VIR_DOMAIN_SNAPSHOT_CREATE_HALT = (1 << 3), /* Stop running guest
|
||||
after snapshot */
|
||||
VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY = (1 << 4), /* disk snapshot, not
|
||||
system checkpoint */
|
||||
full system */
|
||||
VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = (1 << 5), /* reuse any existing
|
||||
external files */
|
||||
VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE = (1 << 6), /* use guest agent to
|
||||
@@ -79,6 +78,10 @@ virDomainSnapshotPtr virDomainSnapshotCreateXML(virDomainPtr domain,
|
||||
const char *xmlDesc,
|
||||
unsigned int flags);
|
||||
|
||||
typedef enum {
|
||||
VIR_DOMAIN_SNAPSHOT_XML_SECURE = VIR_DOMAIN_XML_SECURE, /* dump security sensitive information too */
|
||||
} virDomainSnapshotXMLFlags;
|
||||
|
||||
/* Dump the XML of a snapshot */
|
||||
char *virDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot,
|
||||
unsigned int flags);
|
||||
@@ -132,6 +135,10 @@ typedef enum {
|
||||
VIR_DOMAIN_SNAPSHOT_LIST_EXTERNAL = (1 << 9), /* Filter by snapshots
|
||||
that use files external
|
||||
to disk images */
|
||||
|
||||
VIR_DOMAIN_SNAPSHOT_LIST_TOPOLOGICAL = (1 << 10), /* Ensure parents occur
|
||||
before children in
|
||||
the resulting list */
|
||||
} virDomainSnapshotListFlags;
|
||||
|
||||
/* Return the number of snapshots for this domain */
|
||||
@@ -211,4 +218,4 @@ int virDomainSnapshotDelete(virDomainSnapshotPtr snapshot,
|
||||
int virDomainSnapshotRef(virDomainSnapshotPtr snapshot);
|
||||
int virDomainSnapshotFree(virDomainSnapshotPtr snapshot);
|
||||
|
||||
#endif /* __VIR_LIBVIRT_DOMAIN_SNAPSHOT_H__ */
|
||||
#endif /* LIBVIRT_DOMAIN_SNAPSHOT_H */
|
||||
|
@@ -2,7 +2,6 @@
|
||||
* libvirt-domain.h
|
||||
* Summary: APIs for management of domains
|
||||
* Description: Provides APIs for the management of domains
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*
|
||||
* Copyright (C) 2006-2015 Red Hat, Inc.
|
||||
*
|
||||
@@ -21,8 +20,8 @@
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __VIR_LIBVIRT_DOMAIN_H__
|
||||
# define __VIR_LIBVIRT_DOMAIN_H__
|
||||
#ifndef LIBVIRT_DOMAIN_H
|
||||
# define LIBVIRT_DOMAIN_H
|
||||
|
||||
# ifndef __VIR_LIBVIRT_H_INCLUDES__
|
||||
# error "Don't include this file directly, only use libvirt/libvirt.h"
|
||||
@@ -145,6 +144,8 @@ typedef enum {
|
||||
VIR_DOMAIN_SHUTOFF_FAILED = 6, /* domain failed to start */
|
||||
VIR_DOMAIN_SHUTOFF_FROM_SNAPSHOT = 7, /* restored from a snapshot which was
|
||||
* taken while domain was shutoff */
|
||||
VIR_DOMAIN_SHUTOFF_DAEMON = 8, /* daemon decides to kill domain
|
||||
during reconnection processing */
|
||||
# ifdef VIR_ENUM_SENTINELS
|
||||
VIR_DOMAIN_SHUTOFF_LAST
|
||||
# endif
|
||||
@@ -830,6 +831,12 @@ typedef enum {
|
||||
*/
|
||||
VIR_MIGRATE_TLS = (1 << 16),
|
||||
|
||||
/* Send memory pages to the destination host through several network
|
||||
* connections. See VIR_MIGRATE_PARAM_PARALLEL_* parameters for
|
||||
* configuring the parallel migration.
|
||||
*/
|
||||
VIR_MIGRATE_PARALLEL = (1 << 17),
|
||||
|
||||
} virDomainMigrateFlags;
|
||||
|
||||
|
||||
@@ -902,6 +909,15 @@ typedef enum {
|
||||
*/
|
||||
# define VIR_MIGRATE_PARAM_BANDWIDTH "bandwidth"
|
||||
|
||||
/**
|
||||
* VIR_MIGRATE_PARAM_BANDWIDTH_POSTCOPY:
|
||||
*
|
||||
* virDomainMigrate* params field: the maximum bandwidth (in MiB/s) that will
|
||||
* be used for post-copy phase of a migration as VIR_TYPED_PARAM_ULLONG. If set
|
||||
* to 0 or omitted, post-copy migration speed will not be limited.
|
||||
*/
|
||||
# define VIR_MIGRATE_PARAM_BANDWIDTH_POSTCOPY "bandwidth.postcopy"
|
||||
|
||||
/**
|
||||
* VIR_MIGRATE_PARAM_GRAPHICS_URI:
|
||||
*
|
||||
@@ -1015,6 +1031,14 @@ typedef enum {
|
||||
*/
|
||||
# define VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT "auto_converge.increment"
|
||||
|
||||
/**
|
||||
* VIR_MIGRATE_PARAM_PARALLEL_CONNECTIONS:
|
||||
*
|
||||
* virDomainMigrate* params field: number of connections used during parallel
|
||||
* migration. As VIR_TYPED_PARAM_INT.
|
||||
*/
|
||||
# define VIR_MIGRATE_PARAM_PARALLEL_CONNECTIONS "parallel.connections"
|
||||
|
||||
/* Domain migration. */
|
||||
virDomainPtr virDomainMigrate (virDomainPtr domain, virConnectPtr dconn,
|
||||
unsigned long flags, const char *dname,
|
||||
@@ -1061,6 +1085,12 @@ int virDomainMigrateSetCompressionCache(virDomainPtr domain,
|
||||
unsigned long long cacheSize,
|
||||
unsigned int flags);
|
||||
|
||||
/* Domain migration speed flags. */
|
||||
typedef enum {
|
||||
/* Set or get maximum speed of post-copy migration. */
|
||||
VIR_DOMAIN_MIGRATE_MAX_SPEED_POSTCOPY = (1 << 0),
|
||||
} virDomainMigrateMaxSpeedFlags;
|
||||
|
||||
int virDomainMigrateSetMaxSpeed(virDomainPtr domain,
|
||||
unsigned long bandwidth,
|
||||
unsigned int flags);
|
||||
@@ -1203,6 +1233,7 @@ int virDomainRestoreFlags (virConnectPtr conn,
|
||||
const char *dxml,
|
||||
unsigned int flags);
|
||||
|
||||
/* See below for virDomainSaveImageXMLFlags */
|
||||
char * virDomainSaveImageGetXMLDesc (virConnectPtr conn,
|
||||
const char *file,
|
||||
unsigned int flags);
|
||||
@@ -1555,6 +1586,10 @@ typedef enum {
|
||||
VIR_DOMAIN_XML_MIGRATABLE = (1 << 3), /* dump XML suitable for migration */
|
||||
} virDomainXMLFlags;
|
||||
|
||||
typedef enum {
|
||||
VIR_DOMAIN_SAVE_IMAGE_XML_SECURE = VIR_DOMAIN_XML_SECURE, /* dump security sensitive information too */
|
||||
} virDomainSaveImageXMLFlags;
|
||||
|
||||
char * virDomainGetXMLDesc (virDomainPtr domain,
|
||||
unsigned int flags);
|
||||
|
||||
@@ -1911,6 +1946,50 @@ int virDomainDelIOThread(virDomainPtr domain,
|
||||
unsigned int iothread_id,
|
||||
unsigned int flags);
|
||||
|
||||
/* IOThread set parameters */
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_IOTHREAD_POLL_MAX_NS:
|
||||
*
|
||||
* The maximum polling time that can be used by polling algorithm in ns.
|
||||
* The polling time starts at 0 (zero) and is the time spent by the guest
|
||||
* to process IOThread data before returning the CPU to the host. The
|
||||
* polling time will be dynamically modified over time based on the
|
||||
* poll_grow and poll_shrink parameters provided. A value set too large
|
||||
* will cause more CPU time to be allocated the guest. A value set too
|
||||
* small will not provide enough cycles for the guest to process data.
|
||||
* The polling interval is not available for statistical purposes.
|
||||
*/
|
||||
# define VIR_DOMAIN_IOTHREAD_POLL_MAX_NS "poll_max_ns"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_IOTHREAD_POLL_GROW:
|
||||
*
|
||||
* This provides a value for the dynamic polling adjustment algorithm to
|
||||
* use to grow its polling interval up to the poll_max_ns value. A value
|
||||
* of 0 (zero) allows the hypervisor to choose its own value. The algorithm
|
||||
* to use for adjustment is hypervisor specific.
|
||||
*/
|
||||
# define VIR_DOMAIN_IOTHREAD_POLL_GROW "poll_grow"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_IOTHREAD_POLL_SHRINK:
|
||||
*
|
||||
* This provides a value for the dynamic polling adjustment algorithm to
|
||||
* use to shrink its polling interval when the polling interval exceeds
|
||||
* the poll_max_ns value. A value of 0 (zero) allows the hypervisor to
|
||||
* choose its own value. The algorithm to use for adjustment is hypervisor
|
||||
* specific.
|
||||
*/
|
||||
# define VIR_DOMAIN_IOTHREAD_POLL_SHRINK "poll_shrink"
|
||||
|
||||
int virDomainSetIOThreadParams(virDomainPtr domain,
|
||||
unsigned int iothread_id,
|
||||
virTypedParameterPtr params,
|
||||
int nparams,
|
||||
unsigned int flags);
|
||||
|
||||
|
||||
/**
|
||||
* VIR_USE_CPU:
|
||||
* @cpumap: pointer to a bit map of real CPUs (in 8-bit bytes) (IN/OUT)
|
||||
@@ -2048,6 +2127,7 @@ typedef enum {
|
||||
VIR_DOMAIN_STATS_INTERFACE = (1 << 4), /* return domain interfaces info */
|
||||
VIR_DOMAIN_STATS_BLOCK = (1 << 5), /* return domain block info */
|
||||
VIR_DOMAIN_STATS_PERF = (1 << 6), /* return domain perf event info */
|
||||
VIR_DOMAIN_STATS_IOTHREAD = (1 << 7), /* return iothread poll info */
|
||||
} virDomainStatsTypes;
|
||||
|
||||
typedef enum {
|
||||
@@ -2329,7 +2409,8 @@ int virDomainSetPerfEvents(virDomainPtr dom,
|
||||
* Describes various possible block jobs.
|
||||
*/
|
||||
typedef enum {
|
||||
VIR_DOMAIN_BLOCK_JOB_TYPE_UNKNOWN = 0, /* Placeholder */
|
||||
/* Placeholder */
|
||||
VIR_DOMAIN_BLOCK_JOB_TYPE_UNKNOWN = 0,
|
||||
|
||||
/* Block Pull (virDomainBlockPull, or virDomainBlockRebase without
|
||||
* flags), job ends on completion */
|
||||
@@ -3376,6 +3457,16 @@ typedef enum {
|
||||
*/
|
||||
# define VIR_DOMAIN_JOB_MEMORY_ITERATION "memory_iteration"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_JOB_MEMORY_POSTCOPY_REQS:
|
||||
*
|
||||
* virDomainGetJobStats field: number page requests received from the
|
||||
* destination host during post-copy migration, as VIR_TYPED_PARAM_ULLONG.
|
||||
* This counter is incremented whenever the migrated domain tries to access
|
||||
* a memory page which has not been transferred from the source host yet.
|
||||
*/
|
||||
# define VIR_DOMAIN_JOB_MEMORY_POSTCOPY_REQS "memory_postcopy_requests"
|
||||
|
||||
/**
|
||||
* VIR_DOMAIN_JOB_DISK_TOTAL:
|
||||
*
|
||||
@@ -4793,4 +4884,4 @@ int virDomainGetLaunchSecurityInfo(virDomainPtr domain,
|
||||
int *nparams,
|
||||
unsigned int flags);
|
||||
|
||||
#endif /* __VIR_LIBVIRT_DOMAIN_H__ */
|
||||
#endif /* LIBVIRT_DOMAIN_H */
|
||||
|
@@ -2,7 +2,6 @@
|
||||
* libvirt-event.h
|
||||
* Summary: APIs for management of events
|
||||
* Description: Provides APIs for the management of events
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*
|
||||
* Copyright (C) 2006-2014 Red Hat, Inc.
|
||||
*
|
||||
@@ -21,8 +20,8 @@
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __VIR_LIBVIRT_EVENT_H__
|
||||
# define __VIR_LIBVIRT_EVENT_H__
|
||||
#ifndef LIBVIRT_EVENT_H
|
||||
# define LIBVIRT_EVENT_H
|
||||
|
||||
# ifndef __VIR_LIBVIRT_H_INCLUDES__
|
||||
# error "Don't include this file directly, only use libvirt/libvirt.h"
|
||||
@@ -60,7 +59,7 @@ typedef void (*virEventHandleCallback)(int watch, int fd, int events, void *opaq
|
||||
* virEventAddHandleFunc:
|
||||
* @fd: file descriptor to listen on
|
||||
* @event: bitset of events on which to fire the callback
|
||||
* @cb: the callback to be called when an event occurrs
|
||||
* @cb: the callback to be called when an event occurs
|
||||
* @opaque: user data to pass to the callback
|
||||
* @ff: the callback invoked to free opaque data blob
|
||||
*
|
||||
@@ -187,4 +186,4 @@ void virEventUpdateTimeout(int timer, int frequency);
|
||||
int virEventRemoveTimeout(int timer);
|
||||
|
||||
|
||||
#endif /* __VIR_LIBVIRT_EVENT_H__ */
|
||||
#endif /* LIBVIRT_EVENT_H */
|
||||
|
@@ -2,7 +2,6 @@
|
||||
* libvirt-host.h
|
||||
* Summary: APIs for management of hosts
|
||||
* Description: Provides APIs for the management of hosts
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*
|
||||
* Copyright (C) 2006-2014 Red Hat, Inc.
|
||||
*
|
||||
@@ -21,8 +20,8 @@
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __VIR_LIBVIRT_HOST_H__
|
||||
# define __VIR_LIBVIRT_HOST_H__
|
||||
#ifndef LIBVIRT_HOST_H
|
||||
# define LIBVIRT_HOST_H
|
||||
|
||||
# ifndef __VIR_LIBVIRT_H_INCLUDES__
|
||||
# error "Don't include this file directly, only use libvirt/libvirt.h"
|
||||
@@ -744,4 +743,4 @@ int virNodeAllocPages(virConnectPtr conn,
|
||||
unsigned int flags);
|
||||
|
||||
|
||||
#endif /* __VIR_LIBVIRT_HOST_H__ */
|
||||
#endif /* LIBVIRT_HOST_H */
|
||||
|
@@ -2,7 +2,6 @@
|
||||
* libvirt-interface.h
|
||||
* Summary: APIs for management of interfaces
|
||||
* Description: Provides APIs for the management of interfaces
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*
|
||||
* Copyright (C) 2006-2014 Red Hat, Inc.
|
||||
*
|
||||
@@ -21,8 +20,8 @@
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __VIR_LIBVIRT_INTERFACE_H__
|
||||
# define __VIR_LIBVIRT_INTERFACE_H__
|
||||
#ifndef LIBVIRT_INTERFACE_H
|
||||
# define LIBVIRT_INTERFACE_H
|
||||
|
||||
# ifndef __VIR_LIBVIRT_H_INCLUDES__
|
||||
# error "Don't include this file directly, only use libvirt/libvirt.h"
|
||||
@@ -107,4 +106,4 @@ int virInterfaceChangeRollback(virConnectPtr conn,
|
||||
int virInterfaceIsActive(virInterfacePtr iface);
|
||||
|
||||
|
||||
#endif /* __VIR_LIBVIRT_INTERFACE_H__ */
|
||||
#endif /* LIBVIRT_INTERFACE_H */
|
||||
|
@@ -19,12 +19,10 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
*/
|
||||
|
||||
#ifndef __VIR_LXC_H__
|
||||
# define __VIR_LXC_H__
|
||||
#ifndef LIBVIRT_LXC_H
|
||||
# define LIBVIRT_LXC_H
|
||||
|
||||
# include <libvirt/libvirt.h>
|
||||
|
||||
@@ -53,4 +51,4 @@ int virDomainLxcEnterCGroup(virDomainPtr domain,
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif /* __VIR_LXC_H__ */
|
||||
#endif /* LIBVIRT_LXC_H */
|
||||
|
@@ -2,7 +2,6 @@
|
||||
* libvirt-network.h
|
||||
* Summary: APIs for management of networks
|
||||
* Description: Provides APIs for the management of networks
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*
|
||||
* Copyright (C) 2006-2014 Red Hat, Inc.
|
||||
*
|
||||
@@ -21,8 +20,8 @@
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __VIR_LIBVIRT_NETWORK_H__
|
||||
# define __VIR_LIBVIRT_NETWORK_H__
|
||||
#ifndef LIBVIRT_NETWORK_H
|
||||
# define LIBVIRT_NETWORK_H
|
||||
|
||||
# ifndef __VIR_LIBVIRT_H_INCLUDES__
|
||||
# error "Don't include this file directly, only use libvirt/libvirt.h"
|
||||
@@ -334,4 +333,4 @@ int virConnectNetworkEventRegisterAny(virConnectPtr conn,
|
||||
int virConnectNetworkEventDeregisterAny(virConnectPtr conn,
|
||||
int callbackID);
|
||||
|
||||
#endif /* __VIR_LIBVIRT_NETWORK_H__ */
|
||||
#endif /* LIBVIRT_NETWORK_H */
|
||||
|
@@ -2,7 +2,6 @@
|
||||
* libvirt-nodedev.h
|
||||
* Summary: APIs for management of nodedevs
|
||||
* Description: Provides APIs for the management of nodedevs
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*
|
||||
* Copyright (C) 2006-2014 Red Hat, Inc.
|
||||
*
|
||||
@@ -21,8 +20,8 @@
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __VIR_LIBVIRT_NODEDEV_H__
|
||||
# define __VIR_LIBVIRT_NODEDEV_H__
|
||||
#ifndef LIBVIRT_NODEDEV_H
|
||||
# define LIBVIRT_NODEDEV_H
|
||||
|
||||
# ifndef __VIR_LIBVIRT_H_INCLUDES__
|
||||
# error "Don't include this file directly, only use libvirt/libvirt.h"
|
||||
@@ -217,4 +216,4 @@ typedef void (*virConnectNodeDeviceEventLifecycleCallback)(virConnectPtr conn,
|
||||
int detail,
|
||||
void *opaque);
|
||||
|
||||
#endif /* __VIR_LIBVIRT_NODEDEV_H__ */
|
||||
#endif /* LIBVIRT_NODEDEV_H */
|
||||
|
@@ -2,7 +2,6 @@
|
||||
* libvirt-nwfilter.h
|
||||
* Summary: APIs for management of nwfilters
|
||||
* Description: Provides APIs for the management of nwfilters
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*
|
||||
* Copyright (C) 2006-2014 Red Hat, Inc.
|
||||
*
|
||||
@@ -21,8 +20,8 @@
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __VIR_LIBVIRT_NWFILTER_H__
|
||||
# define __VIR_LIBVIRT_NWFILTER_H__
|
||||
#ifndef LIBVIRT_NWFILTER_H
|
||||
# define LIBVIRT_NWFILTER_H
|
||||
|
||||
# ifndef __VIR_LIBVIRT_H_INCLUDES__
|
||||
# error "Don't include this file directly, only use libvirt/libvirt.h"
|
||||
@@ -131,4 +130,4 @@ int virNWFilterBindingDelete(virNWFilterBindingPtr binding);
|
||||
int virNWFilterBindingRef(virNWFilterBindingPtr binding);
|
||||
int virNWFilterBindingFree(virNWFilterBindingPtr binding);
|
||||
|
||||
#endif /* __VIR_LIBVIRT_NWFILTER_H__ */
|
||||
#endif /* LIBVIRT_NWFILTER_H */
|
||||
|
@@ -19,12 +19,10 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Chris Lalancette <clalance@redhat.com>
|
||||
*/
|
||||
|
||||
#ifndef __VIR_QEMU_H__
|
||||
# define __VIR_QEMU_H__
|
||||
#ifndef LIBVIRT_QEMU_H
|
||||
# define LIBVIRT_QEMU_H
|
||||
|
||||
# include <libvirt/libvirt.h>
|
||||
|
||||
@@ -103,4 +101,4 @@ int virConnectDomainQemuMonitorEventDeregister(virConnectPtr conn,
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif /* __VIR_QEMU_H__ */
|
||||
#endif /* LIBVIRT_QEMU_H */
|
||||
|
@@ -2,7 +2,6 @@
|
||||
* libvirt-secret.h
|
||||
* Summary: APIs for management of secrets
|
||||
* Description: Provides APIs for the management of secrets
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*
|
||||
* Copyright (C) 2006-2014, 2016 Red Hat, Inc.
|
||||
*
|
||||
@@ -21,8 +20,8 @@
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __VIR_LIBVIRT_SECRET_H__
|
||||
# define __VIR_LIBVIRT_SECRET_H__
|
||||
#ifndef LIBVIRT_SECRET_H
|
||||
# define LIBVIRT_SECRET_H
|
||||
|
||||
# ifndef __VIR_LIBVIRT_H_INCLUDES__
|
||||
# error "Don't include this file directly, only use libvirt/libvirt.h"
|
||||
@@ -203,4 +202,4 @@ typedef void (*virConnectSecretEventLifecycleCallback)(virConnectPtr conn,
|
||||
void *opaque);
|
||||
|
||||
|
||||
#endif /* __VIR_LIBVIRT_SECRET_H__ */
|
||||
#endif /* LIBVIRT_SECRET_H */
|
||||
|
@@ -2,7 +2,6 @@
|
||||
* libvirt-storage.h
|
||||
* Summary: APIs for management of storage pools and volumes
|
||||
* Description: Provides APIs for the management of storage pools and volumes
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*
|
||||
* Copyright (C) 2006-2016 Red Hat, Inc.
|
||||
*
|
||||
@@ -21,8 +20,8 @@
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __VIR_LIBVIRT_STORAGE_H__
|
||||
# define __VIR_LIBVIRT_STORAGE_H__
|
||||
#ifndef LIBVIRT_STORAGE_H
|
||||
# define LIBVIRT_STORAGE_H
|
||||
|
||||
# ifndef __VIR_LIBVIRT_H_INCLUDES__
|
||||
# error "Don't include this file directly, only use libvirt/libvirt.h"
|
||||
@@ -194,6 +193,10 @@ typedef enum {
|
||||
*/
|
||||
virConnectPtr virStoragePoolGetConnect (virStoragePoolPtr pool);
|
||||
|
||||
/* Storage Pool capabilities */
|
||||
char *virConnectGetStoragePoolCapabilities(virConnectPtr conn,
|
||||
unsigned int flags);
|
||||
|
||||
/*
|
||||
* List active storage pools
|
||||
*/
|
||||
@@ -496,4 +499,4 @@ typedef void (*virConnectStoragePoolEventLifecycleCallback)(virConnectPtr conn,
|
||||
int detail,
|
||||
void *opaque);
|
||||
|
||||
#endif /* __VIR_LIBVIRT_STORAGE_H__ */
|
||||
#endif /* LIBVIRT_STORAGE_H */
|
||||
|
@@ -2,7 +2,6 @@
|
||||
* libvirt-stream.h
|
||||
* Summary: APIs for management of streams
|
||||
* Description: Provides APIs for the management of streams
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*
|
||||
* Copyright (C) 2006-2014 Red Hat, Inc.
|
||||
*
|
||||
@@ -21,8 +20,8 @@
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __VIR_LIBVIRT_STREAM_H__
|
||||
# define __VIR_LIBVIRT_STREAM_H__
|
||||
#ifndef LIBVIRT_STREAM_H
|
||||
# define LIBVIRT_STREAM_H
|
||||
|
||||
# ifndef __VIR_LIBVIRT_H_INCLUDES__
|
||||
# error "Don't include this file directly, only use libvirt/libvirt.h"
|
||||
@@ -267,4 +266,4 @@ int virStreamAbort(virStreamPtr st);
|
||||
|
||||
int virStreamFree(virStreamPtr st);
|
||||
|
||||
#endif /* __VIR_LIBVIRT_STREAM_H__ */
|
||||
#endif /* LIBVIRT_STREAM_H */
|
||||
|
@@ -4,7 +4,7 @@
|
||||
* Description: Provides the interfaces of the libvirt library to handle
|
||||
* virtualized domains
|
||||
*
|
||||
* Copyright (C) 2005-2006, 2010-2014 Red Hat, Inc.
|
||||
* Copyright (C) 2005-2019 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@@ -19,12 +19,10 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*/
|
||||
|
||||
#ifndef __VIR_VIRLIB_H__
|
||||
# define __VIR_VIRLIB_H__
|
||||
#ifndef LIBVIRT_H
|
||||
# define LIBVIRT_H
|
||||
|
||||
# include <sys/types.h>
|
||||
|
||||
@@ -36,6 +34,10 @@ extern "C" {
|
||||
# include <libvirt/libvirt-common.h>
|
||||
# include <libvirt/libvirt-host.h>
|
||||
# include <libvirt/libvirt-domain.h>
|
||||
/* FIXME: Temporary hack until later patch creates new
|
||||
* libvirt-domain-checkpoint.h file */
|
||||
typedef struct _virDomainCheckpoint virDomainCheckpoint;
|
||||
typedef virDomainCheckpoint *virDomainCheckpointPtr;
|
||||
# include <libvirt/libvirt-domain-snapshot.h>
|
||||
# include <libvirt/libvirt-event.h>
|
||||
# include <libvirt/libvirt-interface.h>
|
||||
@@ -51,4 +53,4 @@ extern "C" {
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif /* __VIR_VIRLIB_H__ */
|
||||
#endif /* LIBVIRT_H */
|
||||
|
@@ -4,7 +4,7 @@
|
||||
* Description: Provides the interfaces of the libvirt library to handle
|
||||
* errors raised while using the library.
|
||||
*
|
||||
* Copyright (C) 2006-2016 Red Hat, Inc.
|
||||
* Copyright (C) 2006-2019 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@@ -19,12 +19,10 @@
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Author: Daniel Veillard <veillard@redhat.com>
|
||||
*/
|
||||
|
||||
#ifndef __VIR_VIRERR_H__
|
||||
# define __VIR_VIRERR_H__
|
||||
#ifndef LIBVIRT_VIRTERROR_H
|
||||
# define LIBVIRT_VIRTERROR_H
|
||||
|
||||
# include <libvirt/libvirt.h>
|
||||
|
||||
@@ -76,7 +74,7 @@ typedef enum {
|
||||
VIR_FROM_NETWORK = 19, /* Error from network config */
|
||||
|
||||
VIR_FROM_DOMAIN = 20, /* Error from domain config */
|
||||
VIR_FROM_UML = 21, /* Error at the UML driver */
|
||||
VIR_FROM_UML = 21, /* Error at the UML driver; unused since 5.0.0 */
|
||||
VIR_FROM_NODEDEV = 22, /* Error from node device monitor */
|
||||
VIR_FROM_XEN_INOTIFY = 23, /* Error from xen inotify layer */
|
||||
VIR_FROM_SECURITY = 24, /* Error from security framework */
|
||||
@@ -133,6 +131,8 @@ typedef enum {
|
||||
VIR_FROM_PERF = 65, /* Error from perf */
|
||||
VIR_FROM_LIBSSH = 66, /* Error from libssh connection transport */
|
||||
VIR_FROM_RESCTRL = 67, /* Error from resource control */
|
||||
VIR_FROM_FIREWALLD = 68, /* Error from firewalld */
|
||||
VIR_FROM_DOMAIN_CHECKPOINT = 69, /* Error from domain checkpoint */
|
||||
|
||||
# ifdef VIR_ENUM_SENTINELS
|
||||
VIR_ERR_DOMAIN_LAST
|
||||
@@ -323,6 +323,13 @@ typedef enum {
|
||||
VIR_ERR_DEVICE_MISSING = 99, /* fail to find the desired device */
|
||||
VIR_ERR_INVALID_NWFILTER_BINDING = 100, /* invalid nwfilter binding */
|
||||
VIR_ERR_NO_NWFILTER_BINDING = 101, /* no nwfilter binding */
|
||||
VIR_ERR_INVALID_DOMAIN_CHECKPOINT = 102, /* invalid domain checkpoint */
|
||||
VIR_ERR_NO_DOMAIN_CHECKPOINT = 103, /* domain checkpoint not found */
|
||||
VIR_ERR_NO_DOMAIN_BACKUP = 104, /* domain backup job id not found */
|
||||
|
||||
# ifdef VIR_ENUM_SENTINELS
|
||||
VIR_ERR_NUMBER_LAST
|
||||
# endif
|
||||
} virErrorNumber;
|
||||
|
||||
/**
|
||||
@@ -366,4 +373,4 @@ int virConnCopyLastError (virConnectPtr conn,
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif /* __VIR_VIRERR_H__ */
|
||||
#endif /* LIBVIRT_VIRTERROR_H */
|
||||
|
192
libvirt.spec.in
192
libvirt.spec.in
@@ -4,7 +4,7 @@
|
||||
# that's still supported by the vendor. It may work on other distros
|
||||
# or versions, but no effort will be made to ensure that going forward.
|
||||
%define min_rhel 7
|
||||
%define min_fedora 26
|
||||
%define min_fedora 28
|
||||
|
||||
%if (0%{?fedora} && 0%{?fedora} >= %{min_fedora}) || (0%{?rhel} && 0%{?rhel} >= %{min_rhel})
|
||||
%define supported_platform 1
|
||||
@@ -20,7 +20,6 @@
|
||||
# The hypervisor drivers that run in libvirtd
|
||||
%define with_qemu 0%{!?_without_qemu:1}
|
||||
%define with_lxc 0%{!?_without_lxc:1}
|
||||
%define with_uml 0%{!?_without_uml:1}
|
||||
%define with_libxl 0%{!?_without_libxl:1}
|
||||
%define with_vbox 0%{!?_without_vbox:1}
|
||||
|
||||
@@ -72,7 +71,7 @@
|
||||
%endif
|
||||
|
||||
# We need a recent enough libiscsi (>= 1.18.0)
|
||||
%if 0%{?fedora} >= 28 || 0%{?rhel} > 7
|
||||
%if 0%{?fedora} || 0%{?rhel} > 7
|
||||
%define with_storage_iscsi_direct 0%{!?_without_storage_iscsi_direct:1}
|
||||
%else
|
||||
%define with_storage_iscsi_direct 0
|
||||
@@ -83,6 +82,7 @@
|
||||
%define with_sanlock 0%{!?_without_sanlock:0}
|
||||
%define with_numad 0%{!?_without_numad:0}
|
||||
%define with_firewalld 0%{!?_without_firewalld:0}
|
||||
%define with_firewalld_zone 0%{!?_without_firewalld_zone:0}
|
||||
%define with_libssh2 0%{!?_without_libssh2:0}
|
||||
%define with_wireshark 0%{!?_without_wireshark:0}
|
||||
%define with_libssh 0%{!?_without_libssh:0}
|
||||
@@ -100,38 +100,29 @@
|
||||
%define with_vbox 0
|
||||
%endif
|
||||
|
||||
# Numactl is not available on s390[x] and ARM
|
||||
%ifarch s390 s390x %{arm}
|
||||
# Numactl is not available on many non-x86 archs
|
||||
%ifarch s390 s390x %{arm} riscv64
|
||||
%define with_numactl 0
|
||||
%endif
|
||||
|
||||
# libgfapi is built only on x86_64 on rhel
|
||||
%ifnarch x86_64
|
||||
%if 0%{?rhel}
|
||||
%define with_storage_gluster 0
|
||||
%endif
|
||||
# zfs-fuse is not available on some architectures
|
||||
%ifarch s390 s390x aarch64 riscv64
|
||||
%define with_storage_zfs 0
|
||||
%endif
|
||||
|
||||
# librados and librbd are built only on x86_64 on rhel
|
||||
%ifnarch x86_64
|
||||
%if 0%{?rhel}
|
||||
# Ceph dropping support for 32-bit hosts
|
||||
%if 0%{?fedora} >= 30
|
||||
%ifarch %{arm} %{ix86}
|
||||
%define with_storage_rbd 0
|
||||
%endif
|
||||
%endif
|
||||
|
||||
# zfs-fuse is not available on some architectures
|
||||
%ifarch s390 s390x aarch64
|
||||
%define with_storage_zfs 0
|
||||
%endif
|
||||
|
||||
|
||||
# RHEL doesn't ship OpenVZ, VBox, UML, PowerHypervisor,
|
||||
# RHEL doesn't ship OpenVZ, VBox, PowerHypervisor,
|
||||
# VMware, libxenserver (xenapi), libxenlight (Xen 4.1 and newer),
|
||||
# or HyperV.
|
||||
%if 0%{?rhel}
|
||||
%define with_openvz 0
|
||||
%define with_vbox 0
|
||||
%define with_uml 0
|
||||
%define with_phyp 0
|
||||
%define with_vmware 0
|
||||
%define with_xenapi 0
|
||||
@@ -146,6 +137,11 @@
|
||||
|
||||
%define with_firewalld 1
|
||||
|
||||
%if 0%{?fedora} >= 30 || 0%{?rhel} > 7
|
||||
%define with_firewalld_zone 0%{!?_without_firewalld_zone:1}
|
||||
%endif
|
||||
|
||||
|
||||
# fuse is used to provide virtualized /proc for LXC
|
||||
%if %{with_lxc}
|
||||
%define with_fuse 0%{!?_without_fuse:1}
|
||||
@@ -170,11 +166,7 @@
|
||||
# Enable wireshark plugins for all distros shipping libvirt 1.2.2 or newer
|
||||
%if 0%{?fedora}
|
||||
%define with_wireshark 0%{!?_without_wireshark:1}
|
||||
%endif
|
||||
%if 0%{?fedora} || 0%{?rhel} > 7
|
||||
%define wireshark_plugindir %(pkg-config --variable plugindir wireshark)
|
||||
%else
|
||||
%define wireshark_plugindir %{_libdir}/wireshark/plugins
|
||||
%define wireshark_plugindir %(pkg-config --variable plugindir wireshark)/epan
|
||||
%endif
|
||||
|
||||
# Enable libssh transport for new enough distros
|
||||
@@ -192,10 +184,10 @@
|
||||
%endif
|
||||
|
||||
|
||||
%if %{with_qemu} || %{with_lxc} || %{with_uml}
|
||||
%if %{with_qemu} || %{with_lxc}
|
||||
# numad is used to manage the CPU and memory placement dynamically,
|
||||
# it's not available on s390[x] and ARM.
|
||||
%ifnarch s390 s390x %{arm}
|
||||
# it's not available on many non-x86 architectures.
|
||||
%ifnarch s390 s390x %{arm} riscv64
|
||||
%define with_numad 0%{!?_without_numad:1}
|
||||
%endif
|
||||
%endif
|
||||
@@ -214,17 +206,17 @@
|
||||
%define enable_werror --disable-werror
|
||||
%endif
|
||||
|
||||
%if 0%{?fedora}
|
||||
%define tls_priority "@LIBVIRT,SYSTEM"
|
||||
%else
|
||||
%if 0%{?rhel} == 7
|
||||
%define tls_priority "NORMAL"
|
||||
%else
|
||||
%define tls_priority "@LIBVIRT,SYSTEM"
|
||||
%endif
|
||||
|
||||
|
||||
Summary: Library providing a simple virtualization API
|
||||
Name: libvirt
|
||||
Version: @VERSION@
|
||||
Release: 1%{?dist}%{?extra_release}
|
||||
Release: 1%{?dist}
|
||||
License: LGPLv2+
|
||||
URL: https://libvirt.org/
|
||||
|
||||
@@ -245,9 +237,9 @@ Requires: libvirt-daemon-driver-lxc = %{version}-%{release}
|
||||
%if %{with_qemu}
|
||||
Requires: libvirt-daemon-driver-qemu = %{version}-%{release}
|
||||
%endif
|
||||
%if %{with_uml}
|
||||
Requires: libvirt-daemon-driver-uml = %{version}-%{release}
|
||||
%endif
|
||||
# We had UML driver, but we've removed it.
|
||||
Obsoletes: libvirt-daemon-driver-uml <= 5.0.0
|
||||
Obsoletes: libvirt-daemon-uml <= 5.0.0
|
||||
%if %{with_vbox}
|
||||
Requires: libvirt-daemon-driver-vbox = %{version}-%{release}
|
||||
%endif
|
||||
@@ -272,7 +264,7 @@ BuildRequires: /usr/bin/pod2man
|
||||
%endif
|
||||
BuildRequires: gcc
|
||||
BuildRequires: git
|
||||
%if 0%{?fedora} >= 27 || 0%{?rhel} > 7
|
||||
%if 0%{?fedora} || 0%{?rhel} > 7
|
||||
BuildRequires: perl-interpreter
|
||||
%else
|
||||
BuildRequires: perl
|
||||
@@ -334,6 +326,8 @@ BuildRequires: libiscsi-devel
|
||||
BuildRequires: parted-devel
|
||||
# For Multipath support
|
||||
BuildRequires: device-mapper-devel
|
||||
# For XFS reflink clone support
|
||||
BuildRequires: xfsprogs-devel
|
||||
%if %{with_storage_rbd}
|
||||
BuildRequires: librados2-devel
|
||||
BuildRequires: librbd1-devel
|
||||
@@ -393,18 +387,22 @@ BuildRequires: numad
|
||||
%endif
|
||||
|
||||
%if %{with_wireshark}
|
||||
BuildRequires: wireshark-devel >= 2.1.0
|
||||
BuildRequires: wireshark-devel >= 2.4.0
|
||||
%endif
|
||||
|
||||
%if %{with_libssh}
|
||||
BuildRequires: libssh-devel >= 0.7.0
|
||||
%endif
|
||||
|
||||
%if 0%{?fedora} > 27 || 0%{?rhel} > 7
|
||||
%if 0%{?fedora} || 0%{?rhel} > 7
|
||||
BuildRequires: rpcgen
|
||||
BuildRequires: libtirpc-devel
|
||||
%endif
|
||||
|
||||
%if %{with_firewalld_zone}
|
||||
BuildRequires: firewalld-filesystem
|
||||
%endif
|
||||
|
||||
Provides: bundled(gnulib)
|
||||
|
||||
%description
|
||||
@@ -552,6 +550,9 @@ Requires: util-linux
|
||||
# From QEMU RPMs
|
||||
Requires: /usr/bin/qemu-img
|
||||
%endif
|
||||
%if !%{with_storage_rbd}
|
||||
Obsoletes: libvirt-daemon-driver-storage-rbd < %{version}-%{release}
|
||||
%endif
|
||||
|
||||
%description daemon-driver-storage-core
|
||||
The storage driver plugin for the libvirtd daemon, providing
|
||||
@@ -757,19 +758,6 @@ the Linux kernel
|
||||
%endif
|
||||
|
||||
|
||||
%if %{with_uml}
|
||||
%package daemon-driver-uml
|
||||
Summary: Uml driver plugin for the libvirtd daemon
|
||||
Requires: libvirt-daemon = %{version}-%{release}
|
||||
Requires: libvirt-libs = %{version}-%{release}
|
||||
|
||||
%description daemon-driver-uml
|
||||
The UML driver plugin for the libvirtd daemon, providing
|
||||
an implementation of the hypervisor driver APIs using
|
||||
User Mode Linux
|
||||
%endif
|
||||
|
||||
|
||||
%if %{with_vbox}
|
||||
%package daemon-driver-vbox
|
||||
Summary: VirtualBox driver plugin for the libvirtd daemon
|
||||
@@ -857,26 +845,6 @@ capabilities of LXC
|
||||
%endif
|
||||
|
||||
|
||||
%if %{with_uml}
|
||||
%package daemon-uml
|
||||
Summary: Server side daemon & driver required to run UML guests
|
||||
|
||||
Requires: libvirt-daemon = %{version}-%{release}
|
||||
Requires: libvirt-daemon-driver-uml = %{version}-%{release}
|
||||
Requires: libvirt-daemon-driver-interface = %{version}-%{release}
|
||||
Requires: libvirt-daemon-driver-network = %{version}-%{release}
|
||||
Requires: libvirt-daemon-driver-nodedev = %{version}-%{release}
|
||||
Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release}
|
||||
Requires: libvirt-daemon-driver-secret = %{version}-%{release}
|
||||
Requires: libvirt-daemon-driver-storage = %{version}-%{release}
|
||||
# There are no UML kernel RPMs in Fedora/RHEL to depend on.
|
||||
|
||||
%description daemon-uml
|
||||
Server side daemon and driver required to manage the virtualization
|
||||
capabilities of UML
|
||||
%endif
|
||||
|
||||
|
||||
%if %{with_libxl}
|
||||
%package daemon-xen
|
||||
Summary: Server side daemon & driver required to run XEN guests
|
||||
@@ -968,7 +936,7 @@ Bash completion script stub.
|
||||
%if %{with_wireshark}
|
||||
%package wireshark
|
||||
Summary: Wireshark dissector plugin for libvirt RPC transactions
|
||||
Requires: wireshark >= 1.12.6-4
|
||||
Requires: wireshark >= 2.4.0
|
||||
Requires: %{name}-libs = %{version}-%{release}
|
||||
|
||||
%description wireshark
|
||||
@@ -1082,12 +1050,6 @@ exit 1
|
||||
%define arg_vmware --without-vmware
|
||||
%endif
|
||||
|
||||
%if %{with_uml}
|
||||
%define arg_uml --with-uml
|
||||
%else
|
||||
%define arg_uml --without-uml
|
||||
%endif
|
||||
|
||||
%if %{with_storage_rbd}
|
||||
%define arg_storage_rbd --with-storage-rbd
|
||||
%else
|
||||
@@ -1142,6 +1104,12 @@ exit 1
|
||||
%define arg_firewalld --without-firewalld
|
||||
%endif
|
||||
|
||||
%if %{with_firewalld_zone}
|
||||
%define arg_firewalld_zone --with-firewalld-zone
|
||||
%else
|
||||
%define arg_firewalld_zone --without-firewalld-zone
|
||||
%endif
|
||||
|
||||
%if %{with_wireshark}
|
||||
%define arg_wireshark --with-wireshark-dissector
|
||||
%else
|
||||
@@ -1201,7 +1169,6 @@ rm -f po/stamp-po
|
||||
--with-avahi \
|
||||
--with-polkit \
|
||||
--with-libvirtd \
|
||||
%{?arg_uml} \
|
||||
%{?arg_phyp} \
|
||||
%{?arg_esx} \
|
||||
%{?arg_hyperv} \
|
||||
@@ -1241,6 +1208,7 @@ rm -f po/stamp-po
|
||||
--with-dtrace \
|
||||
--with-driver-modules \
|
||||
%{?arg_firewalld} \
|
||||
%{?arg_firewalld_zone} \
|
||||
%{?arg_wireshark} \
|
||||
--without-pm-utils \
|
||||
--with-nss-plugin \
|
||||
@@ -1330,9 +1298,6 @@ rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.libxl
|
||||
rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_libxl.aug
|
||||
rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug
|
||||
%endif
|
||||
%if ! %{with_uml}
|
||||
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.uml
|
||||
%endif
|
||||
|
||||
# Copied into libvirt-docs subpackage eventually
|
||||
mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-%{version} libvirt-docs
|
||||
@@ -1363,6 +1328,16 @@ then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
%post libs
|
||||
%if 0%{?rhel} == 7
|
||||
/sbin/ldconfig
|
||||
%endif
|
||||
|
||||
%postun libs
|
||||
%if 0%{?rhel} == 7
|
||||
/sbin/ldconfig
|
||||
%endif
|
||||
|
||||
%pre daemon
|
||||
# 'libvirt' group is just to allow password-less polkit access to
|
||||
# libvirtd. The uid number is irrelevant, so we use dynamic allocation
|
||||
@@ -1411,6 +1386,16 @@ if [ -f %{_localstatedir}/lib/rpm-state/libvirt/restart ]; then
|
||||
fi
|
||||
rm -rf %{_localstatedir}/lib/rpm-state/libvirt || :
|
||||
|
||||
%post daemon-driver-network
|
||||
%if %{with_firewalld}
|
||||
%firewalld_reload
|
||||
%endif
|
||||
|
||||
%postun daemon-driver-network
|
||||
%if %{with_firewalld}
|
||||
%firewalld_reload
|
||||
%endif
|
||||
|
||||
%post daemon-config-network
|
||||
if test $1 -eq 1 && test ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml ; then
|
||||
# see if the network used by default network creates a conflict,
|
||||
@@ -1472,16 +1457,6 @@ fi
|
||||
rm -rf %{_localstatedir}/lib/rpm-state/libvirt || :
|
||||
|
||||
|
||||
%triggerun -- libvirt < 0.9.4
|
||||
%{_bindir}/systemd-sysv-convert --save libvirtd >/dev/null 2>&1 ||:
|
||||
|
||||
# If the package is allowed to autostart:
|
||||
/bin/systemctl --no-reload enable libvirtd.service >/dev/null 2>&1 ||:
|
||||
|
||||
# Run these because the SysV package being removed won't do them
|
||||
/sbin/chkconfig --del libvirtd >/dev/null 2>&1 || :
|
||||
/bin/systemctl try-restart libvirtd.service >/dev/null 2>&1 || :
|
||||
|
||||
%if %{with_qemu}
|
||||
%pre daemon-driver-qemu
|
||||
# We want soft static allocation of well-known ids, as disk images
|
||||
@@ -1504,24 +1479,11 @@ exit 0
|
||||
%systemd_preun libvirt-guests.service
|
||||
|
||||
%post client
|
||||
|
||||
/sbin/ldconfig
|
||||
%systemd_post libvirt-guests.service
|
||||
|
||||
%postun client
|
||||
|
||||
/sbin/ldconfig
|
||||
%systemd_postun libvirt-guests.service
|
||||
|
||||
%triggerun client -- libvirt < 0.9.4
|
||||
%{_bindir}/systemd-sysv-convert --save libvirt-guests >/dev/null 2>&1 ||:
|
||||
|
||||
# If the package is allowed to autostart:
|
||||
/bin/systemctl --no-reload enable libvirt-guests.service >/dev/null 2>&1 ||:
|
||||
|
||||
# Run this because the SysV package being removed won't do them
|
||||
/sbin/chkconfig --del libvirt-guests >/dev/null 2>&1 || :
|
||||
|
||||
%if %{with_sanlock}
|
||||
%post lock-sanlock
|
||||
if getent group sanlock > /dev/null ; then
|
||||
@@ -1649,6 +1611,10 @@ exit 0
|
||||
%attr(0755, root, root) %{_libexecdir}/libvirt_leaseshelper
|
||||
%{_libdir}/%{name}/connection-driver/libvirt_driver_network.so
|
||||
|
||||
%if %{with_firewalld_zone}
|
||||
%{_prefix}/lib/firewalld/zones/libvirt.xml
|
||||
%endif
|
||||
|
||||
%files daemon-driver-nodedev
|
||||
%{_libdir}/%{name}/connection-driver/libvirt_driver_nodedev.so
|
||||
|
||||
@@ -1739,15 +1705,6 @@ exit 0
|
||||
%{_libdir}/%{name}/connection-driver/libvirt_driver_lxc.so
|
||||
%endif
|
||||
|
||||
%if %{with_uml}
|
||||
%files daemon-driver-uml
|
||||
%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/uml/
|
||||
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.uml
|
||||
%ghost %dir %{_localstatedir}/run/libvirt/uml/
|
||||
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/uml/
|
||||
%{_libdir}/%{name}/connection-driver/libvirt_driver_uml.so
|
||||
%endif
|
||||
|
||||
%if %{with_libxl}
|
||||
%files daemon-driver-libxl
|
||||
%config(noreplace) %{_sysconfdir}/libvirt/libxl.conf
|
||||
@@ -1778,10 +1735,6 @@ exit 0
|
||||
%files daemon-lxc
|
||||
%endif
|
||||
|
||||
%if %{with_uml}
|
||||
%files daemon-uml
|
||||
%endif
|
||||
|
||||
%if %{with_libxl}
|
||||
%files daemon-xen
|
||||
%endif
|
||||
@@ -1861,6 +1814,7 @@ exit 0
|
||||
%{_datadir}/libvirt/schemas/secret.rng
|
||||
%{_datadir}/libvirt/schemas/storagecommon.rng
|
||||
%{_datadir}/libvirt/schemas/storagepool.rng
|
||||
%{_datadir}/libvirt/schemas/storagepoolcaps.rng
|
||||
%{_datadir}/libvirt/schemas/storagevol.rng
|
||||
|
||||
%{_datadir}/libvirt/cpu_map/*.xml
|
||||
|
@@ -26,40 +26,34 @@ AC_DEFUN([LIBVIRT_DRIVER_CHECK_LIBXL], [
|
||||
LIBXL_CFLAGS=""
|
||||
LIBXL_FIRMWARE_DIR=""
|
||||
LIBXL_EXECBIN_DIR=""
|
||||
LIBXL_API_VERSION="-DLIBXL_API_VERSION=0x040400"
|
||||
LIBXL_API_VERSION="-DLIBXL_API_VERSION=0x040500"
|
||||
|
||||
dnl search for libxl, aka libxenlight
|
||||
dnl Xen > 4.5 introduced a pkgconfig file, check for it first
|
||||
old_with_libxl="$with_libxl"
|
||||
LIBVIRT_CHECK_PKG([LIBXL], [xenlight], [4.4.0], [true])
|
||||
LIBVIRT_CHECK_PKG([LIBXL], [xenlight], [4.6.0], [true])
|
||||
if test "x$with_libxl" = "xyes" ; then
|
||||
LIBXL_FIRMWARE_DIR=$($PKG_CONFIG --variable xenfirmwaredir xenlight)
|
||||
LIBXL_EXECBIN_DIR=$($PKG_CONFIG --variable libexec_bin xenlight)
|
||||
fi
|
||||
|
||||
dnl pkgconfig file not found, fallback to lib probe
|
||||
dnl In Fedora <= 28, the xenlight pkgconfig file is in the -runtime package
|
||||
dnl https://bugzilla.redhat.com/show_bug.cgi?id=1629643
|
||||
dnl Until Fedora 28 reaches EOL, fallback to lib probe if xenlight.pc is
|
||||
dnl not found
|
||||
if test "x$with_libxl" = "xno" ; then
|
||||
with_libxl="$old_with_libxl"
|
||||
|
||||
dnl LIBXL_API_VERSION 4.4.0 introduced a new parameter to
|
||||
dnl libxl_domain_create_restore for specifying restore parameters.
|
||||
dnl The libxl driver will make use of this new parameter for specifying
|
||||
dnl the Xen migration stream version. Specify LIBXL_API_VERSION to trigger
|
||||
dnl an error if there is too old xenlight
|
||||
libxlold_CFLAGS="$CFLAGS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $LIBXL_API_VERSION"
|
||||
LIBVIRT_CHECK_LIB([LIBXL], [xenlight], [libxl_ctx_alloc], [libxl.h], [fail="1"])
|
||||
CFLAGS="$libxlold_CFLAGS"
|
||||
LIBVIRT_CHECK_LIB([LIBXL], [xenlight], [libxl_cpupool_cpuadd_cpumap], [libxl.h], [fail="1"])
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
if test $fail = 1; then
|
||||
AC_MSG_ERROR([You must install the libxl Library from Xen >= 4.4 to compile libxenlight driver with -lxl])
|
||||
AC_MSG_ERROR([You must install the libxl Library from Xen >= 4.6 to compile libxenlight driver with -lxl])
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$with_libxl" = "yes"; then
|
||||
old_LIBS="$LIBS"
|
||||
old_CFLAGS="$CFLAGS"
|
||||
|
||||
LIBXL_CFLAGS="$LIBXL_CFLAGS $LIBXL_API_VERSION"
|
||||
|
||||
dnl If building with libxl, use the libxl utility header and lib too
|
||||
@@ -79,15 +73,11 @@ AC_DEFUN([LIBVIRT_DRIVER_CHECK_LIBXL], [
|
||||
],[
|
||||
LIBXL_LIBS="$LIBXL_LIBS -lxenstore -lxenctrl"
|
||||
])
|
||||
|
||||
dnl Check if libxl_domain_config_from_json is available for domXML to
|
||||
dnl libxl_domain_config tests
|
||||
LIBS="$LIBS -lxenlight -lxenctrl"
|
||||
AC_CHECK_FUNCS([libxl_domain_config_from_json])
|
||||
CFLAGS="$old_CFLAGS"
|
||||
LIBS="$old_LIBS"
|
||||
fi
|
||||
|
||||
dnl Check if Xen has support for PVH
|
||||
AC_CHECK_DECL(LIBXL_DOMAIN_TYPE_PVH, [AC_DEFINE([HAVE_XEN_PVH], [1], [Define to 1 if Xen has PVH support.])], [], [#include <libxl.h>])
|
||||
|
||||
AC_SUBST([LIBXL_CFLAGS])
|
||||
AC_SUBST([LIBXL_LIBS])
|
||||
])
|
||||
|
@@ -18,7 +18,7 @@ dnl <http://www.gnu.org/licenses/>.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([LIBVIRT_DRIVER_ARG_QEMU], [
|
||||
LIBVIRT_ARG_WITH_FEATURE([QEMU], [QEMU/KVM], [yes])
|
||||
LIBVIRT_ARG_WITH_FEATURE([QEMU], [QEMU/KVM], [check])
|
||||
LIBVIRT_ARG_WITH([QEMU_USER], [username to run QEMU system instance as],
|
||||
['platform dependent'])
|
||||
LIBVIRT_ARG_WITH([QEMU_GROUP], [groupname to run QEMU system instance as],
|
||||
@@ -26,6 +26,15 @@ AC_DEFUN([LIBVIRT_DRIVER_ARG_QEMU], [
|
||||
])
|
||||
|
||||
AC_DEFUN([LIBVIRT_DRIVER_CHECK_QEMU], [
|
||||
dnl There is no way qemu driver will work without JSON support
|
||||
AC_REQUIRE([LIBVIRT_CHECK_YAJL])
|
||||
if test "$with_qemu:$with_yajl" = "yes:no"; then
|
||||
AC_MSG_ERROR([YAJL or YAJL2 is required to build QEMU driver])
|
||||
fi
|
||||
if test "$with_qemu" = "check"; then
|
||||
with_qemu=$with_yajl
|
||||
fi
|
||||
|
||||
if test "$with_qemu" = "yes" ; then
|
||||
AC_DEFINE_UNQUOTED([WITH_QEMU], 1, [whether QEMU driver is enabled])
|
||||
fi
|
||||
@@ -35,8 +44,42 @@ AC_DEFUN([LIBVIRT_DRIVER_CHECK_QEMU], [
|
||||
default_qemu_user=root
|
||||
default_qemu_group=wheel
|
||||
else
|
||||
default_qemu_user=root
|
||||
default_qemu_group=root
|
||||
# Try to integrate gracefully with downstream packages by running QEMU
|
||||
# processes using the same user and group they would
|
||||
case $(grep ^ID= /etc/os-release 2>/dev/null) in
|
||||
*arch*)
|
||||
default_qemu_user=nobody
|
||||
default_qemu_group=nobody
|
||||
;;
|
||||
*centos*|*fedora*|*gentoo*|*rhel*|*suse*)
|
||||
default_qemu_user=qemu
|
||||
default_qemu_group=qemu
|
||||
;;
|
||||
*debian*)
|
||||
default_qemu_user=libvirt-qemu
|
||||
default_qemu_group=libvirt-qemu
|
||||
;;
|
||||
*ubuntu*)
|
||||
default_qemu_user=libvirt-qemu
|
||||
default_qemu_group=kvm
|
||||
;;
|
||||
*)
|
||||
default_qemu_user=root
|
||||
default_qemu_group=root
|
||||
;;
|
||||
esac
|
||||
# If the expected user and group don't exist, or we haven't hit any
|
||||
# of the cases above because we're running on an unknown OS, the only
|
||||
# sensible fallback is root:root
|
||||
AC_MSG_CHECKING([for QEMU credentials ($default_qemu_user:$default_qemu_group)])
|
||||
if getent passwd "$default_qemu_user" >/dev/null 2>&1 && \
|
||||
getent group "$default_qemu_group" >/dev/null 2>&1; then
|
||||
AC_MSG_RESULT([ok])
|
||||
else
|
||||
AC_MSG_RESULT([not found, using root:root instead])
|
||||
default_qemu_user=root
|
||||
default_qemu_group=root
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$with_qemu_user" = "xplatform dependent" ; then
|
||||
@@ -69,5 +112,10 @@ AC_DEFUN([LIBVIRT_DRIVER_RESULT_QEMU], [
|
||||
])
|
||||
|
||||
AC_DEFUN([LIBVIRT_RESULT_QEMU_PRIVILEGES], [
|
||||
LIBVIRT_RESULT([QEMU], [$QEMU_USER:$QEMU_GROUP])
|
||||
if test "$QEMU_USER" = "root"; then
|
||||
LIBVIRT_RESULT([QEMU], [$QEMU_USER:$QEMU_GROUP],
|
||||
[!!! running QEMU as root is strongly discouraged !!!])
|
||||
else
|
||||
LIBVIRT_RESULT([QEMU], [$QEMU_USER:$QEMU_GROUP])
|
||||
fi
|
||||
])
|
||||
|
@@ -1,54 +0,0 @@
|
||||
dnl The UML driver
|
||||
dnl
|
||||
dnl Copyright (C) 2005-2015 Red Hat, Inc.
|
||||
dnl
|
||||
dnl This library is free software; you can redistribute it and/or
|
||||
dnl modify it under the terms of the GNU Lesser General Public
|
||||
dnl License as published by the Free Software Foundation; either
|
||||
dnl version 2.1 of the License, or (at your option) any later version.
|
||||
dnl
|
||||
dnl This library is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
dnl Lesser General Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU Lesser General Public
|
||||
dnl License along with this library. If not, see
|
||||
dnl <http://www.gnu.org/licenses/>.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([LIBVIRT_DRIVER_ARG_UML],[
|
||||
LIBVIRT_ARG_WITH_FEATURE([UML], [UML], [check])
|
||||
])
|
||||
|
||||
AC_DEFUN([LIBVIRT_DRIVER_CHECK_UML],[
|
||||
if test "$with_libvirtd" = "no" || test "$with_linux" = "no"; then
|
||||
if test "$with_uml" = "yes"; then
|
||||
AC_MSG_ERROR([The UML driver cannot be enabled])
|
||||
elif test "$with_uml" = "check"; then
|
||||
with_uml="no"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$with_uml" = "yes" || test "$with_uml" = "check"; then
|
||||
AC_CHECK_HEADER([sys/inotify.h], [
|
||||
with_uml=yes
|
||||
], [
|
||||
if test "$with_uml" = "check"; then
|
||||
with_uml=no
|
||||
AC_MSG_NOTICE([<sys/inotify.h> is required for the UML driver, disabling it])
|
||||
else
|
||||
AC_MSG_ERROR([The <sys/inotify.h> is required for the UML driver. Upgrade your libc6.])
|
||||
fi
|
||||
])
|
||||
fi
|
||||
|
||||
if test "$with_uml" = "yes" ; then
|
||||
AC_DEFINE_UNQUOTED([WITH_UML], 1, [whether UML driver is enabled])
|
||||
fi
|
||||
AM_CONDITIONAL([WITH_UML], [test "$with_uml" = "yes"])
|
||||
])
|
||||
|
||||
AC_DEFUN([LIBVIRT_DRIVER_RESULT_UML],[
|
||||
LIBVIRT_RESULT([UML], [$with_uml])
|
||||
])
|
45
m4/virt-firewalld-zone.m4
Normal file
45
m4/virt-firewalld-zone.m4
Normal file
@@ -0,0 +1,45 @@
|
||||
dnl firewalld_zone check - whether or not to install the firewall "libvirt" zone
|
||||
dnl
|
||||
dnl Copyright (C) 2019 Red Hat, Inc.
|
||||
dnl
|
||||
dnl This library is free software; you can redistribute it and/or
|
||||
dnl modify it under the terms of the GNU Lesser General Public
|
||||
dnl License as published by the Free Software Foundation; either
|
||||
dnl version 2.1 of the License, or (at your option) any later version.
|
||||
dnl
|
||||
dnl This library is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
dnl Lesser General Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU Lesser General Public
|
||||
dnl License along with this library. If not, see
|
||||
dnl <http://www.gnu.org/licenses/>.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([LIBVIRT_ARG_FIREWALLD_ZONE], [
|
||||
LIBVIRT_ARG_WITH([FIREWALLD_ZONE], [Whether to install firewalld libvirt zone], [check])
|
||||
])
|
||||
|
||||
AC_DEFUN([LIBVIRT_CHECK_FIREWALLD_ZONE], [
|
||||
AC_REQUIRE([LIBVIRT_CHECK_FIREWALLD])
|
||||
AC_MSG_CHECKING([for whether to install firewalld libvirt zone])
|
||||
|
||||
if test "x$with_firewalld_zone" = "xcheck" ; then
|
||||
with_firewalld_zone=$with_firewalld
|
||||
fi
|
||||
|
||||
if test "x$with_firewalld_zone" = "xyes" ; then
|
||||
if test "x$with_firewalld" != "xyes" ; then
|
||||
AC_MSG_ERROR([You must have firewalld support enabled to enable firewalld-zone])
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED([WITH_FIREWALLD_ZONE], [1], [whether firewalld libvirt zone is installed])
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL([WITH_FIREWALLD_ZONE], [test "x$with_firewalld_zone" != "xno"])
|
||||
AC_MSG_RESULT($with_firewalld_zone)
|
||||
])
|
||||
|
||||
AC_DEFUN([LIBVIRT_RESULT_FIREWALLD_ZONE], [
|
||||
LIBVIRT_RESULT([firewalld-zone], [$with_firewalld_zone])
|
||||
])
|
@@ -32,10 +32,10 @@ AC_DEFUN([LIBVIRT_CHECK_FIREWALLD], [
|
||||
if test "x$with_dbus" != "xyes" ; then
|
||||
AC_MSG_ERROR([You must have dbus enabled for firewalld support])
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED([HAVE_FIREWALLD], [1], [whether firewalld support is enabled])
|
||||
AC_DEFINE_UNQUOTED([WITH_FIREWALLD], [1], [whether firewalld support is enabled])
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL([HAVE_FIREWALLD], [test "x$with_firewalld" != "xno"])
|
||||
AM_CONDITIONAL([WITH_FIREWALLD], [test "x$with_firewalld" != "xno"])
|
||||
])
|
||||
|
||||
AC_DEFUN([LIBVIRT_RESULT_FIREWALLD], [
|
||||
|
@@ -19,53 +19,33 @@ dnl
|
||||
|
||||
AC_DEFUN([LIBVIRT_ARG_INIT_SCRIPT],[
|
||||
LIBVIRT_ARG_WITH([INIT_SCRIPT],
|
||||
[Style of init script to install: redhat, systemd,
|
||||
systemd+redhat, upstart, check, none], [check])
|
||||
[Style of init script to install: systemd, check, none],
|
||||
[check])
|
||||
])
|
||||
|
||||
AC_DEFUN([LIBVIRT_CHECK_INIT_SCRIPT],[
|
||||
AC_MSG_CHECKING([for init script type])
|
||||
|
||||
init_redhat=no
|
||||
init_systemd=no
|
||||
init_upstart=no
|
||||
|
||||
if test "$with_init_script" = check && test "$cross_compiling" = yes; then
|
||||
with_init_script=none
|
||||
fi
|
||||
if test "$with_init_script" = check && type systemctl >/dev/null 2>&1; then
|
||||
with_init_script=systemd
|
||||
fi
|
||||
if test "$with_init_script" = check && test -f /etc/redhat-release; then
|
||||
with_init_script=redhat
|
||||
fi
|
||||
if test "$with_init_script" = check; then
|
||||
with_init_script=none
|
||||
fi
|
||||
|
||||
AS_CASE([$with_init_script],
|
||||
[systemd+redhat],[
|
||||
init_redhat=yes
|
||||
init_systemd=yes
|
||||
],
|
||||
[systemd],[
|
||||
init_systemd=yes
|
||||
],
|
||||
[upstart],[
|
||||
init_upstart=yes
|
||||
],
|
||||
[redhat],[
|
||||
init_redhat=yes
|
||||
],
|
||||
[systemd],[],
|
||||
[none],[],
|
||||
[*],[
|
||||
AC_MSG_ERROR([Unknown initscript flavour $with_init_script])
|
||||
]
|
||||
)
|
||||
|
||||
AM_CONDITIONAL([LIBVIRT_INIT_SCRIPT_RED_HAT], test "$init_redhat" = "yes")
|
||||
AM_CONDITIONAL([LIBVIRT_INIT_SCRIPT_UPSTART], test "$init_upstart" = "yes")
|
||||
AM_CONDITIONAL([LIBVIRT_INIT_SCRIPT_SYSTEMD], test "$init_systemd" = "yes")
|
||||
AM_CONDITIONAL([LIBVIRT_INIT_SCRIPT_SYSTEMD],
|
||||
[test "$with_init_script" = "systemd"])
|
||||
|
||||
AC_MSG_RESULT($with_init_script)
|
||||
])
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user