Rebased to version 1.2.18.3
Start network after config-network RPM install (bz #867546)
This commit is contained in:
parent
ef2d4d8159
commit
e88899c8f0
|
@ -1,38 +0,0 @@
|
|||
From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
|
||||
Date: Thu, 17 Dec 2015 13:43:58 +0100
|
||||
Subject: [PATCH] schema: interleave domain name and uuid with other elements
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Allow <name> and <uuid> anywhere under <domain>, not just at the top:
|
||||
|
||||
error:XML document failed to validate against schema: Unable to validate
|
||||
doc against /usr/share/libvirt/schemas/domain.rng
|
||||
Expecting an element name, got nothing
|
||||
Invalid sequence in interleave
|
||||
Element domain failed to validate content
|
||||
|
||||
Introduced with the first RelaxNG schema in commit c642103.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1292131
|
||||
(cherry picked from commit b4e0549febe416ffefc16f389423740d6d65fa74)
|
||||
Signed-off-by: Ján Tomko <jtomko@redhat.com>
|
||||
---
|
||||
docs/schemas/domaincommon.rng | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
|
||||
index 1120003..9e7fad5 100644
|
||||
--- a/docs/schemas/domaincommon.rng
|
||||
+++ b/docs/schemas/domaincommon.rng
|
||||
@@ -30,8 +30,8 @@
|
||||
<define name="domain">
|
||||
<element name="domain">
|
||||
<ref name="hvs"/>
|
||||
- <ref name="ids"/>
|
||||
<interleave>
|
||||
+ <ref name="ids"/>
|
||||
<optional>
|
||||
<ref name="title"/>
|
||||
</optional>
|
|
@ -1,32 +0,0 @@
|
|||
From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
|
||||
Date: Thu, 14 Jan 2016 14:31:17 +0100
|
||||
Subject: [PATCH] leaseshelper: fix crash when no mac is specified
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
If dnsmasq specified DNSMASQ_IAID (so we're dealing with an IPv6
|
||||
lease) but no DNSMASQ_MAC, we skip creation of the new lease object.
|
||||
|
||||
Also skip adding it to the leases array.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1202350
|
||||
(cherry picked from commit df9fe124d650bc438c531673492569da87523d20)
|
||||
Signed-off-by: Ján Tomko <jtomko@redhat.com>
|
||||
---
|
||||
src/network/leaseshelper.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/network/leaseshelper.c b/src/network/leaseshelper.c
|
||||
index 2d528f7..6930310 100644
|
||||
--- a/src/network/leaseshelper.c
|
||||
+++ b/src/network/leaseshelper.c
|
||||
@@ -439,7 +439,7 @@ main(int argc, char **argv)
|
||||
|
||||
case VIR_LEASE_ACTION_OLD:
|
||||
case VIR_LEASE_ACTION_ADD:
|
||||
- if (virJSONValueArrayAppend(leases_array_new, lease_new) < 0) {
|
||||
+ if (lease_new && virJSONValueArrayAppend(leases_array_new, lease_new) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("failed to create json"));
|
||||
goto cleanup;
|
|
@ -1,63 +0,0 @@
|
|||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Tue, 19 Jan 2016 22:19:56 -0500
|
||||
Subject: [PATCH] build: predictably generate systemtap tapsets (bz 1173641)
|
||||
|
||||
The generated output is dependent on perl hashtable ordering, which
|
||||
gives different results for i686 and x86_64. Fix this by sorting
|
||||
the hash keys before iterating over them
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1173641
|
||||
(cherry picked from commit a1edb05c6028470aa24b74aa0f8d5fb5a181128a)
|
||||
---
|
||||
src/rpc/gensystemtap.pl | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/rpc/gensystemtap.pl b/src/rpc/gensystemtap.pl
|
||||
index 2467300..7b80fbf 100755
|
||||
--- a/src/rpc/gensystemtap.pl
|
||||
+++ b/src/rpc/gensystemtap.pl
|
||||
@@ -72,7 +72,7 @@ function libvirt_rpc_auth_name(type, verbose)
|
||||
{
|
||||
EOF
|
||||
my $first = 1;
|
||||
-foreach my $type (keys %auth) {
|
||||
+foreach my $type (sort(keys %auth)) {
|
||||
my $cond = $first ? "if" : "} else if";
|
||||
$first = 0;
|
||||
print " $cond (type == ", $type, ") {\n";
|
||||
@@ -95,7 +95,7 @@ function libvirt_rpc_type_name(type, verbose)
|
||||
{
|
||||
EOF
|
||||
$first = 1;
|
||||
-foreach my $type (keys %type) {
|
||||
+foreach my $type (sort(keys %type)) {
|
||||
my $cond = $first ? "if" : "} else if";
|
||||
$first = 0;
|
||||
print " $cond (type == ", $type, ") {\n";
|
||||
@@ -118,7 +118,7 @@ function libvirt_rpc_status_name(status, verbose)
|
||||
{
|
||||
EOF
|
||||
$first = 1;
|
||||
-foreach my $status (keys %status) {
|
||||
+foreach my $status (sort(keys %status)) {
|
||||
my $cond = $first ? "if" : "} else if";
|
||||
$first = 0;
|
||||
print " $cond (status == ", $status, ") {\n";
|
||||
@@ -141,7 +141,7 @@ function libvirt_rpc_program_name(program, verbose)
|
||||
{
|
||||
EOF
|
||||
$first = 1;
|
||||
-foreach my $prog (keys %funcs) {
|
||||
+foreach my $prog (sort(keys %funcs)) {
|
||||
my $cond = $first ? "if" : "} else if";
|
||||
$first = 0;
|
||||
print " $cond (program == ", $funcs{$prog}->{id}, ") {\n";
|
||||
@@ -165,7 +165,7 @@ function libvirt_rpc_procedure_name(program, version, proc, verbose)
|
||||
{
|
||||
EOF
|
||||
$first = 1;
|
||||
-foreach my $prog (keys %funcs) {
|
||||
+foreach my $prog (sort(keys %funcs)) {
|
||||
my $cond = $first ? "if" : "} else if";
|
||||
$first = 0;
|
||||
print " $cond (program == ", $funcs{$prog}->{id}, " && version == ", $funcs{$prog}->{version}, ") {\n";
|
|
@ -1,48 +0,0 @@
|
|||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Mon, 11 Jan 2016 20:01:24 -0500
|
||||
Subject: [PATCH] rpc: socket: Minor cleanups
|
||||
|
||||
- Add some debugging
|
||||
- Make the loop dependent only on retries
|
||||
- Make it explicit that connect(2) success exits the loop
|
||||
- Invert the error checking logic
|
||||
|
||||
(cherry picked from commit f102c7146ed7f6e04af0ad3bce302476239f2502)
|
||||
---
|
||||
src/rpc/virnetsocket.c | 16 ++++++++++++----
|
||||
1 file changed, 12 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
|
||||
index 5e5f1ab..fc8ce6c 100644
|
||||
--- a/src/rpc/virnetsocket.c
|
||||
+++ b/src/rpc/virnetsocket.c
|
||||
@@ -620,6 +620,9 @@ int virNetSocketNewConnectUNIX(const char *path,
|
||||
char *rundir = NULL;
|
||||
int ret = -1;
|
||||
|
||||
+ VIR_DEBUG("path=%s spawnDaemon=%d binary=%s", path, spawnDaemon,
|
||||
+ NULLSTR(binary));
|
||||
+
|
||||
memset(&localAddr, 0, sizeof(localAddr));
|
||||
memset(&remoteAddr, 0, sizeof(remoteAddr));
|
||||
|
||||
@@ -680,10 +683,15 @@ int virNetSocketNewConnectUNIX(const char *path,
|
||||
if (remoteAddr.data.un.sun_path[0] == '@')
|
||||
remoteAddr.data.un.sun_path[0] = '\0';
|
||||
|
||||
- while (retries &&
|
||||
- connect(fd, &remoteAddr.data.sa, remoteAddr.len) < 0) {
|
||||
- if (!(spawnDaemon && (errno == ENOENT ||
|
||||
- errno == ECONNREFUSED))) {
|
||||
+ while (retries) {
|
||||
+ if (connect(fd, &remoteAddr.data.sa, remoteAddr.len) == 0) {
|
||||
+ VIR_DEBUG("connect() succeeded");
|
||||
+ break;
|
||||
+ }
|
||||
+ VIR_DEBUG("connect() failed: retries=%d errno=%d", retries, errno);
|
||||
+
|
||||
+ if (!spawnDaemon ||
|
||||
+ (errno != ENOENT && errno != ECONNREFUSED)) {
|
||||
virReportSystemError(errno, _("Failed to connect socket to '%s'"),
|
||||
path);
|
||||
goto cleanup;
|
|
@ -1,40 +0,0 @@
|
|||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Mon, 11 Jan 2016 20:08:45 -0500
|
||||
Subject: [PATCH] rpc: socket: Explicitly error if we exceed retry count
|
||||
|
||||
When we autolaunch libvirtd for session URIs, we spin in a retry
|
||||
loop waiting for the daemon to start and the connect(2) to succeed.
|
||||
|
||||
However if we exceed the retry count, we don't explicitly raise an
|
||||
error, which can yield a slew of different error messages elsewhere
|
||||
in the code.
|
||||
|
||||
Explicitly raise the last connect(2) failure if we run out of retries.
|
||||
|
||||
(cherry picked from commit 8da02d528068942303923fc4f935e77cccac9c7c)
|
||||
---
|
||||
src/rpc/virnetsocket.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
|
||||
index fc8ce6c..6a51dc8 100644
|
||||
--- a/src/rpc/virnetsocket.c
|
||||
+++ b/src/rpc/virnetsocket.c
|
||||
@@ -690,7 +690,9 @@ int virNetSocketNewConnectUNIX(const char *path,
|
||||
}
|
||||
VIR_DEBUG("connect() failed: retries=%d errno=%d", retries, errno);
|
||||
|
||||
+ retries--;
|
||||
if (!spawnDaemon ||
|
||||
+ retries == 0 ||
|
||||
(errno != ENOENT && errno != ECONNREFUSED)) {
|
||||
virReportSystemError(errno, _("Failed to connect socket to '%s'"),
|
||||
path);
|
||||
@@ -700,7 +702,6 @@ int virNetSocketNewConnectUNIX(const char *path,
|
||||
if (virNetSocketForkDaemon(binary) < 0)
|
||||
goto cleanup;
|
||||
|
||||
- retries--;
|
||||
usleep(5000);
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Mon, 11 Jan 2016 20:13:38 -0500
|
||||
Subject: [PATCH] rpc: socket: Don't repeatedly attempt to launch daemon
|
||||
|
||||
On every socket connect(2) attempt we were re-launching session
|
||||
libvirtd, up to 100 times in 5 seconds.
|
||||
|
||||
This understandably caused some weird load races and intermittent
|
||||
qemu:///session startup failures
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1271183
|
||||
(cherry picked from commit 2eb7a975756d05a5b54ab4acf60083beb6161ac6)
|
||||
---
|
||||
src/rpc/virnetsocket.c | 9 +++++++--
|
||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
|
||||
index 6a51dc8..b132532 100644
|
||||
--- a/src/rpc/virnetsocket.c
|
||||
+++ b/src/rpc/virnetsocket.c
|
||||
@@ -619,6 +619,7 @@ int virNetSocketNewConnectUNIX(const char *path,
|
||||
virSocketAddr remoteAddr;
|
||||
char *rundir = NULL;
|
||||
int ret = -1;
|
||||
+ bool daemonLaunched = false;
|
||||
|
||||
VIR_DEBUG("path=%s spawnDaemon=%d binary=%s", path, spawnDaemon,
|
||||
NULLSTR(binary));
|
||||
@@ -699,8 +700,12 @@ int virNetSocketNewConnectUNIX(const char *path,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
- if (virNetSocketForkDaemon(binary) < 0)
|
||||
- goto cleanup;
|
||||
+ if (!daemonLaunched) {
|
||||
+ if (virNetSocketForkDaemon(binary) < 0)
|
||||
+ goto cleanup;
|
||||
+
|
||||
+ daemonLaunched = true;
|
||||
+ }
|
||||
|
||||
usleep(5000);
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
From: Jiri Denemark <jdenemar@redhat.com>
|
||||
Date: Fri, 15 Jan 2016 10:55:58 +0100
|
||||
Subject: [PATCH] security: Do not restore kernel and initrd labels
|
||||
|
||||
Kernel/initrd files are essentially read-only shareable images and thus
|
||||
should be handled in the same way. We already use the appropriate label
|
||||
for kernel/initrd files when starting a domain, but when a domain gets
|
||||
destroyed we would remove the labels which would make other running
|
||||
domains using the same files very unhappy.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=921135
|
||||
|
||||
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||
(cherry picked from commit 68acc701bd449481e3206723c25b18fcd3d261b7)
|
||||
---
|
||||
src/security/security_dac.c | 8 --------
|
||||
src/security/security_selinux.c | 8 --------
|
||||
2 files changed, 16 deletions(-)
|
||||
|
||||
diff --git a/src/security/security_dac.c b/src/security/security_dac.c
|
||||
index deb6980..d01215f 100644
|
||||
--- a/src/security/security_dac.c
|
||||
+++ b/src/security/security_dac.c
|
||||
@@ -971,14 +971,6 @@ virSecurityDACRestoreSecurityAllLabel(virSecurityManagerPtr mgr,
|
||||
virSecurityDACRestoreSecurityFileLabel(def->os.loader->nvram) < 0)
|
||||
rc = -1;
|
||||
|
||||
- if (def->os.kernel &&
|
||||
- virSecurityDACRestoreSecurityFileLabel(def->os.kernel) < 0)
|
||||
- rc = -1;
|
||||
-
|
||||
- if (def->os.initrd &&
|
||||
- virSecurityDACRestoreSecurityFileLabel(def->os.initrd) < 0)
|
||||
- rc = -1;
|
||||
-
|
||||
if (def->os.dtb &&
|
||||
virSecurityDACRestoreSecurityFileLabel(def->os.dtb) < 0)
|
||||
rc = -1;
|
||||
diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c
|
||||
index c2464c2..38f2a29 100644
|
||||
--- a/src/security/security_selinux.c
|
||||
+++ b/src/security/security_selinux.c
|
||||
@@ -1978,14 +1978,6 @@ virSecuritySELinuxRestoreSecurityAllLabel(virSecurityManagerPtr mgr,
|
||||
virSecuritySELinuxRestoreSecurityFileLabel(mgr, def->os.loader->nvram) < 0)
|
||||
rc = -1;
|
||||
|
||||
- if (def->os.kernel &&
|
||||
- virSecuritySELinuxRestoreSecurityFileLabel(mgr, def->os.kernel) < 0)
|
||||
- rc = -1;
|
||||
-
|
||||
- if (def->os.initrd &&
|
||||
- virSecuritySELinuxRestoreSecurityFileLabel(mgr, def->os.initrd) < 0)
|
||||
- rc = -1;
|
||||
-
|
||||
if (def->os.dtb &&
|
||||
virSecuritySELinuxRestoreSecurityFileLabel(mgr, def->os.dtb) < 0)
|
||||
rc = -1;
|
|
@ -1,42 +0,0 @@
|
|||
From: John Ferlan <jferlan@redhat.com>
|
||||
Date: Wed, 30 Sep 2015 17:37:27 -0400
|
||||
Subject: [PATCH] virfile: Fix error path for forked virFileRemove
|
||||
|
||||
As it turns out the caller in this case expects a return < 0 for failure
|
||||
and to get/use "errno" rather than using the negative of returned status.
|
||||
Again different than the create path.
|
||||
|
||||
If someone "deleted" a file from the pool without using virsh vol-delete,
|
||||
then the unlink/rmdir would return an error (-1) and set errno to ENOENT.
|
||||
The caller checks errno for ENOENT when determining whether to throw an
|
||||
error message indicating the failure. Without the change, the error
|
||||
message is:
|
||||
|
||||
error: Failed to delete vol $vol
|
||||
error: cannot unlink file '/$pathto/$vol': Success
|
||||
|
||||
This patch thus allows the fork path to follow the non-fork path
|
||||
where unlink/rmdir return -1 and errno.
|
||||
|
||||
(cherry picked from commit cb19cff468432e55366014658f405066ce06c2f2)
|
||||
---
|
||||
src/util/virfile.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/util/virfile.c b/src/util/virfile.c
|
||||
index 7b14ee8..d742645 100644
|
||||
--- a/src/util/virfile.c
|
||||
+++ b/src/util/virfile.c
|
||||
@@ -2381,9 +2381,10 @@ virFileUnlink(const char *path,
|
||||
path, msg);
|
||||
VIR_FREE(msg);
|
||||
if (WIFEXITED(status))
|
||||
- ret = -WEXITSTATUS(status);
|
||||
+ errno = WEXITSTATUS(status);
|
||||
else
|
||||
- ret = -EACCES;
|
||||
+ errno = EACCES;
|
||||
+ ret = -errno;
|
||||
}
|
||||
|
||||
parenterror:
|
|
@ -1,146 +0,0 @@
|
|||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Thu, 21 Jan 2016 13:06:03 -0500
|
||||
Subject: [PATCH] lxc: fuse: Unindent meminfo logic
|
||||
|
||||
Reverse the conditional at the start so we aren't stuffing all the logic
|
||||
in an 'if' block
|
||||
|
||||
(cherry picked from commit f65dcfcd140d0a627aeab3fa0e9dc5f74da98e6d)
|
||||
---
|
||||
src/lxc/lxc_fuse.c | 122 ++++++++++++++++++++++++++---------------------------
|
||||
1 file changed, 61 insertions(+), 61 deletions(-)
|
||||
|
||||
diff --git a/src/lxc/lxc_fuse.c b/src/lxc/lxc_fuse.c
|
||||
index 34a69cc..f9c02c0 100644
|
||||
--- a/src/lxc/lxc_fuse.c
|
||||
+++ b/src/lxc/lxc_fuse.c
|
||||
@@ -161,68 +161,68 @@ static int lxcProcReadMeminfo(char *hostpath, virDomainDefPtr def,
|
||||
res = -1;
|
||||
while (copied < size && getline(&line, &n, fd) > 0) {
|
||||
char *ptr = strchr(line, ':');
|
||||
- if (ptr) {
|
||||
- *ptr = '\0';
|
||||
-
|
||||
- if (STREQ(line, "MemTotal") &&
|
||||
- (virMemoryLimitIsSet(def->mem.hard_limit) ||
|
||||
- virDomainDefGetMemoryActual(def))) {
|
||||
- virBufferAsprintf(new_meminfo, "MemTotal: %8llu kB\n",
|
||||
- meminfo.memtotal);
|
||||
- } else if (STREQ(line, "MemFree") &&
|
||||
- (virMemoryLimitIsSet(def->mem.hard_limit) ||
|
||||
- virDomainDefGetMemoryActual(def))) {
|
||||
- virBufferAsprintf(new_meminfo, "MemFree: %8llu kB\n",
|
||||
- (meminfo.memtotal - meminfo.memusage));
|
||||
- } else if (STREQ(line, "Buffers")) {
|
||||
- virBufferAsprintf(new_meminfo, "Buffers: %8d kB\n", 0);
|
||||
- } else if (STREQ(line, "Cached")) {
|
||||
- virBufferAsprintf(new_meminfo, "Cached: %8llu kB\n",
|
||||
- meminfo.cached);
|
||||
- } else if (STREQ(line, "Active")) {
|
||||
- virBufferAsprintf(new_meminfo, "Active: %8llu kB\n",
|
||||
- (meminfo.active_anon + meminfo.active_file));
|
||||
- } else if (STREQ(line, "Inactive")) {
|
||||
- virBufferAsprintf(new_meminfo, "Inactive: %8llu kB\n",
|
||||
- (meminfo.inactive_anon + meminfo.inactive_file));
|
||||
- } else if (STREQ(line, "Active(anon)")) {
|
||||
- virBufferAsprintf(new_meminfo, "Active(anon): %8llu kB\n",
|
||||
- meminfo.active_anon);
|
||||
- } else if (STREQ(line, "Inactive(anon)")) {
|
||||
- virBufferAsprintf(new_meminfo, "Inactive(anon): %8llu kB\n",
|
||||
- meminfo.inactive_anon);
|
||||
- } else if (STREQ(line, "Active(file)")) {
|
||||
- virBufferAsprintf(new_meminfo, "Active(file): %8llu kB\n",
|
||||
- meminfo.active_file);
|
||||
- } else if (STREQ(line, "Inactive(file)")) {
|
||||
- virBufferAsprintf(new_meminfo, "Inactive(file): %8llu kB\n",
|
||||
- meminfo.inactive_file);
|
||||
- } else if (STREQ(line, "Unevictable")) {
|
||||
- virBufferAsprintf(new_meminfo, "Unevictable: %8llu kB\n",
|
||||
- meminfo.unevictable);
|
||||
- } else if (STREQ(line, "SwapTotal") &&
|
||||
- virMemoryLimitIsSet(def->mem.swap_hard_limit)) {
|
||||
- virBufferAsprintf(new_meminfo, "SwapTotal: %8llu kB\n",
|
||||
- (meminfo.swaptotal - meminfo.memtotal));
|
||||
- } else if (STREQ(line, "SwapFree") &&
|
||||
- virMemoryLimitIsSet(def->mem.swap_hard_limit)) {
|
||||
- virBufferAsprintf(new_meminfo, "SwapFree: %8llu kB\n",
|
||||
- (meminfo.swaptotal - meminfo.memtotal -
|
||||
- meminfo.swapusage + meminfo.memusage));
|
||||
- } else {
|
||||
- *ptr = ':';
|
||||
- virBufferAdd(new_meminfo, line, -1);
|
||||
- }
|
||||
-
|
||||
- if (virBufferCheckError(new_meminfo) < 0) {
|
||||
- res = -errno;
|
||||
- goto cleanup;
|
||||
- }
|
||||
-
|
||||
- copied += strlen(line);
|
||||
- if (copied > size)
|
||||
- copied = size;
|
||||
+ if (!ptr)
|
||||
+ continue;
|
||||
+ *ptr = '\0';
|
||||
+
|
||||
+ if (STREQ(line, "MemTotal") &&
|
||||
+ (virMemoryLimitIsSet(def->mem.hard_limit) ||
|
||||
+ virDomainDefGetMemoryActual(def))) {
|
||||
+ virBufferAsprintf(new_meminfo, "MemTotal: %8llu kB\n",
|
||||
+ meminfo.memtotal);
|
||||
+ } else if (STREQ(line, "MemFree") &&
|
||||
+ (virMemoryLimitIsSet(def->mem.hard_limit) ||
|
||||
+ virDomainDefGetMemoryActual(def))) {
|
||||
+ virBufferAsprintf(new_meminfo, "MemFree: %8llu kB\n",
|
||||
+ (meminfo.memtotal - meminfo.memusage));
|
||||
+ } else if (STREQ(line, "Buffers")) {
|
||||
+ virBufferAsprintf(new_meminfo, "Buffers: %8d kB\n", 0);
|
||||
+ } else if (STREQ(line, "Cached")) {
|
||||
+ virBufferAsprintf(new_meminfo, "Cached: %8llu kB\n",
|
||||
+ meminfo.cached);
|
||||
+ } else if (STREQ(line, "Active")) {
|
||||
+ virBufferAsprintf(new_meminfo, "Active: %8llu kB\n",
|
||||
+ (meminfo.active_anon + meminfo.active_file));
|
||||
+ } else if (STREQ(line, "Inactive")) {
|
||||
+ virBufferAsprintf(new_meminfo, "Inactive: %8llu kB\n",
|
||||
+ (meminfo.inactive_anon + meminfo.inactive_file));
|
||||
+ } else if (STREQ(line, "Active(anon)")) {
|
||||
+ virBufferAsprintf(new_meminfo, "Active(anon): %8llu kB\n",
|
||||
+ meminfo.active_anon);
|
||||
+ } else if (STREQ(line, "Inactive(anon)")) {
|
||||
+ virBufferAsprintf(new_meminfo, "Inactive(anon): %8llu kB\n",
|
||||
+ meminfo.inactive_anon);
|
||||
+ } else if (STREQ(line, "Active(file)")) {
|
||||
+ virBufferAsprintf(new_meminfo, "Active(file): %8llu kB\n",
|
||||
+ meminfo.active_file);
|
||||
+ } else if (STREQ(line, "Inactive(file)")) {
|
||||
+ virBufferAsprintf(new_meminfo, "Inactive(file): %8llu kB\n",
|
||||
+ meminfo.inactive_file);
|
||||
+ } else if (STREQ(line, "Unevictable")) {
|
||||
+ virBufferAsprintf(new_meminfo, "Unevictable: %8llu kB\n",
|
||||
+ meminfo.unevictable);
|
||||
+ } else if (STREQ(line, "SwapTotal") &&
|
||||
+ virMemoryLimitIsSet(def->mem.swap_hard_limit)) {
|
||||
+ virBufferAsprintf(new_meminfo, "SwapTotal: %8llu kB\n",
|
||||
+ (meminfo.swaptotal - meminfo.memtotal));
|
||||
+ } else if (STREQ(line, "SwapFree") &&
|
||||
+ virMemoryLimitIsSet(def->mem.swap_hard_limit)) {
|
||||
+ virBufferAsprintf(new_meminfo, "SwapFree: %8llu kB\n",
|
||||
+ (meminfo.swaptotal - meminfo.memtotal -
|
||||
+ meminfo.swapusage + meminfo.memusage));
|
||||
+ } else {
|
||||
+ *ptr = ':';
|
||||
+ virBufferAdd(new_meminfo, line, -1);
|
||||
}
|
||||
+
|
||||
+ if (virBufferCheckError(new_meminfo) < 0) {
|
||||
+ res = -errno;
|
||||
+ goto cleanup;
|
||||
+ }
|
||||
+
|
||||
+ copied += strlen(line);
|
||||
+ if (copied > size)
|
||||
+ copied = size;
|
||||
}
|
||||
res = copied;
|
||||
memcpy(buf, virBufferCurrentContent(new_meminfo), copied);
|
|
@ -1,55 +0,0 @@
|
|||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Thu, 21 Jan 2016 13:14:54 -0500
|
||||
Subject: [PATCH] lxc: fuse: Fix /proc/meminfo size calculation
|
||||
|
||||
We virtualize bits of /proc/meminfo by replacing host values with
|
||||
values specific to the container.
|
||||
|
||||
However for calculating the final size of the returned data, we are
|
||||
using the size of the original file and not the altered copy, which
|
||||
could give garbelled output.
|
||||
|
||||
(cherry picked from commit 8418245a7e00f873594f1000c9606d08265088e0)
|
||||
---
|
||||
src/lxc/lxc_fuse.c | 13 +++++--------
|
||||
1 file changed, 5 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/lxc/lxc_fuse.c b/src/lxc/lxc_fuse.c
|
||||
index f9c02c0..e6369f8 100644
|
||||
--- a/src/lxc/lxc_fuse.c
|
||||
+++ b/src/lxc/lxc_fuse.c
|
||||
@@ -131,7 +131,6 @@ static int lxcProcHostRead(char *path, char *buf, size_t size, off_t offset)
|
||||
static int lxcProcReadMeminfo(char *hostpath, virDomainDefPtr def,
|
||||
char *buf, size_t size, off_t offset)
|
||||
{
|
||||
- int copied = 0;
|
||||
int res;
|
||||
FILE *fd = NULL;
|
||||
char *line = NULL;
|
||||
@@ -159,7 +158,7 @@ static int lxcProcReadMeminfo(char *hostpath, virDomainDefPtr def,
|
||||
}
|
||||
|
||||
res = -1;
|
||||
- while (copied < size && getline(&line, &n, fd) > 0) {
|
||||
+ while (getline(&line, &n, fd) > 0) {
|
||||
char *ptr = strchr(line, ':');
|
||||
if (!ptr)
|
||||
continue;
|
||||
@@ -219,13 +218,11 @@ static int lxcProcReadMeminfo(char *hostpath, virDomainDefPtr def,
|
||||
res = -errno;
|
||||
goto cleanup;
|
||||
}
|
||||
-
|
||||
- copied += strlen(line);
|
||||
- if (copied > size)
|
||||
- copied = size;
|
||||
}
|
||||
- res = copied;
|
||||
- memcpy(buf, virBufferCurrentContent(new_meminfo), copied);
|
||||
+ res = strlen(virBufferCurrentContent(new_meminfo));
|
||||
+ if (res > size)
|
||||
+ res = size;
|
||||
+ memcpy(buf, virBufferCurrentContent(new_meminfo), res);
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(line);
|
|
@ -1,34 +0,0 @@
|
|||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Thu, 21 Jan 2016 13:18:04 -0500
|
||||
Subject: [PATCH] lxc: fuse: Fill in MemAvailable for /proc/meminfo
|
||||
|
||||
'free' on Fedora 23 will use MemAvailable to calculate its 'available'
|
||||
field, but we are passing through the host's value. Set it to match
|
||||
MemFree, which is what 'free' will do for older linux that don't have
|
||||
MemAvailable
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1300781
|
||||
(cherry picked from commit c7be484d1136834614089c9a74a3818594852f24)
|
||||
---
|
||||
src/lxc/lxc_fuse.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/src/lxc/lxc_fuse.c b/src/lxc/lxc_fuse.c
|
||||
index e6369f8..691ddee 100644
|
||||
--- a/src/lxc/lxc_fuse.c
|
||||
+++ b/src/lxc/lxc_fuse.c
|
||||
@@ -174,6 +174,14 @@ static int lxcProcReadMeminfo(char *hostpath, virDomainDefPtr def,
|
||||
virDomainDefGetMemoryActual(def))) {
|
||||
virBufferAsprintf(new_meminfo, "MemFree: %8llu kB\n",
|
||||
(meminfo.memtotal - meminfo.memusage));
|
||||
+ } else if (STREQ(line, "MemAvailable") &&
|
||||
+ (virMemoryLimitIsSet(def->mem.hard_limit) ||
|
||||
+ virDomainDefGetMemoryActual(def))) {
|
||||
+ /* MemAvailable is actually MemFree + SRReclaimable +
|
||||
+ some other bits, but MemFree is the closest approximation
|
||||
+ we have */
|
||||
+ virBufferAsprintf(new_meminfo, "MemAvailable: %8llu kB\n",
|
||||
+ (meminfo.memtotal - meminfo.memusage));
|
||||
} else if (STREQ(line, "Buffers")) {
|
||||
virBufferAsprintf(new_meminfo, "Buffers: %8d kB\n", 0);
|
||||
} else if (STREQ(line, "Cached")) {
|
|
@ -1,35 +0,0 @@
|
|||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Thu, 21 Jan 2016 13:33:50 -0500
|
||||
Subject: [PATCH] lxc: fuse: Stub out Slab bits in /proc/meminfo
|
||||
|
||||
'free' on fedora23 wants to use the Slab field for calculated used
|
||||
memory. The equation is:
|
||||
|
||||
used = MemTotal - MemFree - (Cached + Slab) - Buffers
|
||||
|
||||
We already set Cached and Buffers to 0, do the same for Slab and its
|
||||
related values
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1300781
|
||||
(cherry picked from commit 81da8bc73b6bc6777632b65a0df45335f7caebe4)
|
||||
---
|
||||
src/lxc/lxc_fuse.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/src/lxc/lxc_fuse.c b/src/lxc/lxc_fuse.c
|
||||
index 691ddee..8c20a7d 100644
|
||||
--- a/src/lxc/lxc_fuse.c
|
||||
+++ b/src/lxc/lxc_fuse.c
|
||||
@@ -217,6 +217,12 @@ static int lxcProcReadMeminfo(char *hostpath, virDomainDefPtr def,
|
||||
virBufferAsprintf(new_meminfo, "SwapFree: %8llu kB\n",
|
||||
(meminfo.swaptotal - meminfo.memtotal -
|
||||
meminfo.swapusage + meminfo.memusage));
|
||||
+ } else if (STREQ(line, "Slab")) {
|
||||
+ virBufferAsprintf(new_meminfo, "Slab: %8d kB\n", 0);
|
||||
+ } else if (STREQ(line, "SReclaimable")) {
|
||||
+ virBufferAsprintf(new_meminfo, "SReclaimable: %8d kB\n", 0);
|
||||
+ } else if (STREQ(line, "SUnreclaim")) {
|
||||
+ virBufferAsprintf(new_meminfo, "SUnreclaim: %8d kB\n", 0);
|
||||
} else {
|
||||
*ptr = ':';
|
||||
virBufferAdd(new_meminfo, line, -1);
|
|
@ -1,62 +0,0 @@
|
|||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Wed, 9 Mar 2016 10:53:54 -0500
|
||||
Subject: [PATCH] util: virfile: Clarify setuid usage for virFileRemove
|
||||
|
||||
Break these checks out into their own function, and clearly document
|
||||
each one. This shouldn't change behavior
|
||||
|
||||
(cherry picked from commit 7cf5343709935694b76af7b134447a2c555400b6)
|
||||
---
|
||||
src/util/virfile.c | 32 +++++++++++++++++++++++++++-----
|
||||
1 file changed, 27 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/util/virfile.c b/src/util/virfile.c
|
||||
index d742645..45bb249 100644
|
||||
--- a/src/util/virfile.c
|
||||
+++ b/src/util/virfile.c
|
||||
@@ -2307,6 +2307,32 @@ virFileOpenAs(const char *path, int openflags, mode_t mode,
|
||||
}
|
||||
|
||||
|
||||
+/* virFileRemoveNeedsSetuid:
|
||||
+ * @uid: file uid to check
|
||||
+ * @gid: file gid to check
|
||||
+ *
|
||||
+ * Return true if we should use setuid/setgid before deleting a file
|
||||
+ * owned by the passed uid/gid pair. Needed for NFS with root-squash
|
||||
+ */
|
||||
+static bool
|
||||
+virFileRemoveNeedsSetuid(uid_t uid, gid_t gid)
|
||||
+{
|
||||
+ /* If running unprivileged, setuid isn't going to work */
|
||||
+ if (geteuid() != 0)
|
||||
+ return false;
|
||||
+
|
||||
+ /* uid/gid weren't specified */
|
||||
+ if ((uid == (uid_t) -1) && (gid == (gid_t) -1))
|
||||
+ return false;
|
||||
+
|
||||
+ /* already running as proper uid/gid */
|
||||
+ if (uid == geteuid() && gid == getegid())
|
||||
+ return false;
|
||||
+
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+
|
||||
/* virFileUnlink:
|
||||
* @path: file to unlink
|
||||
* @uid: uid that was used to create the file (not required)
|
||||
@@ -2329,11 +2355,7 @@ virFileUnlink(const char *path,
|
||||
gid_t *groups;
|
||||
int ngroups;
|
||||
|
||||
- /* If not running as root or if a non explicit uid/gid was being used for
|
||||
- * the file/volume, then use unlink directly
|
||||
- */
|
||||
- if ((geteuid() != 0) ||
|
||||
- ((uid == (uid_t) -1) && (gid == (gid_t) -1)))
|
||||
+ if (!virFileRemoveNeedsSetuid(uid, gid))
|
||||
return unlink(path);
|
||||
|
||||
/* Otherwise, we have to deal with the NFS root-squash craziness
|
|
@ -1,55 +0,0 @@
|
|||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Wed, 9 Mar 2016 12:20:37 -0500
|
||||
Subject: [PATCH] util: virfile: Only setuid for virFileRemove if on NFS
|
||||
|
||||
NFS with root-squash is the only reason we need to do setuid/setgid
|
||||
crazyness in virFileRemove, so limit that behavior to the NFS case.
|
||||
|
||||
(cherry picked from commit adefc561cc4c6a007529769c3df286f2ed461684)
|
||||
---
|
||||
src/util/virfile.c | 11 +++++++++--
|
||||
1 file changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/util/virfile.c b/src/util/virfile.c
|
||||
index 45bb249..1dc6601 100644
|
||||
--- a/src/util/virfile.c
|
||||
+++ b/src/util/virfile.c
|
||||
@@ -2308,6 +2308,7 @@ virFileOpenAs(const char *path, int openflags, mode_t mode,
|
||||
|
||||
|
||||
/* virFileRemoveNeedsSetuid:
|
||||
+ * @path: file we plan to remove
|
||||
* @uid: file uid to check
|
||||
* @gid: file gid to check
|
||||
*
|
||||
@@ -2315,7 +2316,7 @@ virFileOpenAs(const char *path, int openflags, mode_t mode,
|
||||
* owned by the passed uid/gid pair. Needed for NFS with root-squash
|
||||
*/
|
||||
static bool
|
||||
-virFileRemoveNeedsSetuid(uid_t uid, gid_t gid)
|
||||
+virFileRemoveNeedsSetuid(const char *path, uid_t uid, gid_t gid)
|
||||
{
|
||||
/* If running unprivileged, setuid isn't going to work */
|
||||
if (geteuid() != 0)
|
||||
@@ -2329,6 +2330,12 @@ virFileRemoveNeedsSetuid(uid_t uid, gid_t gid)
|
||||
if (uid == geteuid() && gid == getegid())
|
||||
return false;
|
||||
|
||||
+ /* Only perform the setuid stuff for NFS, which is the only case
|
||||
+ that may actually need it. This can error, but just be safe and
|
||||
+ only check for a clear negative result. */
|
||||
+ if (virFileIsSharedFSType(path, VIR_FILE_SHFS_NFS) == 0)
|
||||
+ return false;
|
||||
+
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2355,7 +2362,7 @@ virFileUnlink(const char *path,
|
||||
gid_t *groups;
|
||||
int ngroups;
|
||||
|
||||
- if (!virFileRemoveNeedsSetuid(uid, gid))
|
||||
+ if (!virFileRemoveNeedsSetuid(path, uid, gid))
|
||||
return unlink(path);
|
||||
|
||||
/* Otherwise, we have to deal with the NFS root-squash craziness
|
|
@ -1,37 +0,0 @@
|
|||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Tue, 15 Mar 2016 17:04:32 -0400
|
||||
Subject: [PATCH] rpc: wait longer for session daemon to start up
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1271183
|
||||
|
||||
We only wait 0.5 seconds for the session daemon to start up and present
|
||||
its socket, which isn't sufficient for many users. Bump up the sleep
|
||||
interval and retry amount so we wait for a total of 5.0 seconds.
|
||||
|
||||
(cherry picked from commit ca0c06f4008154de55e0b3109885facd0bf02d32)
|
||||
---
|
||||
src/rpc/virnetsocket.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
|
||||
index b132532..ecedcf5 100644
|
||||
--- a/src/rpc/virnetsocket.c
|
||||
+++ b/src/rpc/virnetsocket.c
|
||||
@@ -614,7 +614,7 @@ int virNetSocketNewConnectUNIX(const char *path,
|
||||
char *lockpath = NULL;
|
||||
int lockfd = -1;
|
||||
int fd = -1;
|
||||
- int retries = 100;
|
||||
+ int retries = 500;
|
||||
virSocketAddr localAddr;
|
||||
virSocketAddr remoteAddr;
|
||||
char *rundir = NULL;
|
||||
@@ -707,7 +707,7 @@ int virNetSocketNewConnectUNIX(const char *path,
|
||||
daemonLaunched = true;
|
||||
}
|
||||
|
||||
- usleep(5000);
|
||||
+ usleep(10000);
|
||||
}
|
||||
|
||||
localAddr.len = sizeof(localAddr.data);
|
|
@ -1,27 +0,0 @@
|
|||
From: Jovanka Gulicoska <jovanka.gulicoska@gmail.com>
|
||||
Date: Thu, 17 Mar 2016 20:02:20 +0100
|
||||
Subject: [PATCH] driver: log missing modules as INFO, not WARN
|
||||
|
||||
Missing modules is a common expected scenario for most libvirt usage on
|
||||
RPM distributions like Fedora, so it doesn't really warrant logging at
|
||||
WARN level. Use INFO instead
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1274849
|
||||
(cherry picked from commit 9a0c7f5f834185db9017c34aabc03ad99cf37bed)
|
||||
---
|
||||
src/driver.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/driver.c b/src/driver.c
|
||||
index 2985538..1514a3b 100644
|
||||
--- a/src/driver.c
|
||||
+++ b/src/driver.c
|
||||
@@ -62,7 +62,7 @@ virDriverLoadModule(const char *name)
|
||||
return NULL;
|
||||
|
||||
if (access(modfile, R_OK) < 0) {
|
||||
- VIR_WARN("Module %s not accessible", modfile);
|
||||
+ VIR_INFO("Module %s not accessible", modfile);
|
||||
goto cleanup;
|
||||
}
|
||||
|
69
libvirt.spec
69
libvirt.spec
|
@ -377,8 +377,8 @@
|
|||
|
||||
Summary: Library providing a simple virtualization API
|
||||
Name: libvirt
|
||||
Version: 1.2.18.2
|
||||
Release: 3%{?dist}%{?extra_release}
|
||||
Version: 1.2.18.3
|
||||
Release: 1%{?dist}%{?extra_release}
|
||||
License: LGPLv2+
|
||||
Group: Development/Libraries
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
||||
|
@ -389,34 +389,6 @@ URL: http://libvirt.org/
|
|||
%endif
|
||||
Source: http://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.gz
|
||||
|
||||
# Fix XML validation with qemu commandline passthrough (bz #1292131)
|
||||
Patch0001: 0001-schema-interleave-domain-name-and-uuid-with-other-el.patch
|
||||
# Fix crash in libvirt_leasehelper (bz #1202350)
|
||||
Patch0002: 0002-leaseshelper-fix-crash-when-no-mac-is-specified.patch
|
||||
# Generate consistent systemtap tapsets regardless of host arch (bz
|
||||
# #1173641)
|
||||
Patch0003: 0003-build-predictably-generate-systemtap-tapsets-bz-1173.patch
|
||||
# Fix qemu:///session error 'Transport endpoint is not connected' (bz
|
||||
# #1271183)
|
||||
Patch0004: 0004-rpc-socket-Minor-cleanups.patch
|
||||
Patch0005: 0005-rpc-socket-Explicitly-error-if-we-exceed-retry-count.patch
|
||||
Patch0006: 0006-rpc-socket-Don-t-repeatedly-attempt-to-launch-daemon.patch
|
||||
# Fix parallel VM start/top svirt errors on kernel/initrd (bz #1269975)
|
||||
Patch0007: 0007-security-Do-not-restore-kernel-and-initrd-labels.patch
|
||||
# Fix lxc /proc/meminfo virtualization (bz #1300781)
|
||||
Patch0008: 0008-virfile-Fix-error-path-for-forked-virFileRemove.patch
|
||||
Patch0009: 0009-lxc-fuse-Unindent-meminfo-logic.patch
|
||||
Patch0010: 0010-lxc-fuse-Fix-proc-meminfo-size-calculation.patch
|
||||
Patch0011: 0011-lxc-fuse-Fill-in-MemAvailable-for-proc-meminfo.patch
|
||||
Patch0012: 0012-lxc-fuse-Stub-out-Slab-bits-in-proc-meminfo.patch
|
||||
# Fix 'permission denied' errors trying to unlink disk images (bz #1289327)
|
||||
Patch0013: 0013-util-virfile-Clarify-setuid-usage-for-virFileRemove.patch
|
||||
Patch0014: 0014-util-virfile-Only-setuid-for-virFileRemove-if-on-NFS.patch
|
||||
# Fix qemu:///session connect race failures (bz #1271183)
|
||||
Patch0015: 0015-rpc-wait-longer-for-session-daemon-to-start-up.patch
|
||||
# driver: log missing modules as INFO, not WARN (bz #1274849)
|
||||
Patch0016: 0016-driver-log-missing-modules-as-INFO-not-WARN.patch
|
||||
|
||||
%if %{with_libvirtd}
|
||||
Requires: libvirt-daemon = %{version}-%{release}
|
||||
%if %{with_network}
|
||||
|
@ -1221,7 +1193,6 @@ namespaces.
|
|||
Summary: Libraries, includes, etc. to compile with the libvirt library
|
||||
Group: Development/Libraries
|
||||
Requires: %{name}-client = %{version}-%{release}
|
||||
Requires: %{name}-docs = %{version}-%{release}
|
||||
Requires: pkgconfig
|
||||
|
||||
%description devel
|
||||
|
@ -1828,6 +1799,14 @@ if test $1 -eq 1 && test ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml ;
|
|||
< %{_datadir}/libvirt/networks/default.xml \
|
||||
> %{_sysconfdir}/libvirt/qemu/networks/default.xml
|
||||
ln -s ../default.xml %{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml
|
||||
|
||||
# Make sure libvirt picks up the new network defininiton
|
||||
%if %{with_systemd}
|
||||
/bin/systemctl try-restart libvirtd.service >/dev/null 2>&1 ||:
|
||||
%else
|
||||
/sbin/service libvirtd condrestart > /dev/null 2>&1 || :
|
||||
%endif
|
||||
|
||||
fi
|
||||
%endif
|
||||
|
||||
|
@ -1925,7 +1904,8 @@ exit 0
|
|||
|
||||
%files docs
|
||||
%defattr(-, root, root)
|
||||
%doc AUTHORS ChangeLog.gz NEWS README TODO libvirt-docs/*
|
||||
%doc AUTHORS ChangeLog.gz NEWS README TODO
|
||||
%doc libvirt-docs/*
|
||||
|
||||
# API docs
|
||||
%dir %{_datadir}/gtk-doc/html/libvirt/
|
||||
|
@ -1933,6 +1913,15 @@ exit 0
|
|||
%doc %{_datadir}/gtk-doc/html/libvirt/*.html
|
||||
%doc %{_datadir}/gtk-doc/html/libvirt/*.png
|
||||
%doc %{_datadir}/gtk-doc/html/libvirt/*.css
|
||||
%doc examples/hellolibvirt
|
||||
%doc examples/object-events
|
||||
%doc examples/dominfo
|
||||
%doc examples/domsuspend
|
||||
%doc examples/dommigrate
|
||||
%doc examples/openauth
|
||||
%doc examples/xml
|
||||
%doc examples/systemtap
|
||||
|
||||
|
||||
%if %{with_libvirtd}
|
||||
%files daemon
|
||||
|
@ -2345,20 +2334,14 @@ exit 0
|
|||
%{_datadir}/libvirt/api/libvirt-api.xml
|
||||
%{_datadir}/libvirt/api/libvirt-qemu-api.xml
|
||||
%{_datadir}/libvirt/api/libvirt-lxc-api.xml
|
||||
|
||||
|
||||
%doc docs/*.html docs/html docs/*.gif
|
||||
# Needed building python bindings
|
||||
%doc docs/libvirt-api.xml
|
||||
%doc examples/hellolibvirt
|
||||
%doc examples/object-events
|
||||
%doc examples/dominfo
|
||||
%doc examples/domsuspend
|
||||
%doc examples/dommigrate
|
||||
%doc examples/openauth
|
||||
%doc examples/xml
|
||||
%doc examples/systemtap
|
||||
|
||||
%changelog
|
||||
* Wed May 04 2016 Cole Robinson <crobinso@redhat.com> - 1.2.18.3-1
|
||||
- Rebased to version 1.2.18.3
|
||||
- Start network after config-network RPM install (bz #867546)
|
||||
|
||||
* Thu Mar 17 2016 Cole Robinson <crobinso@redhat.com> - 1.2.18.2-3
|
||||
- Fix lxc /proc/meminfo virtualization (bz #1300781)
|
||||
- Fix 'permission denied' errors trying to unlink disk images (bz #1289327)
|
||||
|
|
Loading…
Reference in New Issue