* [Qemu-devel] [PULL 0/5] QMP queue
@ 2014-01-28 17:27 Luiz Capitulino
2014-01-28 17:27 ` [Qemu-devel] [PULL 1/5] object_add: consolidate error handling Luiz Capitulino
` (5 more replies)
0 siblings, 6 replies; 9+ messages in thread
From: Luiz Capitulino @ 2014-01-28 17:27 UTC (permalink / raw)
To: anthony; +Cc: qemu-devel
The changes (since 0169c511554cb0014a00290b0d3d26c31a49818f) are available
in the following repository:
git://repo.or.cz/qemu/qmp-unstable.git queue/qmp
Igor Mammedov (4):
object_add: consolidate error handling
vl.c: -object: don't ignore duplicate 'id'
add optional 2nd stage initialization to -object/object-add commands
virtio_rng: replace custom backend API with UserCreatable.complete()
callback
Stratos Psomadakis (1):
monitor: Cleanup mon->outbuf on write error
backends/rng.c | 17 +++++++++--
hw/virtio/virtio-rng.c | 15 ++++++----
include/qom/object_interfaces.h | 62 +++++++++++++++++++++++++++++++++++++++++
include/sysemu/rng.h | 11 --------
monitor.c | 4 +--
qmp.c | 22 ++++++++++++---
qom/Makefile.objs | 1 +
qom/object_interfaces.c | 32 +++++++++++++++++++++
vl.c | 22 ++++++++++++++-
9 files changed, 160 insertions(+), 26 deletions(-)
create mode 100644 include/qom/object_interfaces.h
create mode 100644 qom/object_interfaces.c
--
1.8.1.4
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Qemu-devel] [PULL 1/5] object_add: consolidate error handling
2014-01-28 17:27 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
@ 2014-01-28 17:27 ` Luiz Capitulino
2014-01-28 17:27 ` [Qemu-devel] [PULL 2/5] vl.c: -object: don't ignore duplicate 'id' Luiz Capitulino
` (4 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Luiz Capitulino @ 2014-01-28 17:27 UTC (permalink / raw)
To: anthony; +Cc: qemu-devel
From: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
qmp.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/qmp.c b/qmp.c
index 0f46171..a67e0c4 100644
--- a/qmp.c
+++ b/qmp.c
@@ -549,15 +549,17 @@ void object_add(const char *type, const char *id, const QDict *qdict,
for (e = qdict_first(qdict); e; e = qdict_next(qdict, e)) {
object_property_set(obj, v, e->key, &local_err);
if (local_err) {
- error_propagate(errp, local_err);
- object_unref(obj);
- return;
+ goto out;
}
}
}
object_property_add_child(container_get(object_get_root(), "/objects"),
- id, obj, errp);
+ id, obj, &local_err);
+out:
+ if (local_err) {
+ error_propagate(errp, local_err);
+ }
object_unref(obj);
}
--
1.8.1.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PULL 2/5] vl.c: -object: don't ignore duplicate 'id'
2014-01-28 17:27 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
2014-01-28 17:27 ` [Qemu-devel] [PULL 1/5] object_add: consolidate error handling Luiz Capitulino
@ 2014-01-28 17:27 ` Luiz Capitulino
2014-01-28 17:27 ` [Qemu-devel] [PULL 3/5] add optional 2nd stage initialization to -object/object-add commands Luiz Capitulino
` (3 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Luiz Capitulino @ 2014-01-28 17:27 UTC (permalink / raw)
To: anthony; +Cc: qemu-devel
From: Igor Mammedov <imammedo@redhat.com>
object_property_add_child() may fail if 'id' matches
an already existing object. Which means an incorrect
command line.
So instead of silently ignoring error, report it and
terminate QEMU.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
vl.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/vl.c b/vl.c
index 7f4fe0d..cf3de56 100644
--- a/vl.c
+++ b/vl.c
@@ -2800,6 +2800,7 @@ static int object_create(QemuOpts *opts, void *opaque)
{
const char *type = qemu_opt_get(opts, "qom-type");
const char *id = qemu_opts_id(opts);
+ Error *local_err = NULL;
Object *obj;
g_assert(type != NULL);
@@ -2816,8 +2817,14 @@ static int object_create(QemuOpts *opts, void *opaque)
}
object_property_add_child(container_get(object_get_root(), "/objects"),
- id, obj, NULL);
+ id, obj, &local_err);
+
object_unref(obj);
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
return 0;
}
--
1.8.1.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PULL 3/5] add optional 2nd stage initialization to -object/object-add commands
2014-01-28 17:27 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
2014-01-28 17:27 ` [Qemu-devel] [PULL 1/5] object_add: consolidate error handling Luiz Capitulino
2014-01-28 17:27 ` [Qemu-devel] [PULL 2/5] vl.c: -object: don't ignore duplicate 'id' Luiz Capitulino
@ 2014-01-28 17:27 ` Luiz Capitulino
2014-01-28 17:34 ` Eric Blake
2014-01-28 17:27 ` [Qemu-devel] [PULL 4/5] virtio_rng: replace custom backend API with UserCreatable.complete() callback Luiz Capitulino
` (2 subsequent siblings)
5 siblings, 1 reply; 9+ messages in thread
From: Luiz Capitulino @ 2014-01-28 17:27 UTC (permalink / raw)
To: anthony; +Cc: qemu-devel
From: Igor Mammedov <imammedo@redhat.com>
Introduces USER_CREATABLE interface that must be implemented by
objects which are designed to created with -object CLI option or
object-add QMP command.
Interface provides an ability to do an optional second stage
initialization of the object created with -object/object-add
commands. By providing complete() callback, which is called
after the object properties were set.
It allows to:
* prevents misusing of -object/object-add by filtering out
objects that are not designed for it.
* generalize second stage backend initialization instead of
adding custom APIs to perform it
* early error detection of backend initialization at -object/
object-add time rather than through a proxy DEVICE object
that tries to use backend.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
backends/rng.c | 5 ++++
include/qom/object_interfaces.h | 62 +++++++++++++++++++++++++++++++++++++++++
qmp.c | 12 ++++++++
qom/Makefile.objs | 1 +
qom/object_interfaces.c | 32 +++++++++++++++++++++
vl.c | 13 +++++++++
6 files changed, 125 insertions(+)
create mode 100644 include/qom/object_interfaces.h
create mode 100644 qom/object_interfaces.c
diff --git a/backends/rng.c b/backends/rng.c
index 85cb83f..7bab806 100644
--- a/backends/rng.c
+++ b/backends/rng.c
@@ -12,6 +12,7 @@
#include "sysemu/rng.h"
#include "qapi/qmp/qerror.h"
+#include "qom/object_interfaces.h"
void rng_backend_request_entropy(RngBackend *s, size_t size,
EntropyReceiveFunc *receive_entropy,
@@ -83,6 +84,10 @@ static const TypeInfo rng_backend_info = {
.instance_init = rng_backend_init,
.class_size = sizeof(RngBackendClass),
.abstract = true,
+ .interfaces = (InterfaceInfo[]) {
+ { TYPE_USER_CREATABLE },
+ { }
+ }
};
static void register_types(void)
diff --git a/include/qom/object_interfaces.h b/include/qom/object_interfaces.h
new file mode 100644
index 0000000..eaf933f
--- /dev/null
+++ b/include/qom/object_interfaces.h
@@ -0,0 +1,62 @@
+#ifndef OBJECT_INTERFACES_H
+#define OBJECT_INTERFACES_H
+
+#include "qom/object.h"
+
+#define TYPE_USER_CREATABLE "user-creatable"
+
+#define USER_CREATABLE_CLASS(klass) \
+ OBJECT_CLASS_CHECK(UserCreatableClass, (klass), \
+ TYPE_USER_CREATABLE)
+#define USER_CREATABLE_GET_CLASS(obj) \
+ OBJECT_GET_CLASS(UserCreatableClass, (obj), \
+ TYPE_USER_CREATABLE)
+#define USER_CREATABLE(obj) \
+ INTERFACE_CHECK(UserCreatable, (obj), \
+ TYPE_USER_CREATABLE)
+
+
+typedef struct UserCreatable {
+ /* <private> */
+ Object Parent;
+} UserCreatable;
+
+/**
+ * UserCreatableClass:
+ * @parent_class: the base class
+ * @complete: callback to be called after @obj's properties are set.
+ *
+ * Interface is designed to work with -object/object-add/object_add
+ * commands.
+ * Interface in mandatory for objects that are designed to be user
+ * creatable (i.e. -object/object-add/object_add, will accept only
+ * objects that inherit this interface).
+ *
+ * iInterface also provides an optional ability to do the second
+ * stage * initialization of the object after its properties were
+ * set.
+ *
+ * For objects created without using -object/object-add/object_add,
+ * @user_creatable_complete() wrapper should be called manually if
+ * object's type implements USER_CREATABLE interface and needs
+ * complete() callback to be called.
+ */
+typedef struct UserCreatableClass {
+ /* <private> */
+ InterfaceClass parent_class;
+
+ /* <public> */
+ void (*complete)(UserCreatable *uc, Error **errp);
+} UserCreatableClass;
+
+/**
+ * user_creatable_complete:
+ * @obj: the object whose complete() method is called if defined
+ * @errp: if an error occurs, a pointer to an area to store the error
+ *
+ * Wrapper to call complete() method if one of types it's inherited
+ * from implements USER_CREATABLE interface, otherwise the call does
+ * nothing.
+ */
+void user_creatable_complete(Object *obj, Error **errp);
+#endif
diff --git a/qmp.c b/qmp.c
index a67e0c4..d0d98e7 100644
--- a/qmp.c
+++ b/qmp.c
@@ -27,6 +27,7 @@
#include "qapi/qmp/qobject.h"
#include "qapi/qmp-input-visitor.h"
#include "hw/boards.h"
+#include "qom/object_interfaces.h"
NameInfo *qmp_query_name(Error **errp)
{
@@ -554,6 +555,17 @@ void object_add(const char *type, const char *id, const QDict *qdict,
}
}
+ if (!object_dynamic_cast(obj, TYPE_USER_CREATABLE)) {
+ error_setg(&local_err, "object '%s' isn't supported by object-add",
+ id);
+ goto out;
+ }
+
+ user_creatable_complete(obj, &local_err);
+ if (local_err) {
+ goto out;
+ }
+
object_property_add_child(container_get(object_get_root(), "/objects"),
id, obj, &local_err);
out:
diff --git a/qom/Makefile.objs b/qom/Makefile.objs
index 6a93ac7..985003b 100644
--- a/qom/Makefile.objs
+++ b/qom/Makefile.objs
@@ -1,2 +1,3 @@
common-obj-y = object.o container.o qom-qobject.o
common-obj-y += cpu.o
+common-obj-y += object_interfaces.o
diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c
new file mode 100644
index 0000000..6360818
--- /dev/null
+++ b/qom/object_interfaces.c
@@ -0,0 +1,32 @@
+#include "qom/object_interfaces.h"
+#include "qemu/module.h"
+
+void user_creatable_complete(Object *obj, Error **errp)
+{
+
+ UserCreatableClass *ucc;
+ UserCreatable *uc =
+ (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE);
+
+ if (!uc) {
+ return;
+ }
+
+ ucc = USER_CREATABLE_GET_CLASS(uc);
+ if (ucc->complete) {
+ ucc->complete(uc, errp);
+ }
+}
+
+static void register_types(void)
+{
+ static const TypeInfo uc_interface_info = {
+ .name = TYPE_USER_CREATABLE,
+ .parent = TYPE_INTERFACE,
+ .class_size = sizeof(UserCreatableClass),
+ };
+
+ type_register_static(&uc_interface_info);
+}
+
+type_init(register_types)
diff --git a/vl.c b/vl.c
index cf3de56..9c2619f 100644
--- a/vl.c
+++ b/vl.c
@@ -170,6 +170,7 @@ int main(int argc, char **argv)
#include "ui/qemu-spice.h"
#include "qapi/string-input-visitor.h"
+#include "qom/object_interfaces.h"
//#define DEBUG_NET
//#define DEBUG_SLIRP
@@ -2816,9 +2817,21 @@ static int object_create(QemuOpts *opts, void *opaque)
return -1;
}
+ if (!object_dynamic_cast(obj, TYPE_USER_CREATABLE)) {
+ error_setg(&local_err, "object '%s' isn't supported by -object",
+ id);
+ goto out;
+ }
+
+ user_creatable_complete(obj, &local_err);
+ if (local_err) {
+ goto out;
+ }
+
object_property_add_child(container_get(object_get_root(), "/objects"),
id, obj, &local_err);
+out:
object_unref(obj);
if (local_err) {
qerror_report_err(local_err);
--
1.8.1.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PULL 4/5] virtio_rng: replace custom backend API with UserCreatable.complete() callback
2014-01-28 17:27 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
` (2 preceding siblings ...)
2014-01-28 17:27 ` [Qemu-devel] [PULL 3/5] add optional 2nd stage initialization to -object/object-add commands Luiz Capitulino
@ 2014-01-28 17:27 ` Luiz Capitulino
2014-01-28 17:27 ` [Qemu-devel] [PULL 5/5] monitor: Cleanup mon->outbuf on write error Luiz Capitulino
2014-02-01 23:41 ` [Qemu-devel] [PULL 0/5] QMP queue Peter Maydell
5 siblings, 0 replies; 9+ messages in thread
From: Luiz Capitulino @ 2014-01-28 17:27 UTC (permalink / raw)
To: anthony; +Cc: qemu-devel
From: Igor Mammedov <imammedo@redhat.com>
in addition fix default backend leak by releasing it if its
initialization failed.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
backends/rng.c | 12 ++++++++++--
hw/virtio/virtio-rng.c | 15 +++++++++------
include/sysemu/rng.h | 11 -----------
3 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/backends/rng.c b/backends/rng.c
index 7bab806..8b8d5a4 100644
--- a/backends/rng.c
+++ b/backends/rng.c
@@ -41,9 +41,9 @@ static bool rng_backend_prop_get_opened(Object *obj, Error **errp)
return s->opened;
}
-void rng_backend_open(RngBackend *s, Error **errp)
+static void rng_backend_complete(UserCreatable *uc, Error **errp)
{
- object_property_set_bool(OBJECT(s), true, "opened", errp);
+ object_property_set_bool(OBJECT(uc), true, "opened", errp);
}
static void rng_backend_prop_set_opened(Object *obj, bool value, Error **errp)
@@ -77,12 +77,20 @@ static void rng_backend_init(Object *obj)
NULL);
}
+static void rng_backend_class_init(ObjectClass *oc, void *data)
+{
+ UserCreatableClass *ucc = USER_CREATABLE_CLASS(oc);
+
+ ucc->complete = rng_backend_complete;
+}
+
static const TypeInfo rng_backend_info = {
.name = TYPE_RNG_BACKEND,
.parent = TYPE_OBJECT,
.instance_size = sizeof(RngBackend),
.instance_init = rng_backend_init,
.class_size = sizeof(RngBackendClass),
+ .class_init = rng_backend_class_init,
.abstract = true,
.interfaces = (InterfaceInfo[]) {
{ TYPE_USER_CREATABLE },
diff --git a/hw/virtio/virtio-rng.c b/hw/virtio/virtio-rng.c
index 755fdee..a16e3bc 100644
--- a/hw/virtio/virtio-rng.c
+++ b/hw/virtio/virtio-rng.c
@@ -15,6 +15,7 @@
#include "hw/virtio/virtio.h"
#include "hw/virtio/virtio-rng.h"
#include "sysemu/rng.h"
+#include "qom/object_interfaces.h"
static bool is_guest_ready(VirtIORNG *vrng)
{
@@ -148,6 +149,14 @@ static void virtio_rng_device_realize(DeviceState *dev, Error **errp)
if (vrng->conf.rng == NULL) {
vrng->conf.default_backend = RNG_RANDOM(object_new(TYPE_RNG_RANDOM));
+ user_creatable_complete(OBJECT(vrng->conf.default_backend),
+ &local_err);
+ if (local_err) {
+ error_propagate(errp, local_err);
+ object_unref(OBJECT(vrng->conf.default_backend));
+ return;
+ }
+
object_property_add_child(OBJECT(dev),
"default-backend",
OBJECT(vrng->conf.default_backend),
@@ -166,12 +175,6 @@ static void virtio_rng_device_realize(DeviceState *dev, Error **errp)
return;
}
- rng_backend_open(vrng->rng, &local_err);
- if (local_err) {
- error_propagate(errp, local_err);
- return;
- }
-
vrng->vq = virtio_add_queue(vdev, 8, handle_input);
assert(vrng->conf.max_bytes <= INT64_MAX);
diff --git a/include/sysemu/rng.h b/include/sysemu/rng.h
index 7637fac..0a27c9b 100644
--- a/include/sysemu/rng.h
+++ b/include/sysemu/rng.h
@@ -79,15 +79,4 @@ void rng_backend_request_entropy(RngBackend *s, size_t size,
* to stop tracking any request.
*/
void rng_backend_cancel_requests(RngBackend *s);
-
-/**
- * rng_backend_open:
- * @s: the backend to open
- * @errp: a pointer to return the #Error object if an error occurs.
- *
- * This function will open the backend if it is not already open. Calling this
- * function on an already opened backend will not result in an error.
- */
-void rng_backend_open(RngBackend *s, Error **errp);
-
#endif
--
1.8.1.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Qemu-devel] [PULL 5/5] monitor: Cleanup mon->outbuf on write error
2014-01-28 17:27 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
` (3 preceding siblings ...)
2014-01-28 17:27 ` [Qemu-devel] [PULL 4/5] virtio_rng: replace custom backend API with UserCreatable.complete() callback Luiz Capitulino
@ 2014-01-28 17:27 ` Luiz Capitulino
2014-02-01 23:41 ` [Qemu-devel] [PULL 0/5] QMP queue Peter Maydell
5 siblings, 0 replies; 9+ messages in thread
From: Luiz Capitulino @ 2014-01-28 17:27 UTC (permalink / raw)
To: anthony; +Cc: qemu-devel
From: Stratos Psomadakis <psomas@grnet.gr>
In case monitor_flush() fails to write the contents of mon->outbuf to
the output device, mon->outbuf is not cleaned up properly. Check the
return code of the qemu_chr_fe_write() function and cleanup the outbuf
if it fails.
References: http://lists.nongnu.org/archive/html/qemu-devel/2014-01/msg02890.html
Signed-off-by: Stratos Psomadakis <psomas@grnet.gr>
Signed-off-by: Dimitris Aragiorgis <dimara@grnet.gr>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
monitor.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/monitor.c b/monitor.c
index 80456fb..cba56bc 100644
--- a/monitor.c
+++ b/monitor.c
@@ -288,8 +288,8 @@ void monitor_flush(Monitor *mon)
if (len && !mon->mux_out) {
rc = qemu_chr_fe_write(mon->chr, (const uint8_t *) buf, len);
- if (rc == len) {
- /* all flushed */
+ if ((rc < 0 && errno != EAGAIN) || (rc == len)) {
+ /* all flushed or error */
QDECREF(mon->outbuf);
mon->outbuf = qstring_new();
return;
--
1.8.1.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PULL 3/5] add optional 2nd stage initialization to -object/object-add commands
2014-01-28 17:27 ` [Qemu-devel] [PULL 3/5] add optional 2nd stage initialization to -object/object-add commands Luiz Capitulino
@ 2014-01-28 17:34 ` Eric Blake
2014-01-28 17:49 ` Luiz Capitulino
0 siblings, 1 reply; 9+ messages in thread
From: Eric Blake @ 2014-01-28 17:34 UTC (permalink / raw)
To: Luiz Capitulino, anthony; +Cc: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 1007 bytes --]
On 01/28/2014 10:27 AM, Luiz Capitulino wrote:
> From: Igor Mammedov <imammedo@redhat.com>
>
> Introduces USER_CREATABLE interface that must be implemented by
> objects which are designed to created with -object CLI option or
> object-add QMP command.
>
> +/**
> + * UserCreatableClass:
> + * @parent_class: the base class
> + * @complete: callback to be called after @obj's properties are set.
> + *
> + * Interface is designed to work with -object/object-add/object_add
> + * commands.
> + * Interface in mandatory for objects that are designed to be user
s/in/is/
> + * creatable (i.e. -object/object-add/object_add, will accept only
> + * objects that inherit this interface).
> + *
> + * iInterface also provides an optional ability to do the second
s/iInterface/Interface/
> + * stage * initialization of the object after its properties were
Spurious *
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PULL 3/5] add optional 2nd stage initialization to -object/object-add commands
2014-01-28 17:34 ` Eric Blake
@ 2014-01-28 17:49 ` Luiz Capitulino
0 siblings, 0 replies; 9+ messages in thread
From: Luiz Capitulino @ 2014-01-28 17:49 UTC (permalink / raw)
To: Eric Blake; +Cc: qemu-devel, anthony
On Tue, 28 Jan 2014 10:34:56 -0700
Eric Blake <eblake@redhat.com> wrote:
> On 01/28/2014 10:27 AM, Luiz Capitulino wrote:
> > From: Igor Mammedov <imammedo@redhat.com>
> >
> > Introduces USER_CREATABLE interface that must be implemented by
> > objects which are designed to created with -object CLI option or
> > object-add QMP command.
> >
>
> > +/**
> > + * UserCreatableClass:
> > + * @parent_class: the base class
> > + * @complete: callback to be called after @obj's properties are set.
> > + *
> > + * Interface is designed to work with -object/object-add/object_add
> > + * commands.
> > + * Interface in mandatory for objects that are designed to be user
>
> s/in/is/
>
> > + * creatable (i.e. -object/object-add/object_add, will accept only
> > + * objects that inherit this interface).
> > + *
> > + * iInterface also provides an optional ability to do the second
>
> s/iInterface/Interface/
>
> > + * stage * initialization of the object after its properties were
>
> Spurious *
I've fixed those typos and already updated my tree. Thanks Eric.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PULL 0/5] QMP queue
2014-01-28 17:27 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
` (4 preceding siblings ...)
2014-01-28 17:27 ` [Qemu-devel] [PULL 5/5] monitor: Cleanup mon->outbuf on write error Luiz Capitulino
@ 2014-02-01 23:41 ` Peter Maydell
5 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2014-02-01 23:41 UTC (permalink / raw)
To: Luiz Capitulino; +Cc: QEMU Developers, Anthony Liguori
On 28 January 2014 17:27, Luiz Capitulino <lcapitulino@redhat.com> wrote:
> The changes (since 0169c511554cb0014a00290b0d3d26c31a49818f) are available
> in the following repository:
>
> git://repo.or.cz/qemu/qmp-unstable.git queue/qmp
Applied, thanks.
-- PMM
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2014-02-01 23:41 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-28 17:27 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
2014-01-28 17:27 ` [Qemu-devel] [PULL 1/5] object_add: consolidate error handling Luiz Capitulino
2014-01-28 17:27 ` [Qemu-devel] [PULL 2/5] vl.c: -object: don't ignore duplicate 'id' Luiz Capitulino
2014-01-28 17:27 ` [Qemu-devel] [PULL 3/5] add optional 2nd stage initialization to -object/object-add commands Luiz Capitulino
2014-01-28 17:34 ` Eric Blake
2014-01-28 17:49 ` Luiz Capitulino
2014-01-28 17:27 ` [Qemu-devel] [PULL 4/5] virtio_rng: replace custom backend API with UserCreatable.complete() callback Luiz Capitulino
2014-01-28 17:27 ` [Qemu-devel] [PULL 5/5] monitor: Cleanup mon->outbuf on write error Luiz Capitulino
2014-02-01 23:41 ` [Qemu-devel] [PULL 0/5] QMP queue Peter Maydell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.