Compare commits
98 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dbe2f2a9fe | |||
| 2f8d71e670 | |||
| 9464680689 | |||
| aaed945b61 | |||
| 83def04a25 | |||
| 535bbcdd91 | |||
| 417e4c9cf7 | |||
| 24d349fa37 | |||
| 9f3b22fec4 | |||
| 7285a57f5c | |||
| 9944fa190c | |||
| 1a44dca7d4 | |||
| 0c2262d602 | |||
| da598118cf | |||
| da34e517db | |||
| 7b17ccd035 | |||
| 908a2f2a46 | |||
| acf19787de | |||
| c269619b9a | |||
| 3f6336f446 | |||
| a552a10ec8 | |||
| bfb8157052 | |||
| edb5200d83 | |||
| fe3f90dedd | |||
| 437df85540 | |||
| 2d6cbe6672 | |||
| 97a323d7c2 | |||
| cb839d3dfc | |||
| dc6b512f3c | |||
| ac122f4525 | |||
| 7744acbb6b | |||
| 3807f07c15 | |||
| e484fdc92b | |||
| 6752fe8c9e | |||
| 15f52369ae | |||
| 65a0e26138 | |||
| 497e096592 | |||
| 03a98aaf59 | |||
| 5845f1efec | |||
| a8d01eb9d7 | |||
| 6d76ba5956 | |||
| a11202d9e2 | |||
| bbfa59c8da | |||
| b97ad8956c | |||
| f9639a0012 | |||
| c71e60c76c | |||
| 9764121247 | |||
| a18ed3c492 | |||
| 9e2eeb32e3 | |||
| 8bf91f5d22 | |||
| 91d8eff569 | |||
| a761ea338f | |||
| 7eef88add4 | |||
| 0c88a64234 | |||
| c2f3be1f4d | |||
| 18b1c9d77e | |||
| 4528832026 | |||
| 037cd36ba2 | |||
| b94fb6a393 | |||
| b0c05ac2ae | |||
| 15c305caf3 | |||
| bc1b3e59a7 | |||
| 3c4492c415 | |||
| fecc0295a2 | |||
| 325dc837c6 | |||
| 5a45cb7f0d | |||
| 21269530e8 | |||
| fc18e983e7 | |||
| 4a7cc743a9 | |||
| 4398397311 | |||
| 401f9087bc | |||
| dd3698988e | |||
| 3df49002c2 | |||
| 1bf0aedb9f | |||
| 79accd5a6e | |||
| 422d548fce | |||
| 20ec6e955c | |||
| 406a235cbc | |||
| 4d15e56a38 | |||
| 8693111790 | |||
| 8461a521f2 | |||
| 511e2c5124 | |||
| 749dc3d3cb | |||
| 73c9e38f2c | |||
| afe8184d3f | |||
| 7d77bf76aa | |||
| 7f0f1b831e | |||
| d964be0097 | |||
| a2479f539e | |||
| c2c89ec6a3 | |||
| d61e2404ba | |||
| a2be167dfe | |||
| 15ca09e1da | |||
| 2cc07e6366 | |||
| 4dd4fe78a4 | |||
| 0bc22fb6f7 | |||
| 76097a6961 | |||
| 98cbf39fd3 |
@@ -0,0 +1,31 @@
|
||||
[suppress_function]
|
||||
symbol_version_regexp = LIBVIRT_PRIVATE.*
|
||||
soname_regexp = libvirt\\.so.*
|
||||
|
||||
[suppress_function]
|
||||
symbol_version_regexp = LIBVIRT_ADMIN_PRIVATE.*
|
||||
soname_regexp = libvirt-admin\\.so.*
|
||||
|
||||
[suppress_variable]
|
||||
symbol_version_regexp = LIBVIRT_PRIVATE.*
|
||||
soname_regexp = libvirt\\.so.*
|
||||
|
||||
[suppress_variable]
|
||||
symbol_version_regexp = LIBVIRT_ADMIN_PRIVATE.*
|
||||
soname_regexp = libvirt-admin\\.so.*
|
||||
|
||||
[suppress_function]
|
||||
symbol_version_regexp = .*
|
||||
soname_regexp = libvirt_storage_.*\\.so.*
|
||||
|
||||
[suppress_variable]
|
||||
symbol_version_regexp = .*
|
||||
soname_regexp = libvirt_storage_.*\\.so.*
|
||||
|
||||
[suppress_function]
|
||||
symbol_version_regexp = .*
|
||||
soname_regexp = libvirt_driver_.*\\.so.*
|
||||
|
||||
[suppress_variable]
|
||||
symbol_version_regexp = .*
|
||||
soname_regexp = libvirt_driver_.*\\.so.*
|
||||
@@ -0,0 +1,35 @@
|
||||
From 9493c9b79dc541ec9e0fd73c6d87bdf8d30aaa90 Mon Sep 17 00:00:00 2001
|
||||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Mon, 1 Aug 2022 15:20:38 -0400
|
||||
Subject: [PATCH] lxc: containter: fix build with glibc 2.36
|
||||
Content-type: text/plain
|
||||
|
||||
With glibc 2.36, sys/mount.h and linux/mount.h conflict:
|
||||
https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E
|
||||
|
||||
lxc_container.c imports sys/mount.h and linux/fs.h, which pulls in
|
||||
linux/mount.h.
|
||||
|
||||
linux/fs.h isn't required here though. glibc sys/mount.h has had
|
||||
MS_MOVE since 2.12 in 2010
|
||||
|
||||
Reviewed-by: Erik Skultety <eskultet@redhat.com>
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
---
|
||||
src/lxc/lxc_container.c | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
|
||||
index b5278831da..a5401c2186 100644
|
||||
--- a/src/lxc/lxc_container.c
|
||||
+++ b/src/lxc/lxc_container.c
|
||||
@@ -33,9 +33,6 @@
|
||||
/* Yes, we want linux private one, for _syscall2() macro */
|
||||
#include <linux/unistd.h>
|
||||
|
||||
-/* For MS_MOVE */
|
||||
-#include <linux/fs.h>
|
||||
-
|
||||
#if WITH_CAPNG
|
||||
# include <cap-ng.h>
|
||||
#endif
|
||||
@@ -1,149 +0,0 @@
|
||||
From 092320f10b47bd6aca1f29278fcdc6b0efaf636a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
|
||||
Date: Mon, 18 Mar 2019 10:58:48 +0000
|
||||
Subject: [PATCH 1/5] storage: split off code for calling rbd_list
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The rbd_list method has a quite unpleasant signature returning an
|
||||
array of strings in a single buffer instead of an array. It is
|
||||
being deprecated in favour of rbd_list2. To maintain clarity of
|
||||
code when supporting both APIs in parallel, split the rbd_list
|
||||
code out into a separate method.
|
||||
|
||||
In splitting this we now honour the rbd_list failures.
|
||||
|
||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
||||
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
(cherry picked from commit 28c8403ed07896d6d7e06d7726ed904027206719)
|
||||
---
|
||||
src/storage/storage_backend_rbd.c | 83 +++++++++++++++++++++----------
|
||||
1 file changed, 58 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/src/storage/storage_backend_rbd.c b/src/storage/storage_backend_rbd.c
|
||||
index 2b7af1db23..0865163756 100644
|
||||
--- a/src/storage/storage_backend_rbd.c
|
||||
+++ b/src/storage/storage_backend_rbd.c
|
||||
@@ -565,19 +565,68 @@ volStorageBackendRBDRefreshVolInfo(virStorageVolDefPtr vol,
|
||||
return ret;
|
||||
}
|
||||
|
||||
+
|
||||
+static char **
|
||||
+virStorageBackendRBDGetVolNames(virStorageBackendRBDStatePtr ptr)
|
||||
+{
|
||||
+ char **names = NULL;
|
||||
+ size_t nnames = 0;
|
||||
+ int rc;
|
||||
+ size_t max_size = 1024;
|
||||
+ VIR_AUTOFREE(char *) namebuf = NULL;
|
||||
+ const char *name;
|
||||
+
|
||||
+ while (true) {
|
||||
+ if (VIR_ALLOC_N(namebuf, max_size) < 0)
|
||||
+ goto error;
|
||||
+
|
||||
+ rc = rbd_list(ptr->ioctx, namebuf, &max_size);
|
||||
+ if (rc >= 0)
|
||||
+ break;
|
||||
+ if (rc != -ERANGE) {
|
||||
+ virReportSystemError(-rc, "%s", _("Unable to list RBD images"));
|
||||
+ goto error;
|
||||
+ }
|
||||
+ VIR_FREE(namebuf);
|
||||
+ }
|
||||
+
|
||||
+ for (name = namebuf; name < namebuf + max_size;) {
|
||||
+ VIR_AUTOFREE(char *) namedup = NULL;
|
||||
+
|
||||
+ if (STREQ(name, ""))
|
||||
+ break;
|
||||
+
|
||||
+ if (VIR_STRDUP(namedup, name) < 0)
|
||||
+ goto error;
|
||||
+
|
||||
+ if (VIR_APPEND_ELEMENT(names, nnames, namedup) < 0)
|
||||
+ goto error;
|
||||
+
|
||||
+ name += strlen(name) + 1;
|
||||
+ }
|
||||
+
|
||||
+ if (VIR_EXPAND_N(names, nnames, 1) < 0)
|
||||
+ goto error;
|
||||
+
|
||||
+ return names;
|
||||
+
|
||||
+ error:
|
||||
+ virStringListFreeCount(names, nnames);
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+
|
||||
static int
|
||||
virStorageBackendRBDRefreshPool(virStoragePoolObjPtr pool)
|
||||
{
|
||||
- size_t max_size = 1024;
|
||||
int ret = -1;
|
||||
- int len = -1;
|
||||
int r = 0;
|
||||
- char *name;
|
||||
virStoragePoolDefPtr def = virStoragePoolObjGetDef(pool);
|
||||
virStorageBackendRBDStatePtr ptr = NULL;
|
||||
struct rados_cluster_stat_t clusterstat;
|
||||
struct rados_pool_stat_t poolstat;
|
||||
- VIR_AUTOFREE(char *) names = NULL;
|
||||
+ char **names = NULL;
|
||||
+ size_t i;
|
||||
|
||||
if (!(ptr = virStorageBackendRBDNewState(pool)))
|
||||
goto cleanup;
|
||||
@@ -602,33 +651,16 @@ virStorageBackendRBDRefreshPool(virStoragePoolObjPtr pool)
|
||||
def->source.name, clusterstat.kb, clusterstat.kb_avail,
|
||||
poolstat.num_bytes);
|
||||
|
||||
- while (true) {
|
||||
- if (VIR_ALLOC_N(names, max_size) < 0)
|
||||
- goto cleanup;
|
||||
-
|
||||
- len = rbd_list(ptr->ioctx, names, &max_size);
|
||||
- if (len >= 0)
|
||||
- break;
|
||||
- if (len != -ERANGE) {
|
||||
- VIR_WARN("%s", "A problem occurred while listing RBD images");
|
||||
- goto cleanup;
|
||||
- }
|
||||
- VIR_FREE(names);
|
||||
- }
|
||||
+ if (!(names = virStorageBackendRBDGetVolNames(ptr)))
|
||||
+ goto cleanup;
|
||||
|
||||
- for (name = names; name < names + max_size;) {
|
||||
+ for (i = 0; names[i] != NULL; i++) {
|
||||
VIR_AUTOPTR(virStorageVolDef) vol = NULL;
|
||||
|
||||
- if (STREQ(name, ""))
|
||||
- break;
|
||||
-
|
||||
if (VIR_ALLOC(vol) < 0)
|
||||
goto cleanup;
|
||||
|
||||
- if (VIR_STRDUP(vol->name, name) < 0)
|
||||
- goto cleanup;
|
||||
-
|
||||
- name += strlen(name) + 1;
|
||||
+ VIR_STEAL_PTR(vol->name, names[i]);
|
||||
|
||||
r = volStorageBackendRBDRefreshVolInfo(vol, pool, ptr);
|
||||
|
||||
@@ -661,6 +693,7 @@ virStorageBackendRBDRefreshPool(virStoragePoolObjPtr pool)
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
+ virStringListFree(names);
|
||||
virStorageBackendRBDFreeState(&ptr);
|
||||
return ret;
|
||||
}
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -0,0 +1,239 @@
|
||||
From 99b40587e8cd83a136d94e208d32a80be76dc22a Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <99b40587e8cd83a136d94e208d32a80be76dc22a.1666875466.git.crobinso@redhat.com>
|
||||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Thu, 27 Oct 2022 08:51:25 -0400
|
||||
Subject: [PATCH] tests: Fix libxlxml2domconfigtest with latest xen
|
||||
Content-type: text/plain
|
||||
|
||||
shadow_memkb is populated from a libxl API call, and the value can
|
||||
change. For example:
|
||||
https://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=2c992810854a15b41be920519ce83a4a328d5168
|
||||
|
||||
Mock libxl_get_required_shadow_memory to give consistent output
|
||||
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
---
|
||||
tests/libxlmock.c | 11 +++++++++++
|
||||
tests/libxlxml2domconfigdata/basic-hvm.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/basic-pv.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/basic-pvh.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/cpu-shares-hvm.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json | 2 +-
|
||||
.../fullvirt-cpuid-legacy-nest.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/fullvirt-cpuid.json | 2 +-
|
||||
.../libxlxml2domconfigdata/max-eventchannels-hvm.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/max-gntframes-hvm.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/moredevs-hvm.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/multiple-ip.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/variable-clock-hvm.json | 2 +-
|
||||
.../libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/vnuma-hvm.json | 2 +-
|
||||
15 files changed, 25 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/tests/libxlmock.c b/tests/libxlmock.c
|
||||
index 0e4bf7df52..4754597e5b 100644
|
||||
--- a/tests/libxlmock.c
|
||||
+++ b/tests/libxlmock.c
|
||||
@@ -109,6 +109,17 @@ VIR_MOCK_STUB_RET_ARGS(bind,
|
||||
const struct sockaddr *, addr,
|
||||
socklen_t, addrlen)
|
||||
|
||||
+VIR_MOCK_IMPL_RET_ARGS(libxl_get_required_shadow_memory,
|
||||
+ unsigned long,
|
||||
+ unsigned long, maxmem_kb,
|
||||
+ unsigned int, smp_cpus)
|
||||
+{
|
||||
+ /* silence gcc warning about unused function */
|
||||
+ if (0)
|
||||
+ real_libxl_get_required_shadow_memory(maxmem_kb, smp_cpus);
|
||||
+ return 1234;
|
||||
+}
|
||||
+
|
||||
VIR_MOCK_IMPL_RET_ARGS(__xstat, int,
|
||||
int, ver,
|
||||
const char *, path,
|
||||
diff --git a/tests/libxlxml2domconfigdata/basic-hvm.json b/tests/libxlxml2domconfigdata/basic-hvm.json
|
||||
index 87f8cb7d8a..d30875420d 100644
|
||||
--- a/tests/libxlxml2domconfigdata/basic-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/basic-hvm.json
|
||||
@@ -15,7 +15,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 12288,
|
||||
+ "shadow_memkb": 1234,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
"sched_params": {
|
||||
diff --git a/tests/libxlxml2domconfigdata/basic-pv.json b/tests/libxlxml2domconfigdata/basic-pv.json
|
||||
index b71c3b0f49..32d188fabd 100644
|
||||
--- a/tests/libxlxml2domconfigdata/basic-pv.json
|
||||
+++ b/tests/libxlxml2domconfigdata/basic-pv.json
|
||||
@@ -14,7 +14,7 @@
|
||||
],
|
||||
"max_memkb": 524288,
|
||||
"target_memkb": 524288,
|
||||
- "shadow_memkb": 8192,
|
||||
+ "shadow_memkb": 1234,
|
||||
"sched_params": {
|
||||
|
||||
},
|
||||
diff --git a/tests/libxlxml2domconfigdata/basic-pvh.json b/tests/libxlxml2domconfigdata/basic-pvh.json
|
||||
index 48365c9026..f51957aa85 100644
|
||||
--- a/tests/libxlxml2domconfigdata/basic-pvh.json
|
||||
+++ b/tests/libxlxml2domconfigdata/basic-pvh.json
|
||||
@@ -14,7 +14,7 @@
|
||||
],
|
||||
"max_memkb": 524288,
|
||||
"target_memkb": 524288,
|
||||
- "shadow_memkb": 8192,
|
||||
+ "shadow_memkb": 1234,
|
||||
"sched_params": {
|
||||
|
||||
},
|
||||
diff --git a/tests/libxlxml2domconfigdata/cpu-shares-hvm.json b/tests/libxlxml2domconfigdata/cpu-shares-hvm.json
|
||||
index 2aa97e88c5..15105c83ad 100644
|
||||
--- a/tests/libxlxml2domconfigdata/cpu-shares-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/cpu-shares-hvm.json
|
||||
@@ -15,7 +15,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 12288,
|
||||
+ "shadow_memkb": 1234,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
"sched_params": {
|
||||
diff --git a/tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json b/tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json
|
||||
index a2d46797aa..26f5abefee 100644
|
||||
--- a/tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json
|
||||
+++ b/tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json
|
||||
@@ -11,7 +11,7 @@
|
||||
],
|
||||
"max_memkb": 592896,
|
||||
"target_memkb": 403456,
|
||||
- "shadow_memkb": 5656,
|
||||
+ "shadow_memkb": 1234,
|
||||
"sched_params": {
|
||||
},
|
||||
"apic": "True",
|
||||
diff --git a/tests/libxlxml2domconfigdata/fullvirt-cpuid-legacy-nest.json b/tests/libxlxml2domconfigdata/fullvirt-cpuid-legacy-nest.json
|
||||
index 6290655c20..740b82d2e6 100644
|
||||
--- a/tests/libxlxml2domconfigdata/fullvirt-cpuid-legacy-nest.json
|
||||
+++ b/tests/libxlxml2domconfigdata/fullvirt-cpuid-legacy-nest.json
|
||||
@@ -11,7 +11,7 @@
|
||||
],
|
||||
"max_memkb": 592896,
|
||||
"target_memkb": 403456,
|
||||
- "shadow_memkb": 5656,
|
||||
+ "shadow_memkb": 1234,
|
||||
"cpuid": [
|
||||
{
|
||||
"leaf": 1,
|
||||
diff --git a/tests/libxlxml2domconfigdata/fullvirt-cpuid.json b/tests/libxlxml2domconfigdata/fullvirt-cpuid.json
|
||||
index 811a4f0ac7..8bf41894a5 100644
|
||||
--- a/tests/libxlxml2domconfigdata/fullvirt-cpuid.json
|
||||
+++ b/tests/libxlxml2domconfigdata/fullvirt-cpuid.json
|
||||
@@ -11,7 +11,7 @@
|
||||
],
|
||||
"max_memkb": 592896,
|
||||
"target_memkb": 403456,
|
||||
- "shadow_memkb": 5656,
|
||||
+ "shadow_memkb": 1234,
|
||||
"cpuid": [
|
||||
{
|
||||
"leaf": 1,
|
||||
diff --git a/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json b/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json
|
||||
index 4a5b0ca65f..6f0daa065f 100644
|
||||
--- a/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json
|
||||
@@ -15,7 +15,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 12288,
|
||||
+ "shadow_memkb": 1234,
|
||||
"event_channels": 2047,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
diff --git a/tests/libxlxml2domconfigdata/max-gntframes-hvm.json b/tests/libxlxml2domconfigdata/max-gntframes-hvm.json
|
||||
index 2883d057ff..35de588abc 100644
|
||||
--- a/tests/libxlxml2domconfigdata/max-gntframes-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/max-gntframes-hvm.json
|
||||
@@ -15,7 +15,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 12288,
|
||||
+ "shadow_memkb": 1234,
|
||||
"max_grant_frames": 64,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
diff --git a/tests/libxlxml2domconfigdata/moredevs-hvm.json b/tests/libxlxml2domconfigdata/moredevs-hvm.json
|
||||
index 58cf32a8d4..bdc9afc29b 100644
|
||||
--- a/tests/libxlxml2domconfigdata/moredevs-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/moredevs-hvm.json
|
||||
@@ -17,7 +17,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 12288,
|
||||
+ "shadow_memkb": 1234,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
"sched_params": {
|
||||
diff --git a/tests/libxlxml2domconfigdata/multiple-ip.json b/tests/libxlxml2domconfigdata/multiple-ip.json
|
||||
index 2db98b82f6..e0b37aa795 100644
|
||||
--- a/tests/libxlxml2domconfigdata/multiple-ip.json
|
||||
+++ b/tests/libxlxml2domconfigdata/multiple-ip.json
|
||||
@@ -14,7 +14,7 @@
|
||||
],
|
||||
"max_memkb": 524288,
|
||||
"target_memkb": 524288,
|
||||
- "shadow_memkb": 8192,
|
||||
+ "shadow_memkb": 1234,
|
||||
"sched_params": {
|
||||
|
||||
},
|
||||
diff --git a/tests/libxlxml2domconfigdata/variable-clock-hvm.json b/tests/libxlxml2domconfigdata/variable-clock-hvm.json
|
||||
index 9a25d51da2..3c131c603c 100644
|
||||
--- a/tests/libxlxml2domconfigdata/variable-clock-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/variable-clock-hvm.json
|
||||
@@ -15,7 +15,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 12288,
|
||||
+ "shadow_memkb": 1234,
|
||||
"rtc_timeoffset": 3600,
|
||||
"localtime": "True",
|
||||
"device_model_version": "qemu_xen",
|
||||
diff --git a/tests/libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json b/tests/libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json
|
||||
index 6cda8d0252..6725df9112 100644
|
||||
--- a/tests/libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json
|
||||
+++ b/tests/libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json
|
||||
@@ -103,7 +103,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 14336,
|
||||
+ "shadow_memkb": 1234,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
"sched_params": {
|
||||
diff --git a/tests/libxlxml2domconfigdata/vnuma-hvm.json b/tests/libxlxml2domconfigdata/vnuma-hvm.json
|
||||
index f578ccd3d3..2556c82d5f 100644
|
||||
--- a/tests/libxlxml2domconfigdata/vnuma-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/vnuma-hvm.json
|
||||
@@ -103,7 +103,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 14336,
|
||||
+ "shadow_memkb": 1234,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
"sched_params": {
|
||||
--
|
||||
2.37.3
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
From e8ec2592202387cca8e45cf15bd55ed5a952f3e3 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
|
||||
Date: Mon, 18 Mar 2019 11:11:38 +0000
|
||||
Subject: [PATCH 2/5] storage: add support for new rbd_list2 method
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The rbd_list method has been deprecated in Ceph >= 14.0.0
|
||||
in favour of the new rbd_list2 method which populates an
|
||||
array of structs.
|
||||
|
||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
||||
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
(cherry picked from commit 3aa190f2a43a632b542a6ba751a6c3ab4d51f1dd)
|
||||
---
|
||||
m4/virt-storage-rbd.m4 | 1 +
|
||||
src/storage/storage_backend_rbd.c | 43 +++++++++++++++++++++++++++++++
|
||||
2 files changed, 44 insertions(+)
|
||||
|
||||
diff --git a/m4/virt-storage-rbd.m4 b/m4/virt-storage-rbd.m4
|
||||
index 17e2115309..f3d9d04908 100644
|
||||
--- a/m4/virt-storage-rbd.m4
|
||||
+++ b/m4/virt-storage-rbd.m4
|
||||
@@ -33,6 +33,7 @@ AC_DEFUN([LIBVIRT_STORAGE_CHECK_RBD], [
|
||||
old_LIBS="$LIBS"
|
||||
LIBS="$LIBS $LIBRBD_LIBS"
|
||||
AC_CHECK_FUNCS([rbd_get_features],[],[LIBRBD_FOUND=no])
|
||||
+ AC_CHECK_FUNCS([rbd_list2])
|
||||
LIBS="$old_LIBS"
|
||||
fi
|
||||
|
||||
diff --git a/src/storage/storage_backend_rbd.c b/src/storage/storage_backend_rbd.c
|
||||
index 0865163756..bfc3419f9c 100644
|
||||
--- a/src/storage/storage_backend_rbd.c
|
||||
+++ b/src/storage/storage_backend_rbd.c
|
||||
@@ -566,6 +566,48 @@ volStorageBackendRBDRefreshVolInfo(virStorageVolDefPtr vol,
|
||||
}
|
||||
|
||||
|
||||
+#ifdef HAVE_RBD_LIST2
|
||||
+static char **
|
||||
+virStorageBackendRBDGetVolNames(virStorageBackendRBDStatePtr ptr)
|
||||
+{
|
||||
+ char **names = NULL;
|
||||
+ size_t nnames = 0;
|
||||
+ int rc;
|
||||
+ rbd_image_spec_t *images = NULL;
|
||||
+ size_t nimages = 16;
|
||||
+ size_t i;
|
||||
+
|
||||
+ while (true) {
|
||||
+ if (VIR_ALLOC_N(images, nimages) < 0)
|
||||
+ goto error;
|
||||
+
|
||||
+ rc = rbd_list2(ptr->ioctx, images, &nimages);
|
||||
+ if (rc >= 0)
|
||||
+ break;
|
||||
+ if (rc != -ERANGE) {
|
||||
+ virReportSystemError(-rc, "%s", _("Unable to list RBD images"));
|
||||
+ goto error;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (VIR_ALLOC_N(names, nimages + 1) < 0)
|
||||
+ goto error;
|
||||
+ nnames = nimages;
|
||||
+
|
||||
+ for (i = 0; i < nimages; i++)
|
||||
+ VIR_STEAL_PTR(names[i], images->name);
|
||||
+
|
||||
+ return names;
|
||||
+
|
||||
+ error:
|
||||
+ virStringListFreeCount(names, nnames);
|
||||
+ rbd_image_spec_list_cleanup(images, nimages);
|
||||
+ VIR_FREE(images);
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+#else /* ! HAVE_RBD_LIST2 */
|
||||
+
|
||||
static char **
|
||||
virStorageBackendRBDGetVolNames(virStorageBackendRBDStatePtr ptr)
|
||||
{
|
||||
@@ -614,6 +656,7 @@ virStorageBackendRBDGetVolNames(virStorageBackendRBDStatePtr ptr)
|
||||
virStringListFreeCount(names, nnames);
|
||||
return NULL;
|
||||
}
|
||||
+#endif /* ! HAVE_RBD_LIST2 */
|
||||
|
||||
|
||||
static int
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
From c0d9adf220dc0d223330a7bac37b174132d330ba Mon Sep 17 00:00:00 2001
|
||||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Mon, 1 Aug 2022 15:24:01 -0400
|
||||
Subject: [PATCH] virfile: Fix build with glibc 2.36
|
||||
Content-type: text/plain
|
||||
|
||||
With glibc 2.36, sys/mount.h and linux/mount.h conflict:
|
||||
https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E
|
||||
|
||||
virfile.c imports sys/mount.h and linux/fs.h, which pulls in
|
||||
linux/mount.h.
|
||||
|
||||
Manually define the constants we need from linux/fs.h, like was
|
||||
done in llvm:
|
||||
|
||||
https://reviews.llvm.org/rGb379129c4beb3f26223288627a1291739f33af02
|
||||
|
||||
Reviewed-by: Erik Skultety <eskultet@redhat.com>
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
---
|
||||
src/util/virfile.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/util/virfile.c b/src/util/virfile.c
|
||||
index 99da058db3..ce541b8946 100644
|
||||
--- a/src/util/virfile.c
|
||||
+++ b/src/util/virfile.c
|
||||
@@ -71,7 +71,11 @@
|
||||
# endif
|
||||
# include <sys/ioctl.h>
|
||||
# include <linux/cdrom.h>
|
||||
-# include <linux/fs.h>
|
||||
+/* These come from linux/fs.h, but that header conflicts with
|
||||
+ * sys/mount.h on glibc 2.36+ */
|
||||
+# define FS_IOC_GETFLAGS _IOR('f', 1, long)
|
||||
+# define FS_IOC_SETFLAGS _IOW('f', 2, long)
|
||||
+# define FS_NOCOW_FL 0x00800000
|
||||
#endif
|
||||
|
||||
#if WITH_LIBATTR
|
||||
@@ -1,137 +0,0 @@
|
||||
From b990740b12117eaaf2797141a53a30b41f07c791 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
|
||||
Date: Mon, 18 Mar 2019 17:31:21 +0000
|
||||
Subject: [PATCH 3/5] network: improve error report when firewall chain
|
||||
creation fails
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
During startup we create some top level chains in which all
|
||||
virtual network firewall rules will be placed. The upfront
|
||||
creation is done to avoid slowing down creation of individual
|
||||
virtual networks by checking for chain existance every time.
|
||||
|
||||
There are some factors which can cause this upfront creation
|
||||
to fail and while a message will get into the libvirtd log
|
||||
this won't be seen by users who later try to start a virtual
|
||||
network. Instead they'll just get a message saying that the
|
||||
libvirt top level chain does not exist. This message is
|
||||
accurate, but unhelpful for solving the root cause.
|
||||
|
||||
This patch thus saves any error during daemon startup and
|
||||
reports it when trying to create a virtual network later.
|
||||
|
||||
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
|
||||
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
(cherry picked from commit 9f4e35dc73ec9e940aa61bc7c140c2b800218ef3)
|
||||
---
|
||||
src/network/bridge_driver.c | 3 +--
|
||||
src/network/bridge_driver_linux.c | 31 +++++++++++++++++++++-------
|
||||
src/network/bridge_driver_nop.c | 3 +--
|
||||
src/network/bridge_driver_platform.h | 2 +-
|
||||
4 files changed, 27 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
|
||||
index b3ca5b8a15..1da60f0a21 100644
|
||||
--- a/src/network/bridge_driver.c
|
||||
+++ b/src/network/bridge_driver.c
|
||||
@@ -2108,8 +2108,7 @@ static void
|
||||
networkReloadFirewallRules(virNetworkDriverStatePtr driver, bool startup)
|
||||
{
|
||||
VIR_INFO("Reloading iptables rules");
|
||||
- if (networkPreReloadFirewallRules(startup) < 0)
|
||||
- return;
|
||||
+ networkPreReloadFirewallRules(startup);
|
||||
virNetworkObjListForEach(driver->networks,
|
||||
networkReloadFirewallRulesHelper,
|
||||
NULL);
|
||||
diff --git a/src/network/bridge_driver_linux.c b/src/network/bridge_driver_linux.c
|
||||
index b10d0a6c4d..c899f4b6d0 100644
|
||||
--- a/src/network/bridge_driver_linux.c
|
||||
+++ b/src/network/bridge_driver_linux.c
|
||||
@@ -35,11 +35,25 @@ VIR_LOG_INIT("network.bridge_driver_linux");
|
||||
|
||||
#define PROC_NET_ROUTE "/proc/net/route"
|
||||
|
||||
-int networkPreReloadFirewallRules(bool startup)
|
||||
+static virErrorPtr errInit;
|
||||
+
|
||||
+void networkPreReloadFirewallRules(bool startup)
|
||||
{
|
||||
- int ret = iptablesSetupPrivateChains();
|
||||
- if (ret < 0)
|
||||
- return -1;
|
||||
+ int rc;
|
||||
+
|
||||
+ /* We create global rules upfront as we don't want
|
||||
+ * the perf hit of conditionally figuring out whether
|
||||
+ * to create them each time a network is started.
|
||||
+ *
|
||||
+ * Any errors here are saved to be reported at time
|
||||
+ * of starting the network though as that makes them
|
||||
+ * more likely to be seen by a human
|
||||
+ */
|
||||
+ rc = iptablesSetupPrivateChains();
|
||||
+ if (rc < 0) {
|
||||
+ errInit = virSaveLastError();
|
||||
+ virResetLastError();
|
||||
+ }
|
||||
|
||||
/*
|
||||
* If this is initial startup, and we just created the
|
||||
@@ -54,10 +68,8 @@ int networkPreReloadFirewallRules(bool startup)
|
||||
* rules will be present. Thus we can safely just tell it
|
||||
* to always delete from the builin chain
|
||||
*/
|
||||
- if (startup && ret == 1)
|
||||
+ if (startup && rc == 1)
|
||||
iptablesSetDeletePrivate(false);
|
||||
-
|
||||
- return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -671,6 +683,11 @@ int networkAddFirewallRules(virNetworkDefPtr def)
|
||||
virFirewallPtr fw = NULL;
|
||||
int ret = -1;
|
||||
|
||||
+ if (errInit) {
|
||||
+ virSetError(errInit);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
if (def->bridgeZone) {
|
||||
|
||||
/* if a firewalld zone has been specified, fail/log an error
|
||||
diff --git a/src/network/bridge_driver_nop.c b/src/network/bridge_driver_nop.c
|
||||
index a0e57012f9..ea9db338cb 100644
|
||||
--- a/src/network/bridge_driver_nop.c
|
||||
+++ b/src/network/bridge_driver_nop.c
|
||||
@@ -19,9 +19,8 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
-int networkPreReloadFirewallRules(bool startup ATTRIBUTE_UNUSED)
|
||||
+void networkPreReloadFirewallRules(bool startup ATTRIBUTE_UNUSED)
|
||||
{
|
||||
- return 0;
|
||||
}
|
||||
|
||||
|
||||
diff --git a/src/network/bridge_driver_platform.h b/src/network/bridge_driver_platform.h
|
||||
index baeb22bc3e..95fd64bdc7 100644
|
||||
--- a/src/network/bridge_driver_platform.h
|
||||
+++ b/src/network/bridge_driver_platform.h
|
||||
@@ -58,7 +58,7 @@ struct _virNetworkDriverState {
|
||||
typedef struct _virNetworkDriverState virNetworkDriverState;
|
||||
typedef virNetworkDriverState *virNetworkDriverStatePtr;
|
||||
|
||||
-int networkPreReloadFirewallRules(bool startup);
|
||||
+void networkPreReloadFirewallRules(bool startup);
|
||||
void networkPostReloadFirewallRules(bool startup);
|
||||
|
||||
int networkCheckRouteCollision(virNetworkDefPtr def);
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -1,153 +0,0 @@
|
||||
From 095c45036615a84c7150ea801d6932bdde1d5b49 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
|
||||
Date: Mon, 18 Mar 2019 16:49:32 +0000
|
||||
Subject: [PATCH 4/5] network: split setup of ipv4 and ipv6 top level chains
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
During startup libvirtd creates top level chains for both ipv4
|
||||
and ipv6 protocols. If this fails for any reason then startup
|
||||
of virtual networks is blocked.
|
||||
|
||||
The default virtual network, however, only requires use of ipv4
|
||||
and some servers have ipv6 disabled so it is expected that ipv6
|
||||
chain creation will fail. There could equally be servers with
|
||||
no ipv4, only ipv6.
|
||||
|
||||
This patch thus makes error reporting a little more fine grained
|
||||
so that it works more sensibly when either ipv4 or ipv6 is
|
||||
disabled on the server. Only the protocols that are actually
|
||||
used by the virtual network have errors reported.
|
||||
|
||||
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
|
||||
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
(cherry picked from commit 686803a1a2e1e0641916b1c9e2c7e3910fe598d4)
|
||||
---
|
||||
src/network/bridge_driver_linux.c | 34 +++++++++++++++++++++++++------
|
||||
src/util/viriptables.c | 14 ++++---------
|
||||
src/util/viriptables.h | 2 +-
|
||||
3 files changed, 33 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/src/network/bridge_driver_linux.c b/src/network/bridge_driver_linux.c
|
||||
index c899f4b6d0..50fc197134 100644
|
||||
--- a/src/network/bridge_driver_linux.c
|
||||
+++ b/src/network/bridge_driver_linux.c
|
||||
@@ -35,10 +35,12 @@ VIR_LOG_INIT("network.bridge_driver_linux");
|
||||
|
||||
#define PROC_NET_ROUTE "/proc/net/route"
|
||||
|
||||
-static virErrorPtr errInit;
|
||||
+static virErrorPtr errInitV4;
|
||||
+static virErrorPtr errInitV6;
|
||||
|
||||
void networkPreReloadFirewallRules(bool startup)
|
||||
{
|
||||
+ bool created = false;
|
||||
int rc;
|
||||
|
||||
/* We create global rules upfront as we don't want
|
||||
@@ -49,11 +51,21 @@ void networkPreReloadFirewallRules(bool startup)
|
||||
* of starting the network though as that makes them
|
||||
* more likely to be seen by a human
|
||||
*/
|
||||
- rc = iptablesSetupPrivateChains();
|
||||
+ rc = iptablesSetupPrivateChains(VIR_FIREWALL_LAYER_IPV4);
|
||||
if (rc < 0) {
|
||||
- errInit = virSaveLastError();
|
||||
+ errInitV4 = virSaveLastError();
|
||||
virResetLastError();
|
||||
}
|
||||
+ if (rc)
|
||||
+ created = true;
|
||||
+
|
||||
+ rc = iptablesSetupPrivateChains(VIR_FIREWALL_LAYER_IPV6);
|
||||
+ if (rc < 0) {
|
||||
+ errInitV6 = virSaveLastError();
|
||||
+ virResetLastError();
|
||||
+ }
|
||||
+ if (rc)
|
||||
+ created = true;
|
||||
|
||||
/*
|
||||
* If this is initial startup, and we just created the
|
||||
@@ -68,7 +80,7 @@ void networkPreReloadFirewallRules(bool startup)
|
||||
* rules will be present. Thus we can safely just tell it
|
||||
* to always delete from the builin chain
|
||||
*/
|
||||
- if (startup && rc == 1)
|
||||
+ if (startup && created)
|
||||
iptablesSetDeletePrivate(false);
|
||||
}
|
||||
|
||||
@@ -683,8 +695,18 @@ int networkAddFirewallRules(virNetworkDefPtr def)
|
||||
virFirewallPtr fw = NULL;
|
||||
int ret = -1;
|
||||
|
||||
- if (errInit) {
|
||||
- virSetError(errInit);
|
||||
+ if (errInitV4 &&
|
||||
+ (virNetworkDefGetIPByIndex(def, AF_INET, 0) ||
|
||||
+ virNetworkDefGetRouteByIndex(def, AF_INET, 0))) {
|
||||
+ virSetError(errInitV4);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ if (errInitV6 &&
|
||||
+ (virNetworkDefGetIPByIndex(def, AF_INET6, 0) ||
|
||||
+ virNetworkDefGetRouteByIndex(def, AF_INET6, 0) ||
|
||||
+ def->ipv6nogw)) {
|
||||
+ virSetError(errInitV6);
|
||||
return -1;
|
||||
}
|
||||
|
||||
diff --git a/src/util/viriptables.c b/src/util/viriptables.c
|
||||
index d67b640a3b..0e3c0ad73a 100644
|
||||
--- a/src/util/viriptables.c
|
||||
+++ b/src/util/viriptables.c
|
||||
@@ -127,7 +127,7 @@ iptablesPrivateChainCreate(virFirewallPtr fw,
|
||||
|
||||
|
||||
int
|
||||
-iptablesSetupPrivateChains(void)
|
||||
+iptablesSetupPrivateChains(virFirewallLayer layer)
|
||||
{
|
||||
virFirewallPtr fw = NULL;
|
||||
int ret = -1;
|
||||
@@ -143,17 +143,11 @@ iptablesSetupPrivateChains(void)
|
||||
};
|
||||
bool changed = false;
|
||||
iptablesGlobalChainData data[] = {
|
||||
- { VIR_FIREWALL_LAYER_IPV4, "filter",
|
||||
+ { layer, "filter",
|
||||
filter_chains, ARRAY_CARDINALITY(filter_chains), &changed },
|
||||
- { VIR_FIREWALL_LAYER_IPV4, "nat",
|
||||
+ { layer, "nat",
|
||||
natmangle_chains, ARRAY_CARDINALITY(natmangle_chains), &changed },
|
||||
- { VIR_FIREWALL_LAYER_IPV4, "mangle",
|
||||
- natmangle_chains, ARRAY_CARDINALITY(natmangle_chains), &changed },
|
||||
- { VIR_FIREWALL_LAYER_IPV6, "filter",
|
||||
- filter_chains, ARRAY_CARDINALITY(filter_chains), &changed },
|
||||
- { VIR_FIREWALL_LAYER_IPV6, "nat",
|
||||
- natmangle_chains, ARRAY_CARDINALITY(natmangle_chains), &changed },
|
||||
- { VIR_FIREWALL_LAYER_IPV6, "mangle",
|
||||
+ { layer, "mangle",
|
||||
natmangle_chains, ARRAY_CARDINALITY(natmangle_chains), &changed },
|
||||
};
|
||||
size_t i;
|
||||
diff --git a/src/util/viriptables.h b/src/util/viriptables.h
|
||||
index 903f390f89..e680407ec8 100644
|
||||
--- a/src/util/viriptables.h
|
||||
+++ b/src/util/viriptables.h
|
||||
@@ -24,7 +24,7 @@
|
||||
# include "virsocketaddr.h"
|
||||
# include "virfirewall.h"
|
||||
|
||||
-int iptablesSetupPrivateChains (void);
|
||||
+int iptablesSetupPrivateChains (virFirewallLayer layer);
|
||||
|
||||
void iptablesSetDeletePrivate (bool pvt);
|
||||
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
From 3e02ee9b5da7fc7197aaa6d57563349a7670b8a1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
|
||||
Date: Wed, 13 Mar 2019 16:21:15 +0000
|
||||
Subject: [PATCH 5/5] network: avoid trying to create global firewall rules if
|
||||
unprivileged
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The unprivileged libvirtd does not have permission to create firewall
|
||||
rules, or bridge devices, or do anything to the host network in
|
||||
general. Historically we still activate the network driver though and
|
||||
let the network start API call fail.
|
||||
|
||||
The startup code path which reloads firewall rules on active networks
|
||||
would thus effectively be a no-op when unprivileged as it is impossible
|
||||
for there to be any active networks
|
||||
|
||||
With the change to use a global set of firewall chains, however, we now
|
||||
have code that is run unconditionally.
|
||||
|
||||
Ideally we would not register the network driver at all when
|
||||
unprivileged, but the entanglement with the virt drivers currently makes
|
||||
that impractical. As a temporary hack, we just make the firewall reload
|
||||
into a no-op.
|
||||
|
||||
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
(cherry picked from commit 5d010c3df6152cf5fb00f1f67d22151241f4a8a2)
|
||||
---
|
||||
src/network/bridge_driver.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
|
||||
index 1da60f0a21..0e1d5efd8e 100644
|
||||
--- a/src/network/bridge_driver.c
|
||||
+++ b/src/network/bridge_driver.c
|
||||
@@ -2108,6 +2108,10 @@ static void
|
||||
networkReloadFirewallRules(virNetworkDriverStatePtr driver, bool startup)
|
||||
{
|
||||
VIR_INFO("Reloading iptables rules");
|
||||
+ /* Ideally we'd not even register the driver when unprivilegd
|
||||
+ * but until we untangle the virt driver that's not viable */
|
||||
+ if (!driver->privileged)
|
||||
+ return;
|
||||
networkPreReloadFirewallRules(startup);
|
||||
virNetworkObjListForEach(driver->networks,
|
||||
networkReloadFirewallRulesHelper,
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
# Makefile for source rpm: libvirt
|
||||
# $Id$
|
||||
NAME := libvirt
|
||||
SPECFILE = $(firstword $(wildcard *.spec))
|
||||
|
||||
define find-makefile-common
|
||||
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
|
||||
endef
|
||||
|
||||
MAKEFILE_COMMON := $(shell $(find-makefile-common))
|
||||
|
||||
ifeq ($(MAKEFILE_COMMON),)
|
||||
# attempt a checkout
|
||||
define checkout-makefile-common
|
||||
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
|
||||
endef
|
||||
|
||||
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
|
||||
endif
|
||||
|
||||
include $(MAKEFILE_COMMON)
|
||||
+1218
-579
File diff suppressed because it is too large
Load Diff
@@ -1 +1 @@
|
||||
SHA512 (libvirt-5.1.0.tar.xz) = ca64d7be683614bdeb20a8865655fe80f911cf13c00aed2334db3a2e4131e1dd6fe5e9663a24e6f82161ad5aa53f1a2637cd21730eed46e4764b7eebced94f3f
|
||||
SHA512 (libvirt-8.6.0.tar.xz) = 6198ac33ea718045bfd12a2740d5a7fa70c754b1ecda7c0cad5791fbdf7311091587056254fde88ebe3c2f927a8fb56909fe4c3a115595854b18d3a704db73de
|
||||
|
||||
Reference in New Issue
Block a user