[libvirt] [PATCH] Do not include binaries in EXTRA_DIST
by Daniel Veillard
commit f27f616ff899732fe90ce1f0f4abb3887cea5e17 broke "make dist"
by adding qemumonitortest which is a generated binary to the
EXTRA_DIST, hence breaking "make dist"
Pushed as trivial build breaker.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 3e505a5..0c8cf37 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -72,7 +72,6 @@ EXTRA_DIST = \
nwfilterxml2xmlout \
oomtrace.pl \
qemuhelpdata \
- qemumonitortest \
qemuxml2argvdata \
qemuxml2xmloutdata \
qemuxmlnsdata \
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
12 years, 8 months
[libvirt] [libvirt-glib] Remove now redundant 'path' property
by Zeeshan Ali (Khattak)
From: "Zeeshan Ali (Khattak)" <zeeshanak(a)gnome.org>
Remove now redundant 'path' property from GVirDomainDevice subclasses.
These classes now have access to their configurations, from which they
can easily get the path (among other properties) internally.
---
libvirt-gobject/libvirt-gobject-domain-disk.c | 88 ++++----------------
libvirt-gobject/libvirt-gobject-domain-disk.h | 3 +-
libvirt-gobject/libvirt-gobject-domain-interface.c | 89 +++-----------------
libvirt-gobject/libvirt-gobject-domain-interface.h | 3 +-
4 files changed, 31 insertions(+), 152 deletions(-)
diff --git a/libvirt-gobject/libvirt-gobject-domain-disk.c b/libvirt-gobject/libvirt-gobject-domain-disk.c
index fb7672e..42e0e6c 100644
--- a/libvirt-gobject/libvirt-gobject-domain-disk.c
+++ b/libvirt-gobject/libvirt-gobject-domain-disk.c
@@ -34,75 +34,22 @@
#define GVIR_DOMAIN_DISK_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_DOMAIN_DISK, GVirDomainDiskPrivate))
-struct _GVirDomainDiskPrivate
-{
- gchar *path;
-};
-
G_DEFINE_TYPE(GVirDomainDisk, gvir_domain_disk, GVIR_TYPE_DOMAIN_DEVICE);
-enum {
- PROP_0,
- PROP_PATH,
-};
-
#define GVIR_DOMAIN_DISK_ERROR gvir_domain_disk_error_quark()
-
static GQuark
gvir_domain_disk_error_quark(void)
{
return g_quark_from_static_string("gvir-domain-disk");
}
-static void gvir_domain_disk_get_property(GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GVirDomainDisk *self = GVIR_DOMAIN_DISK(object);
- GVirDomainDiskPrivate *priv = self->priv;
-
- switch (prop_id) {
- case PROP_PATH:
- g_value_set_string(value, priv->path);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- }
-}
-
-
-static void gvir_domain_disk_set_property(GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GVirDomainDisk *self = GVIR_DOMAIN_DISK(object);
- GVirDomainDiskPrivate *priv = self->priv;
-
- switch (prop_id) {
- case PROP_PATH:
- g_free(priv->path);
- priv->path = g_value_dup_string(value);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- }
-}
-
-
static void gvir_domain_disk_finalize(GObject *object)
{
GVirDomainDisk *self = GVIR_DOMAIN_DISK(object);
- GVirDomainDiskPrivate *priv = self->priv;
g_debug("Finalize GVirDomainDisk=%p", self);
- g_free(priv->path);
-
G_OBJECT_CLASS(gvir_domain_disk_parent_class)->finalize(object);
}
@@ -111,27 +58,11 @@ static void gvir_domain_disk_class_init(GVirDomainDiskClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = gvir_domain_disk_finalize;
- object_class->get_property = gvir_domain_disk_get_property;
- object_class->set_property = gvir_domain_disk_set_property;
-
- g_object_class_install_property(object_class,
- PROP_PATH,
- g_param_spec_string("path",
- "Path",
- "The disk path",
- NULL,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY |
- G_PARAM_STATIC_STRINGS));
-
- g_type_class_add_private(klass, sizeof(GVirDomainDiskPrivate));
}
static void gvir_domain_disk_init(GVirDomainDisk *self)
{
g_debug("Init GVirDomainDisk=%p", self);
-
- self->priv = GVIR_DOMAIN_DISK_GET_PRIVATE(self);
}
static GVirDomainDiskStats *
@@ -151,6 +82,15 @@ gvir_domain_disk_stats_free(GVirDomainDiskStats *stats)
G_DEFINE_BOXED_TYPE(GVirDomainDiskStats, gvir_domain_disk_stats,
gvir_domain_disk_stats_copy, gvir_domain_disk_stats_free)
+static const gchar *gvir_domain_disk_get_path(GVirDomainDisk *self)
+{
+ GVirConfigDomainDevice *config;
+
+ config = gvir_domain_device_get_config(GVIR_DOMAIN_DEVICE(self));
+
+ return gvir_config_domain_disk_get_target_dev (GVIR_CONFIG_DOMAIN_DISK (config));
+}
+
/**
* gvir_domain_disk_get_stats:
* @self: the domain disk
@@ -166,15 +106,15 @@ GVirDomainDiskStats *gvir_domain_disk_get_stats(GVirDomainDisk *self, GError **e
{
GVirDomainDiskStats *ret = NULL;
virDomainBlockStatsStruct stats;
- GVirDomainDiskPrivate *priv;
virDomainPtr handle;
+ const gchar *path;
g_return_val_if_fail(GVIR_IS_DOMAIN_DISK(self), NULL);
- priv = self->priv;
handle = gvir_domain_device_get_domain_handle(GVIR_DOMAIN_DEVICE(self));
+ path = gvir_domain_disk_get_path (self);
- if (virDomainBlockStats(handle, priv->path, &stats, sizeof (stats)) < 0) {
+ if (virDomainBlockStats(handle, path, &stats, sizeof (stats)) < 0) {
gvir_set_error_literal(err, GVIR_DOMAIN_DISK_ERROR,
0,
"Unable to get domain disk stats");
@@ -211,13 +151,15 @@ gboolean gvir_domain_disk_resize(GVirDomainDisk *self,
{
gboolean ret = FALSE;
virDomainPtr handle;
+ const gchar *path;
g_return_val_if_fail(GVIR_IS_DOMAIN_DISK(self), FALSE);
g_return_val_if_fail(err == NULL || *err != NULL, FALSE);
handle = gvir_domain_device_get_domain_handle(GVIR_DOMAIN_DEVICE(self));
+ path = gvir_domain_disk_get_path (self);
- if (virDomainBlockResize(handle, self->priv->path, size, flags) < 0) {
+ if (virDomainBlockResize(handle, path, size, flags) < 0) {
gvir_set_error_literal(err, GVIR_DOMAIN_DISK_ERROR,
0,
"Failed to resize domain disk");
diff --git a/libvirt-gobject/libvirt-gobject-domain-disk.h b/libvirt-gobject/libvirt-gobject-domain-disk.h
index 1788d63..fb8b3dc 100644
--- a/libvirt-gobject/libvirt-gobject-domain-disk.h
+++ b/libvirt-gobject/libvirt-gobject-domain-disk.h
@@ -56,7 +56,8 @@ struct _GVirDomainDisk
{
GVirDomainDevice parent;
- GVirDomainDiskPrivate *priv;
+ /* In case we need a private struct in future */
+ gpointer padding[1];
/* Do not add fields to this struct */
};
diff --git a/libvirt-gobject/libvirt-gobject-domain-interface.c b/libvirt-gobject/libvirt-gobject-domain-interface.c
index 0917e03..9ec3877 100644
--- a/libvirt-gobject/libvirt-gobject-domain-interface.c
+++ b/libvirt-gobject/libvirt-gobject-domain-interface.c
@@ -31,78 +31,22 @@
#include "libvirt-gobject/libvirt-gobject-domain-device-private.h"
-#define GVIR_DOMAIN_INTERFACE_GET_PRIVATE(obj) \
- (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_DOMAIN_INTERFACE, GVirDomainInterfacePrivate))
-
-struct _GVirDomainInterfacePrivate
-{
- gchar *path;
-};
-
G_DEFINE_TYPE(GVirDomainInterface, gvir_domain_interface, GVIR_TYPE_DOMAIN_DEVICE);
-enum {
- PROP_0,
- PROP_PATH,
-};
-
#define GVIR_DOMAIN_INTERFACE_ERROR gvir_domain_interface_error_quark()
-
static GQuark
gvir_domain_interface_error_quark(void)
{
return g_quark_from_static_string("gvir-domain-interface");
}
-static void gvir_domain_interface_get_property(GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GVirDomainInterface *self = GVIR_DOMAIN_INTERFACE(object);
- GVirDomainInterfacePrivate *priv = self->priv;
-
- switch (prop_id) {
- case PROP_PATH:
- g_value_set_string(value, priv->path);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- }
-}
-
-
-static void gvir_domain_interface_set_property(GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GVirDomainInterface *self = GVIR_DOMAIN_INTERFACE(object);
- GVirDomainInterfacePrivate *priv = self->priv;
-
- switch (prop_id) {
- case PROP_PATH:
- g_free(priv->path);
- priv->path = g_value_dup_string(value);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- }
-}
-
-
static void gvir_domain_interface_finalize(GObject *object)
{
GVirDomainInterface *self = GVIR_DOMAIN_INTERFACE(object);
- GVirDomainInterfacePrivate *priv = self->priv;
g_debug("Finalize GVirDomainInterface=%p", self);
- g_free(priv->path);
-
G_OBJECT_CLASS(gvir_domain_interface_parent_class)->finalize(object);
}
@@ -111,27 +55,11 @@ static void gvir_domain_interface_class_init(GVirDomainInterfaceClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = gvir_domain_interface_finalize;
- object_class->get_property = gvir_domain_interface_get_property;
- object_class->set_property = gvir_domain_interface_set_property;
-
- g_object_class_install_property(object_class,
- PROP_PATH,
- g_param_spec_string("path",
- "Path",
- "The interface path",
- NULL,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY |
- G_PARAM_STATIC_STRINGS));
-
- g_type_class_add_private(klass, sizeof(GVirDomainInterfacePrivate));
}
static void gvir_domain_interface_init(GVirDomainInterface *self)
{
g_debug("Init GVirDomainInterface=%p", self);
-
- self->priv = GVIR_DOMAIN_INTERFACE_GET_PRIVATE(self);
}
static GVirDomainInterfaceStats *
@@ -140,17 +68,24 @@ gvir_domain_interface_stats_copy(GVirDomainInterfaceStats *stats)
return g_slice_dup(GVirDomainInterfaceStats, stats);
}
-
static void
gvir_domain_interface_stats_free(GVirDomainInterfaceStats *stats)
{
g_slice_free(GVirDomainInterfaceStats, stats);
}
-
G_DEFINE_BOXED_TYPE(GVirDomainInterfaceStats, gvir_domain_interface_stats,
gvir_domain_interface_stats_copy, gvir_domain_interface_stats_free)
+static const gchar *gvir_domain_interface_get_path(GVirDomainInterface *self)
+{
+ GVirConfigDomainDevice *config;
+
+ config = gvir_domain_device_get_config(GVIR_DOMAIN_DEVICE(self));
+
+ return gvir_config_domain_interface_get_ifname (GVIR_CONFIG_DOMAIN_INTERFACE (config));
+}
+
/**
* gvir_domain_interface_get_stats:
* @self: the domain interface
@@ -166,15 +101,15 @@ GVirDomainInterfaceStats *gvir_domain_interface_get_stats(GVirDomainInterface *s
{
GVirDomainInterfaceStats *ret = NULL;
virDomainInterfaceStatsStruct stats;
- GVirDomainInterfacePrivate *priv;
virDomainPtr handle;
+ const gchar *path;
g_return_val_if_fail(GVIR_IS_DOMAIN_INTERFACE(self), NULL);
- priv = self->priv;
handle = gvir_domain_device_get_domain_handle(GVIR_DOMAIN_DEVICE(self));
+ path = gvir_domain_interface_get_path (self);
- if (virDomainInterfaceStats(handle, priv->path, &stats, sizeof (stats)) < 0) {
+ if (virDomainInterfaceStats(handle, path, &stats, sizeof (stats)) < 0) {
gvir_set_error_literal(err, GVIR_DOMAIN_INTERFACE_ERROR,
0,
"Unable to get domain interface stats");
diff --git a/libvirt-gobject/libvirt-gobject-domain-interface.h b/libvirt-gobject/libvirt-gobject-domain-interface.h
index 62848db..26b7d1c 100644
--- a/libvirt-gobject/libvirt-gobject-domain-interface.h
+++ b/libvirt-gobject/libvirt-gobject-domain-interface.h
@@ -59,7 +59,8 @@ struct _GVirDomainInterface
{
GVirDomainDevice parent;
- GVirDomainInterfacePrivate *priv;
+ /* In case we need a private struct in future */
+ gpointer padding[1];
/* Do not add fields to this struct */
};
--
1.7.7.6
12 years, 8 months
[libvirt] Fwd: for help
by 李成双
---------- 已转发邮件 ----------
发件人: 李成双 <lichengshuang(a)gmail.com>
日期: 2012年2月28日 下午8:15
主题: for help
收件人: netwiz(a)crc.id.au
hi
Some of the problems encountered in the installation process your
document to you for help.
PASS: vmx2xmltest
TEST: xml2vmxtest
........................................ 40
. 41 OK
PASS: xml2vmxtest
TEST: eventtest
............... 15 OK
PASS: eventtest
TEST: networkxml2xmltest
............ 12 OK
PASS: networkxml2xmltest
TEST: networkxml2argvtest
....... 7 OK
PASS: networkxml2argvtest
TEST: storagevolxml2xmltest
...... 6 OK
PASS: storagevolxml2xmltest
TEST: storagepoolxml2xmltest
............ 12 OK
PASS: storagepoolxml2xmltest
TEST: nodedevxml2xmltest
............. 13 OK
PASS: nodedevxml2xmltest
TEST: interfacexml2xmltest
................... 19 OK
PASS: interfacexml2xmltest
TEST: cputest
........................................ 40
................. 57 OK
PASS: cputest
=======================================
1 of 59 tests failed
(2 tests were not run)
Please report to libvir-list(a)redhat.com
=======================================
make[1]: *** [check-TESTS] Error 1
make[1]: Leaving directory `/root/rpmbuild/BUILD/libvirt-0.9.4/tests'
make: *** [check-am] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.r4iOXk (%check)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.r4iOXk (%check)
--
李成双
--
李成双
12 years, 9 months
[libvirt] [PATCH] docs: Fix libvirt name in qemu commandline namespace URL
by Michal Privoznik
s/libirt/libvirt/g
---
Pushed under trivial rule.
docs/drvqemu.html.in | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/drvqemu.html.in b/docs/drvqemu.html.in
index fc76829..9afae13 100644
--- a/docs/drvqemu.html.in
+++ b/docs/drvqemu.html.in
@@ -551,7 +551,7 @@ $ virsh domxml-to-native qemu-argv demo.xml
(<span class="since">Since 0.8.3</span>). In order to use the
XML additions, it is necessary to issue an XML namespace request
(the special <code>xmlns:<i>name</i></code> attribute) that
- pulls in <code>http://libirt.org/schemas/domain/qemu/1.0</code>;
+ pulls in <code>http://libvirt.org/schemas/domain/qemu/1.0</code>;
typically, the namespace is given the name
of <code>qemu</code>. With the namespace in place, it is then
possible to add an element <code><qemu:commandline></code>
@@ -571,7 +571,7 @@ $ virsh domxml-to-native qemu-argv demo.xml
</dl>
<p>Example:</p><pre>
-<domain type='qemu' xmlns:qemu='http://libirt.org/schemas/domain/qemu/1.0'>
+<domain type='qemu' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
<name>QEmu-fedora-i686</name>
<memory>219200</memory>
<os>
--
1.7.3.4
12 years, 9 months
[libvirt] [PATCH 1/1] Clarify what documentation is being referenced
by Dave Allan
virsh.pod had several instances in which it referred to "the
documentation" which was a little puzzling to me since it is
documentation. Reading the document from end to end makes it clear
that it means a specific URI which was noted previously in the text,
but I had never noticed those URI in several years of referring to the
man page. This patch adds those URIs to several additional places in
the text.
---
tools/virsh.pod | 38 ++++++++++++++++++++++----------------
1 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/tools/virsh.pod b/tools/virsh.pod
index cb0d9b9..6040d40 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -73,7 +73,7 @@ instead of the default connection.
Enable debug messages at integer I<LEVEL> and above. I<LEVEL> can
range from 0 to 4 (default). See the documentation of B<VIRSH_DEBUG>
-environment variable for the description of each I<LEVEL>.
+environment variable below for the description of each I<LEVEL>.
=item B<-l>, B<--log> I<FILE>
@@ -224,7 +224,8 @@ connect to a local linux container
=back
-For remote access see the documentation page on how to make URIs.
+For remote access see the documentation page at
+L<http://libvirt.org/uri.html> list on how to make URIs.
The I<--readonly> option allows for read-only connection
=item B<uri>
@@ -1433,12 +1434,14 @@ format of the device sections to get the most accurate set of accepted values.
=item B<attach-device> I<domain-id> I<FILE>
-Attach a device to the domain, using a device definition in an XML file.
-See the documentation to learn about libvirt XML format for a device.
-For cdrom and floppy devices, this command only replaces the media within
-the single existing device; consider using B<update-device> for this usage.
-For passthrough host devices, see also B<nodedev-dettach>, needed if
-the device does not use managed mode.
+Attach a device to the domain, using a device definition in an XML
+file. See the documentation at
+L<http://libvirt.org/formatdomain.html> to learn about libvirt XML
+format for a device. For cdrom and floppy devices, this command only
+replaces the media within the single existing device; consider using
+B<update-device> for this usage. For passthrough host devices, see
+also B<nodedev-dettach>, needed if the device does not use managed
+mode.
=item B<attach-disk> I<domain-id> I<source> I<target>
[I<--driver driver>] [I<--subdriver subdriver>] [I<--cache cache>]
@@ -1508,12 +1511,14 @@ if more than one are present on the domain.
=item B<update-device> I<domain-id> I<file> [I<--persistent>] [I<--force>]
-Update the characteristics of a device associated with I<domain-id>, based on
-the device definition in an XML I<file>. If the I<--persistent> option is
-used, the changes will affect the next boot of the domain. The I<--force>
-option can be used to force device update, e.g., to eject a CD-ROM even if it
-is locked/mounted in the domain. See the documentation to learn about libvirt
-XML format for a device.
+Update the characteristics of a device associated with I<domain-id>,
+based on the device definition in an XML I<file>. If the
+I<--persistent> option is used, the changes will affect the next boot
+of the domain. The I<--force> option can be used to force device
+update, e.g., to eject a CD-ROM even if it is locked/mounted in the
+domain. See the documentation at
+L<http://libvirt.org/formatdomain.html> to learn about libvirt XML
+format for a device.
=back
@@ -1617,8 +1622,9 @@ The I<--disable> option disable autostarting.
=item B<net-create> I<file>
-Create a virtual network from an XML I<file>, see the documentation to get
-a description of the XML network format used by libvirt.
+Create a virtual network from an XML I<file>, see the documentation at
+L<http://libvirt.org/formatnetwork.html> to get a description of the
+XML network format used by libvirt.
=item B<net-define> I<file>
--
1.7.7.6
12 years, 9 months
[libvirt] libvirt TCK wrapper for autotest review
by Lucas Meneghel Rodrigues
Hi guys,
I was here looking at the autotest wrapper for libvirt TCK and then
decided to work on it, as I had the review fresh on my mind. Things that
I've worked on:
* Fixed some download links, that were already sent to upstream tck and
applied (thanks Dan Berrange)
* Instead of making all tests output to the same DEBUG log, make them
output to separate .tap files on the results directory
* Run all tests available for a given item, rather than stopping the
test on the first failure
* removed capitalization on the wrapper name, since it's project policy
* Use os.environ, and some features of the subcommand execution API to
execute the tests
* Remove usages of error.JobError, as the problems there are more
error.TestError, since they are restricted to the libvirt_tck test, not
the entire job (in autotest, a job can do more stuff than just a
sequence of job.runtest() calls).
* Made the error messages more descriptive, with info of all failed tests
So, the current output of the tests is like this:
$ sudo client/bin/autotest run libvirt_tck
18:29:27 INFO | Writing results to
/home/lmr/Code/autotest.lmr/client/results/default
18:29:27 INFO | START ---- ---- timestamp=1329942567 localtime=Feb 22
18:29:27
18:29:27 INFO | START libvirt_tck.domain libvirt_tck.domain
timestamp=1329942567 localtime=Feb 22 18:29:27
18:30:19 ERROR| child process failed
18:30:19 INFO | FAIL libvirt_tck.domain libvirt_tck.domain
timestamp=1329942619 localtime=Feb 22 18:30:19 FAIL:
['120-disks-stats.t', '205-disk-hotplug-ordering.t']
18:30:19 INFO | END FAIL libvirt_tck.domain libvirt_tck.domain
timestamp=1329942619 localtime=Feb 22 18:30:19
18:30:19 INFO | START libvirt_tck.hooks libvirt_tck.hooks
timestamp=1329942619 localtime=Feb 22 18:30:19
18:30:19 ERROR| child process failed
18:30:19 INFO | FAIL libvirt_tck.hooks libvirt_tck.hooks
timestamp=1329942619 localtime=Feb 22 18:30:19 FAIL:
['051-daemon-hook.t', '052-domain-hook.t']
18:30:19 INFO | END FAIL libvirt_tck.hooks libvirt_tck.hooks
timestamp=1329942619 localtime=Feb 22 18:30:19
18:30:19 INFO | START libvirt_tck.networks libvirt_tck.networks
timestamp=1329942619 localtime=Feb 22 18:30:19
18:30:28 INFO | GOOD libvirt_tck.networks libvirt_tck.networks
timestamp=1329942628 localtime=Feb 22 18:30:28 completed successfully
18:30:28 INFO | END GOOD libvirt_tck.networks libvirt_tck.networks
timestamp=1329942628 localtime=Feb 22 18:30:28
18:30:28 INFO | START libvirt_tck.nwfilter libvirt_tck.nwfilter
timestamp=1329942628 localtime=Feb 22 18:30:28
18:30:32 ERROR| child process failed
18:30:32 INFO | FAIL libvirt_tck.nwfilter libvirt_tck.nwfilter
timestamp=1329942632 localtime=Feb 22 18:30:32 FAIL:
['090-install-image.t', '100-ping-still-working.t',
'210-no-mac-spoofing.t', '220-no-ip-spoofing.t',
'230-no-mac-broadcast.t', '240-no-arp-spoofing.t', '300-vsitype.t']
18:30:32 INFO | END FAIL libvirt_tck.nwfilter libvirt_tck.nwfilter
timestamp=1329942632 localtime=Feb 22 18:30:32
18:30:32 INFO | START libvirt_tck.qemu libvirt_tck.qemu
timestamp=1329942632 localtime=Feb 22 18:30:32
18:30:40 ERROR| child process failed
18:30:40 INFO | FAIL libvirt_tck.qemu libvirt_tck.qemu
timestamp=1329942640 localtime=Feb 22 18:30:40 FAIL:
['205-qcow2-double-backing-file.t']
18:30:40 INFO | END FAIL libvirt_tck.qemu libvirt_tck.qemu
timestamp=1329942640 localtime=Feb 22 18:30:40
18:30:40 INFO | START libvirt_tck.selinux libvirt_tck.selinux
timestamp=1329942640 localtime=Feb 22 18:30:40
18:30:49 ERROR| child process failed
18:30:49 INFO | FAIL libvirt_tck.selinux libvirt_tck.selinux
timestamp=1329942649 localtime=Feb 22 18:30:49 FAIL:
['055-dynamic-base-label.t', '100-static-relabel-no.t']
18:30:49 INFO | END FAIL libvirt_tck.selinux libvirt_tck.selinux
timestamp=1329942649 localtime=Feb 22 18:30:49
18:30:49 INFO | START libvirt_tck.storage libvirt_tck.storage
timestamp=1329942649 localtime=Feb 22 18:30:49
18:31:24 INFO | GOOD libvirt_tck.storage libvirt_tck.storage
timestamp=1329942684 localtime=Feb 22 18:31:24 completed successfully
18:31:24 INFO | END GOOD libvirt_tck.storage libvirt_tck.storage
timestamp=1329942684 localtime=Feb 22 18:31:24
18:31:24 INFO | END GOOD ---- ---- timestamp=1329942684 localtime=Feb
22 18:31:24
As time allows, I might take a look at the failures and help with
libvirt_tck.
I've combined all modifications to a single, self contained commit.
Also, as the work is self contained, it could be very very easily
rebased to the latest upstream tree. I've updated my personal repo and
sent a github pull request that you guys can see and review:
https://github.com/autotest/autotest/pull/192
I'm still not going to merge this to the upstream tree just yet, since
I'd like to hear some feedback from you guys. As for developing together
with autotest, I guess you can easily use the clone you have on libvirt
now, and on your working directory you can add the following remote:
[remote "upstream"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git://github.com/autotest/autotest.git
Then from time to time, you can just pull from upstream to your master
branch:
git pull upstream master
And then rebase your development trees:
git checkout tck
git rebase master
It should be painless, given the fact that the wrapper is pretty much
self contained, and isolated from the rest of the code.
Please let me know what you think,
Lucas
12 years, 9 months
[libvirt] [PATCH] qemu: fix cleanup of bridge during failure of qemuDomainAttachNetDevice
by Laine Stump
From: Laine Stump <laine(a)redhat.com>
In qemuDomainAttachNetDevice, the guest's tap interface has only been
attached to the bridge if iface_connected is true. It's possible for
an error to occur prior to that happening, and previously we would
attempt to remove the tap interface from the bridge even if it hadn't
been attached.
---
src/qemu/qemu_hotplug.c | 11 ++++++-----
1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index e90ea6c..375b822 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -837,13 +837,14 @@ cleanup:
net->info.addr.pci.slot) < 0)
VIR_WARN("Unable to release PCI address on NIC");
- if (iface_connected)
+ if (iface_connected) {
virDomainConfNWFilterTeardown(net);
- vport = virDomainNetGetActualVirtPortProfile(net);
- if (vport && vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH)
- ignore_value(virNetDevOpenvswitchRemovePort(
- virDomainNetGetActualBridgeName(net), net->ifname));
+ vport = virDomainNetGetActualVirtPortProfile(net);
+ if (vport && vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH)
+ ignore_value(virNetDevOpenvswitchRemovePort(
+ virDomainNetGetActualBridgeName(net), net->ifname));
+ }
networkReleaseActualDevice(net);
}
--
1.7.7.6
12 years, 9 months
[libvirt] [PATCH] libxl: eliminate memory leak in libxmlDomainModifyDeviceFlags
by Laine Stump
I found this randomly by examination when a tag search led me to this
file. I don't have a setup to test it, but it appears fairly obvious
that this call to virDomainDeviceDefParse is both unnecessary (since
it will again be called at the top of the immediately following if(),
and if not there, then at the top of the if following that), but it
also creates a leak of one virDomainDeviceDef and one [whatever type
of device the DeviceDef is pointing to; probably a virDomainDiskDef]
in the case that the function has been called with
VIR_DOMAIN_DEVICE_MODIFY_CONFIG (the second parse will overwrite the
devicedef that was just created).
---
src/libxl/libxl_driver.c | 4 ----
1 files changed, 0 insertions(+), 4 deletions(-)
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 6db33c2..d5fa64a 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -3243,10 +3243,6 @@ libxlDomainModifyDeviceFlags(virDomainPtr dom, const char *xml,
goto cleanup;
}
- if (!(dev = virDomainDeviceDefParse(driver->caps, vm->def, xml,
- VIR_DOMAIN_XML_INACTIVE)))
- goto cleanup;
-
priv = vm->privateData;
if (flags & VIR_DOMAIN_DEVICE_MODIFY_CONFIG) {
--
1.7.7.6
12 years, 9 months