* [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del
@ 2013-12-20 22:21 Paolo Bonzini
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 1/5] rng: initialize file descriptor to -1 Paolo Bonzini
` (7 more replies)
0 siblings, 8 replies; 10+ messages in thread
From: Paolo Bonzini @ 2013-12-20 22:21 UTC (permalink / raw)
To: qemu-devel; +Cc: imammedo, afaerber, lcapitulino
These allow hotplugging (and hot-unplugging without leaking an object)
virtio-rng devices. They can also be used for memory hotplug.
v1->v2: fix mistyped underscores in qapi-schema.json
v2->v3: preserve bisectability by inverting patches 4 and 5, keep lines
under 80 characters since it can be done easily, drop error_is_set
Paolo Bonzini (5):
rng: initialize file descriptor to -1
qom: fix leak for objects created with -object
qom: catch errors in object_property_add_child
monitor: add object-del (QMP) and object_del (HMP) command
monitor: add object-add (QMP) and object_add (HMP) command
backends/rng-random.c | 4 +--
hmp-commands.hx | 28 +++++++++++++++++
hmp.c | 67 +++++++++++++++++++++++++++++++++++++++++
hmp.h | 2 ++
include/monitor/monitor.h | 3 ++
include/qapi/visitor.h | 3 +-
include/qemu/typedefs.h | 2 ++
qapi-schema.json | 34 +++++++++++++++++++++
qmp-commands.hx | 51 +++++++++++++++++++++++++++++++
qmp.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++
qom/object.c | 9 ++++--
vl.c | 3 +-
12 files changed, 275 insertions(+), 7 deletions(-)
--
1.8.4.2
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH v3 1/5] rng: initialize file descriptor to -1
2013-12-20 22:21 [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del Paolo Bonzini
@ 2013-12-20 22:21 ` Paolo Bonzini
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 2/5] qom: fix leak for objects created with -object Paolo Bonzini
` (6 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Paolo Bonzini @ 2013-12-20 22:21 UTC (permalink / raw)
To: qemu-devel; +Cc: imammedo, afaerber, lcapitulino
The file descriptor is never initialized to -1, which makes rng-random
close stdin if an object is created and immediately destroyed. If we
change it to -1, we also need to protect qemu_set_fd_handler from
receiving a bogus file descriptor.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
backends/rng-random.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/backends/rng-random.c b/backends/rng-random.c
index 68dfc8a..136499d 100644
--- a/backends/rng-random.c
+++ b/backends/rng-random.c
@@ -123,15 +123,15 @@ static void rng_random_init(Object *obj)
NULL);
s->filename = g_strdup("/dev/random");
+ s->fd = -1;
}
static void rng_random_finalize(Object *obj)
{
RndRandom *s = RNG_RANDOM(obj);
- qemu_set_fd_handler(s->fd, NULL, NULL, NULL);
-
if (s->fd != -1) {
+ qemu_set_fd_handler(s->fd, NULL, NULL, NULL);
qemu_close(s->fd);
}
--
1.8.4.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH v3 2/5] qom: fix leak for objects created with -object
2013-12-20 22:21 [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del Paolo Bonzini
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 1/5] rng: initialize file descriptor to -1 Paolo Bonzini
@ 2013-12-20 22:21 ` Paolo Bonzini
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 3/5] qom: catch errors in object_property_add_child Paolo Bonzini
` (5 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Paolo Bonzini @ 2013-12-20 22:21 UTC (permalink / raw)
To: qemu-devel; +Cc: imammedo, afaerber, lcapitulino
The object must be unref-ed when its variable goes out of scope.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
vl.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/vl.c b/vl.c
index 7511e70..45f9177 100644
--- a/vl.c
+++ b/vl.c
@@ -2809,12 +2809,13 @@ static int object_create(QemuOpts *opts, void *opaque)
obj = object_new(type);
if (qemu_opt_foreach(opts, object_set_property, obj, 1) < 0) {
+ object_unref(obj);
return -1;
}
object_property_add_child(container_get(object_get_root(), "/objects"),
id, obj, NULL);
-
+ object_unref(obj);
return 0;
}
--
1.8.4.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH v3 3/5] qom: catch errors in object_property_add_child
2013-12-20 22:21 [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del Paolo Bonzini
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 1/5] rng: initialize file descriptor to -1 Paolo Bonzini
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 2/5] qom: fix leak for objects created with -object Paolo Bonzini
@ 2013-12-20 22:21 ` Paolo Bonzini
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 4/5] monitor: add object-del (QMP) and object_del (HMP) command Paolo Bonzini
` (4 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Paolo Bonzini @ 2013-12-20 22:21 UTC (permalink / raw)
To: qemu-devel; +Cc: imammedo, afaerber, lcapitulino
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
qom/object.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/qom/object.c b/qom/object.c
index fc19cf6..68fe07a 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -988,17 +988,22 @@ static void object_finalize_child_property(Object *obj, const char *name,
void object_property_add_child(Object *obj, const char *name,
Object *child, Error **errp)
{
+ Error *local_err = NULL;
gchar *type;
type = g_strdup_printf("child<%s>", object_get_typename(OBJECT(child)));
- object_property_add(obj, name, type, object_get_child_property,
- NULL, object_finalize_child_property, child, errp);
-
+ object_property_add(obj, name, type, object_get_child_property, NULL,
+ object_finalize_child_property, child, &local_err);
+ if (local_err) {
+ error_propagate(errp, local_err);
+ goto out;
+ }
object_ref(child);
g_assert(child->parent == NULL);
child->parent = obj;
+out:
g_free(type);
}
--
1.8.4.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH v3 4/5] monitor: add object-del (QMP) and object_del (HMP) command
2013-12-20 22:21 [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del Paolo Bonzini
` (2 preceding siblings ...)
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 3/5] qom: catch errors in object_property_add_child Paolo Bonzini
@ 2013-12-20 22:21 ` Paolo Bonzini
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 5/5] monitor: add object-add (QMP) and object_add " Paolo Bonzini
` (3 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Paolo Bonzini @ 2013-12-20 22:21 UTC (permalink / raw)
To: qemu-devel; +Cc: imammedo, afaerber, lcapitulino
These two commands invoke the "unparent" method of Object.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
hmp-commands.hx | 14 ++++++++++++++
hmp.c | 9 +++++++++
hmp.h | 1 +
qapi-schema.json | 14 ++++++++++++++
qmp-commands.hx | 25 +++++++++++++++++++++++++
qmp.c | 14 ++++++++++++++
6 files changed, 77 insertions(+)
diff --git a/hmp-commands.hx b/hmp-commands.hx
index ebe8e78..623e35e 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -1243,6 +1243,20 @@ STEXI
Remove host network device.
ETEXI
+ {
+ .name = "object_del",
+ .args_type = "id:s",
+ .params = "id",
+ .help = "destroy QOM object",
+ .mhandler.cmd = hmp_object_del,
+ },
+
+STEXI
+@item object_del
+@findex object_del
+Destroy QOM object.
+ETEXI
+
#ifdef CONFIG_SLIRP
{
.name = "hostfwd_add",
diff --git a/hmp.c b/hmp.c
index 32ee285..fdcdee4 100644
--- a/hmp.c
+++ b/hmp.c
@@ -1564,3 +1564,12 @@ void hmp_qemu_io(Monitor *mon, const QDict *qdict)
hmp_handle_error(mon, &err);
}
+
+void hmp_object_del(Monitor *mon, const QDict *qdict)
+{
+ const char *id = qdict_get_str(qdict, "id");
+ Error *err = NULL;
+
+ qmp_object_del(id, &err);
+ hmp_handle_error(mon, &err);
+}
diff --git a/hmp.h b/hmp.h
index 54cf71f..1d67ed5 100644
--- a/hmp.h
+++ b/hmp.h
@@ -89,5 +89,6 @@ void hmp_nbd_server_stop(Monitor *mon, const QDict *qdict);
void hmp_chardev_add(Monitor *mon, const QDict *qdict);
void hmp_chardev_remove(Monitor *mon, const QDict *qdict);
void hmp_qemu_io(Monitor *mon, const QDict *qdict);
+void hmp_object_del(Monitor *mon, const QDict *qdict);
#endif
diff --git a/qapi-schema.json b/qapi-schema.json
index c3c939c..af3a83b 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -2759,6 +2759,20 @@
{ 'command': 'netdev_del', 'data': {'id': 'str'} }
##
+# @object-del:
+#
+# Remove a QOM object.
+#
+# @id: the name of the QOM object to remove
+#
+# Returns: Nothing on success
+# Error if @id is not a valid id for a QOM object
+#
+# Since: 2.0
+##
+{ 'command': 'object-del', 'data': {'id': 'str'} }
+
+##
# @NetdevNoneOptions
#
# Use it alone to have zero network devices.
diff --git a/qmp-commands.hx b/qmp-commands.hx
index fba15cd..71422cd 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -879,6 +879,31 @@ Example:
EQMP
{
+ .name = "object-del",
+ .args_type = "id:s",
+ .mhandler.cmd_new = qmp_marshal_input_object_del,
+ },
+
+SQMP
+object-del
+----------
+
+Remove QOM object.
+
+Arguments:
+
+- "id": the object's ID (json-string)
+
+Example:
+
+-> { "execute": "object-del", "arguments": { "id": "rng1" } }
+<- { "return": {} }
+
+
+EQMP
+
+
+ {
.name = "block_resize",
.args_type = "device:B,size:o",
.mhandler.cmd_new = qmp_marshal_input_block_resize,
diff --git a/qmp.c b/qmp.c
index 1d7a04d..73aab58 100644
--- a/qmp.c
+++ b/qmp.c
@@ -529,3 +529,17 @@ void qmp_add_client(const char *protocol, const char *fdname,
error_setg(errp, "protocol '%s' is invalid", protocol);
close(fd);
}
+
+void qmp_object_del(const char *id, Error **errp)
+{
+ Object *container;
+ Object *obj;
+
+ container = container_get(object_get_root(), "/objects");
+ obj = object_resolve_path_component(container, id);
+ if (!obj) {
+ error_setg(errp, "object id not found");
+ return;
+ }
+ object_unparent(obj);
+}
--
1.8.4.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Qemu-devel] [PATCH v3 5/5] monitor: add object-add (QMP) and object_add (HMP) command
2013-12-20 22:21 [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del Paolo Bonzini
` (3 preceding siblings ...)
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 4/5] monitor: add object-del (QMP) and object_del (HMP) command Paolo Bonzini
@ 2013-12-20 22:21 ` Paolo Bonzini
2014-01-03 14:17 ` [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del Igor Mammedov
` (2 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Paolo Bonzini @ 2013-12-20 22:21 UTC (permalink / raw)
To: qemu-devel; +Cc: imammedo, afaerber, lcapitulino
Add two commands that are the monitor counterparts of -object. The commands
have the same Visitor-based implementation, but use different kinds of
visitors so that the HMP command has a DWIM string-based syntax, while
the QMP variant accepts a stricter JSON-based properties dictionary.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
hmp-commands.hx | 14 +++++++++++
hmp.c | 58 ++++++++++++++++++++++++++++++++++++++++++++
hmp.h | 1 +
include/monitor/monitor.h | 3 +++
include/qapi/visitor.h | 3 +--
include/qemu/typedefs.h | 2 ++
qapi-schema.json | 20 +++++++++++++++
qmp-commands.hx | 26 ++++++++++++++++++++
qmp.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++
9 files changed, 187 insertions(+), 2 deletions(-)
diff --git a/hmp-commands.hx b/hmp-commands.hx
index 623e35e..0ace14f 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -1244,6 +1244,20 @@ Remove host network device.
ETEXI
{
+ .name = "object_add",
+ .args_type = "object:O",
+ .params = "[qom-type=]type,id=str[,prop=value][,...]",
+ .help = "create QOM object",
+ .mhandler.cmd = hmp_object_add,
+ },
+
+STEXI
+@item object_add
+@findex object_add
+Create QOM object.
+ETEXI
+
+ {
.name = "object_del",
.args_type = "id:s",
.params = "id",
diff --git a/hmp.c b/hmp.c
index fdcdee4..9f4c9b3 100644
--- a/hmp.c
+++ b/hmp.c
@@ -21,6 +21,7 @@
#include "qmp-commands.h"
#include "qemu/sockets.h"
#include "monitor/monitor.h"
+#include "qapi/opts-visitor.h"
#include "ui/console.h"
#include "block/qapi.h"
#include "qemu-io.h"
@@ -1354,6 +1355,63 @@ void hmp_netdev_del(Monitor *mon, const QDict *qdict)
hmp_handle_error(mon, &err);
}
+void hmp_object_add(Monitor *mon, const QDict *qdict)
+{
+ Error *err = NULL;
+ QemuOpts *opts;
+ char *type = NULL;
+ char *id = NULL;
+ void *dummy = NULL;
+ OptsVisitor *ov;
+ QDict *pdict;
+
+ opts = qemu_opts_from_qdict(qemu_find_opts("object"), qdict, &err);
+ if (err) {
+ goto out;
+ }
+
+ ov = opts_visitor_new(opts);
+ pdict = qdict_clone_shallow(qdict);
+
+ visit_start_struct(opts_get_visitor(ov), &dummy, NULL, NULL, 0, &err);
+ if (err) {
+ goto out_clean;
+ }
+
+ qdict_del(pdict, "qom-type");
+ visit_type_str(opts_get_visitor(ov), &type, "qom-type", &err);
+ if (err) {
+ goto out_clean;
+ }
+
+ qdict_del(pdict, "id");
+ visit_type_str(opts_get_visitor(ov), &id, "id", &err);
+ if (err) {
+ goto out_clean;
+ }
+
+ object_add(type, id, pdict, opts_get_visitor(ov), &err);
+ if (err) {
+ goto out_clean;
+ }
+ visit_end_struct(opts_get_visitor(ov), &err);
+ if (err) {
+ qmp_object_del(id, NULL);
+ }
+
+out_clean:
+ opts_visitor_cleanup(ov);
+
+ QDECREF(pdict);
+ qemu_opts_del(opts);
+ g_free(id);
+ g_free(type);
+ g_free(dummy);
+
+out:
+ hmp_handle_error(mon, &err);
+}
+
void hmp_getfd(Monitor *mon, const QDict *qdict)
{
const char *fdname = qdict_get_str(qdict, "fdname");
diff --git a/hmp.h b/hmp.h
index 1d67ed5..94264d6 100644
--- a/hmp.h
+++ b/hmp.h
@@ -89,6 +89,7 @@ void hmp_nbd_server_stop(Monitor *mon, const QDict *qdict);
void hmp_chardev_add(Monitor *mon, const QDict *qdict);
void hmp_chardev_remove(Monitor *mon, const QDict *qdict);
void hmp_qemu_io(Monitor *mon, const QDict *qdict);
+void hmp_object_add(Monitor *mon, const QDict *qdict);
void hmp_object_del(Monitor *mon, const QDict *qdict);
#endif
diff --git a/include/monitor/monitor.h b/include/monitor/monitor.h
index 10fa0e3..22d8b8f 100644
--- a/include/monitor/monitor.h
+++ b/include/monitor/monitor.h
@@ -93,6 +93,9 @@ int monitor_read_password(Monitor *mon, ReadLineFunc *readline_func,
int qmp_qom_set(Monitor *mon, const QDict *qdict, QObject **ret);
int qmp_qom_get(Monitor *mon, const QDict *qdict, QObject **ret);
+int qmp_object_add(Monitor *mon, const QDict *qdict, QObject **ret);
+void object_add(const char *type, const char *id, const QDict *qdict,
+ Visitor *v, Error **errp);
AddfdInfo *monitor_fdset_add_fd(int fd, bool has_fdset_id, int64_t fdset_id,
bool has_opaque, const char *opaque,
diff --git a/include/qapi/visitor.h b/include/qapi/visitor.h
index 48a2a2e..29da211 100644
--- a/include/qapi/visitor.h
+++ b/include/qapi/visitor.h
@@ -13,6 +13,7 @@
#ifndef QAPI_VISITOR_CORE_H
#define QAPI_VISITOR_CORE_H
+#include "qemu/typedefs.h"
#include "qapi/qmp/qobject.h"
#include "qapi/error.h"
#include <stdlib.h>
@@ -26,8 +27,6 @@ typedef struct GenericList
struct GenericList *next;
} GenericList;
-typedef struct Visitor Visitor;
-
void visit_start_handle(Visitor *v, void **obj, const char *kind,
const char *name, Error **errp);
void visit_end_handle(Visitor *v, Error **errp);
diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
index a4c1b84..4524496 100644
--- a/include/qemu/typedefs.h
+++ b/include/qemu/typedefs.h
@@ -10,6 +10,8 @@ typedef struct QEMUBH QEMUBH;
typedef struct AioContext AioContext;
+typedef struct Visitor Visitor;
+
struct Monitor;
typedef struct Monitor Monitor;
typedef struct MigrationParams MigrationParams;
diff --git a/qapi-schema.json b/qapi-schema.json
index af3a83b..4abbf36 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -2759,6 +2759,26 @@
{ 'command': 'netdev_del', 'data': {'id': 'str'} }
##
+# @object-add:
+#
+# Create a QOM object.
+#
+# @qom-type: the class name for the object to be created
+#
+# @id: the name of the new object
+#
+# @props: #optional a dictionary of properties to be passed to the backend
+#
+# Returns: Nothing on success
+# Error if @qom-type is not a valid class name
+#
+# Since: 2.0
+##
+{ 'command': 'object-add',
+ 'data': {'qom-type': 'str', 'id': 'str', '*props': 'dict'},
+ 'gen': 'no' }
+
+##
# @object-del:
#
# Remove a QOM object.
diff --git a/qmp-commands.hx b/qmp-commands.hx
index 71422cd..02cc815 100644
--- a/qmp-commands.hx
+++ b/qmp-commands.hx
@@ -879,6 +879,32 @@ Example:
EQMP
{
+ .name = "object-add",
+ .args_type = "qom-type:s,id:s,props:q?",
+ .mhandler.cmd_new = qmp_object_add,
+ },
+
+SQMP
+object-add
+----------
+
+Create QOM object.
+
+Arguments:
+
+- "qom-type": the object's QOM type, i.e. the class name (json-string)
+- "id": the object's ID, must be unique (json-string)
+- "props": a dictionary of object property values (optional, json-dict)
+
+Example:
+
+-> { "execute": "object-add", "arguments": { "qom-type": "rng-random", "id": "rng1",
+ "props": { "filename": "/dev/hwrng" } } }
+<- { "return": {} }
+
+EQMP
+
+ {
.name = "object-del",
.args_type = "id:s",
.mhandler.cmd_new = qmp_marshal_input_object_del,
diff --git a/qmp.c b/qmp.c
index 73aab58..3e20605 100644
--- a/qmp.c
+++ b/qmp.c
@@ -24,6 +24,8 @@
#include "hw/qdev.h"
#include "sysemu/blockdev.h"
#include "qom/qom-qobject.h"
+#include "qapi/qmp/qobject.h"
+#include "qapi/qmp-input-visitor.h"
#include "hw/boards.h"
NameInfo *qmp_query_name(Error **errp)
@@ -530,6 +532,66 @@ void qmp_add_client(const char *protocol, const char *fdname,
close(fd);
}
+void object_add(const char *type, const char *id, const QDict *qdict,
+ Visitor *v, Error **errp)
+{
+ Object *obj;
+ const QDictEntry *e;
+ Error *local_err = NULL;
+
+ if (!object_class_by_name(type)) {
+ error_setg(errp, "invalid class name");
+ return;
+ }
+
+ obj = object_new(type);
+ if (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;
+ }
+ }
+ }
+
+ object_property_add_child(container_get(object_get_root(), "/objects"),
+ id, obj, errp);
+ object_unref(obj);
+}
+
+int qmp_object_add(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ const char *type = qdict_get_str(qdict, "qom-type");
+ const char *id = qdict_get_str(qdict, "id");
+ QObject *props = qdict_get(qdict, "props");
+ const QDict *pdict = NULL;
+ Error *local_err = NULL;
+ QmpInputVisitor *qiv;
+
+ if (props) {
+ pdict = qobject_to_qdict(props);
+ if (!pdict) {
+ error_set(&local_err, QERR_INVALID_PARAMETER_TYPE, "props", "dict");
+ goto out;
+ }
+ }
+
+ qiv = qmp_input_visitor_new(props);
+ object_add(type, id, pdict, qmp_input_get_visitor(qiv), &local_err);
+ qmp_input_visitor_cleanup(qiv);
+
+out:
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+
+ return 0;
+}
+
void qmp_object_del(const char *id, Error **errp)
{
Object *container;
--
1.8.4.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del
2013-12-20 22:21 [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del Paolo Bonzini
` (4 preceding siblings ...)
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 5/5] monitor: add object-add (QMP) and object_add " Paolo Bonzini
@ 2014-01-03 14:17 ` Igor Mammedov
2014-01-03 14:24 ` Igor Mammedov
2014-01-06 18:53 ` Luiz Capitulino
7 siblings, 0 replies; 10+ messages in thread
From: Igor Mammedov @ 2014-01-03 14:17 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: lcapitulino, qemu-devel, afaerber
On Fri, 20 Dec 2013 23:21:05 +0100
Paolo Bonzini <pbonzini@redhat.com> wrote:
> These allow hotplugging (and hot-unplugging without leaking an object)
> virtio-rng devices. They can also be used for memory hotplug.
>
> v1->v2: fix mistyped underscores in qapi-schema.json
>
> v2->v3: preserve bisectability by inverting patches 4 and 5, keep lines
> under 80 characters since it can be done easily, drop error_is_set
Reviewed-By & Tested-By: Igor Mammedov <imammedo@redhat.com>
>
> Paolo Bonzini (5):
> rng: initialize file descriptor to -1
> qom: fix leak for objects created with -object
> qom: catch errors in object_property_add_child
> monitor: add object-del (QMP) and object_del (HMP) command
> monitor: add object-add (QMP) and object_add (HMP) command
>
> backends/rng-random.c | 4 +--
> hmp-commands.hx | 28 +++++++++++++++++
> hmp.c | 67 +++++++++++++++++++++++++++++++++++++++++
> hmp.h | 2 ++
> include/monitor/monitor.h | 3 ++
> include/qapi/visitor.h | 3 +-
> include/qemu/typedefs.h | 2 ++
> qapi-schema.json | 34 +++++++++++++++++++++
> qmp-commands.hx | 51 +++++++++++++++++++++++++++++++
> qmp.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++
> qom/object.c | 9 ++++--
> vl.c | 3 +-
> 12 files changed, 275 insertions(+), 7 deletions(-)
>
> --
> 1.8.4.2
>
>
--
Regards,
Igor
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del
2013-12-20 22:21 [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del Paolo Bonzini
` (5 preceding siblings ...)
2014-01-03 14:17 ` [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del Igor Mammedov
@ 2014-01-03 14:24 ` Igor Mammedov
2014-01-03 14:41 ` Luiz Capitulino
2014-01-06 18:53 ` Luiz Capitulino
7 siblings, 1 reply; 10+ messages in thread
From: Igor Mammedov @ 2014-01-03 14:24 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: lcapitulino, qemu-devel, afaerber
On Fri, 20 Dec 2013 23:21:05 +0100
Paolo Bonzini <pbonzini@redhat.com> wrote:
> These allow hotplugging (and hot-unplugging without leaking an object)
> virtio-rng devices. They can also be used for memory hotplug.
>
> v1->v2: fix mistyped underscores in qapi-schema.json
>
> v2->v3: preserve bisectability by inverting patches 4 and 5, keep lines
> under 80 characters since it can be done easily, drop error_is_set
>
Looks like there is typo in CC list, so Luiz was never CCed,
adding him to CC so series won't be lost.
--
Regards,
Igor
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del
2014-01-03 14:24 ` Igor Mammedov
@ 2014-01-03 14:41 ` Luiz Capitulino
0 siblings, 0 replies; 10+ messages in thread
From: Luiz Capitulino @ 2014-01-03 14:41 UTC (permalink / raw)
To: Igor Mammedov; +Cc: Paolo Bonzini, qemu-devel, afaerber
On Fri, 3 Jan 2014 15:24:57 +0100
Igor Mammedov <imammedo@redhat.com> wrote:
> On Fri, 20 Dec 2013 23:21:05 +0100
> Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> > These allow hotplugging (and hot-unplugging without leaking an object)
> > virtio-rng devices. They can also be used for memory hotplug.
> >
> > v1->v2: fix mistyped underscores in qapi-schema.json
> >
> > v2->v3: preserve bisectability by inverting patches 4 and 5, keep lines
> > under 80 characters since it can be done easily, drop error_is_set
> >
> Looks like there is typo in CC list, so Luiz was never CCed,
> adding him to CC so series won't be lost.
Paolo did ping in private, but thanks for reminding me anyway.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del
2013-12-20 22:21 [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del Paolo Bonzini
` (6 preceding siblings ...)
2014-01-03 14:24 ` Igor Mammedov
@ 2014-01-06 18:53 ` Luiz Capitulino
7 siblings, 0 replies; 10+ messages in thread
From: Luiz Capitulino @ 2014-01-06 18:53 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: imammedo, qemu-devel, lcapitulino, afaerber
On Fri, 20 Dec 2013 23:21:05 +0100
Paolo Bonzini <pbonzini@redhat.com> wrote:
> These allow hotplugging (and hot-unplugging without leaking an object)
> virtio-rng devices. They can also be used for memory hotplug.
>
> v1->v2: fix mistyped underscores in qapi-schema.json
>
> v2->v3: preserve bisectability by inverting patches 4 and 5, keep lines
> under 80 characters since it can be done easily, drop error_is_set
Applied to the qmp branch, thanks.
>
> Paolo Bonzini (5):
> rng: initialize file descriptor to -1
> qom: fix leak for objects created with -object
> qom: catch errors in object_property_add_child
> monitor: add object-del (QMP) and object_del (HMP) command
> monitor: add object-add (QMP) and object_add (HMP) command
>
> backends/rng-random.c | 4 +--
> hmp-commands.hx | 28 +++++++++++++++++
> hmp.c | 67 +++++++++++++++++++++++++++++++++++++++++
> hmp.h | 2 ++
> include/monitor/monitor.h | 3 ++
> include/qapi/visitor.h | 3 +-
> include/qemu/typedefs.h | 2 ++
> qapi-schema.json | 34 +++++++++++++++++++++
> qmp-commands.hx | 51 +++++++++++++++++++++++++++++++
> qmp.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++
> qom/object.c | 9 ++++--
> vl.c | 3 +-
> 12 files changed, 275 insertions(+), 7 deletions(-)
>
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2014-01-06 18:53 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-20 22:21 [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del Paolo Bonzini
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 1/5] rng: initialize file descriptor to -1 Paolo Bonzini
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 2/5] qom: fix leak for objects created with -object Paolo Bonzini
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 3/5] qom: catch errors in object_property_add_child Paolo Bonzini
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 4/5] monitor: add object-del (QMP) and object_del (HMP) command Paolo Bonzini
2013-12-20 22:21 ` [Qemu-devel] [PATCH v3 5/5] monitor: add object-add (QMP) and object_add " Paolo Bonzini
2014-01-03 14:17 ` [Qemu-devel] [PATCH v3 0/5] Monitor commands for object-add/del Igor Mammedov
2014-01-03 14:24 ` Igor Mammedov
2014-01-03 14:41 ` Luiz Capitulino
2014-01-06 18:53 ` Luiz Capitulino
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).