All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Lukáš Doktor" <ldoktor@redhat.com>,
	"Kevin Wolf" <kwolf@redhat.com>,
	"Peter Krempa" <pkrempa@redhat.com>,
	"Daniel P . Berrange" <berrange@redhat.com>,
	libvir-list@redhat.com, mdroth@linux.vnet.ibm.com,
	marcandre.lureau@gmail.com, libguestfs@redhat.com
Subject: Re: [PATCH v6 00/10] Configurable policy for handling deprecated interfaces
Date: Thu, 18 Mar 2021 16:08:14 +0100	[thread overview]
Message-ID: <878s6kh541.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <20210312153210.2810514-1-armbru@redhat.com> (Markus Armbruster's message of "Fri, 12 Mar 2021 16:32:00 +0100")

This series needs fixups to not break --disable-system --disable-tools
builds.  It's not much (see appended diff), but enough to make me respin
it as v7.  I'll respin the pull request, too.


diff --git a/include/qapi/compat-policy.h b/include/qapi/compat-policy.h
index b8c6638156..1083f95122 100644
--- a/include/qapi/compat-policy.h
+++ b/include/qapi/compat-policy.h
@@ -17,4 +17,22 @@
 
 extern CompatPolicy compat_policy;
 
+/*
+ * Create a QObject input visitor for @obj for use with QMP
+ *
+ * This is like qobject_input_visitor_new(), except it obeys the
+ * policy for handling deprecated management interfaces set with
+ * -compat.
+ */
+Visitor *qobject_input_visitor_new_qmp(QObject *obj);
+
+/*
+ * Create a QObject output visitor for @obj for use with QMP
+ *
+ * This is like qobject_output_visitor_new(), except it obeys the
+ * policy for handling deprecated management interfaces set with
+ * -compat.
+ */
+Visitor *qobject_output_visitor_new_qmp(QObject **result);
+
 #endif
diff --git a/include/qapi/qobject-input-visitor.h b/include/qapi/qobject-input-visitor.h
index cbc54de4ac..8d69388810 100644
--- a/include/qapi/qobject-input-visitor.h
+++ b/include/qapi/qobject-input-visitor.h
@@ -15,6 +15,7 @@
 #ifndef QOBJECT_INPUT_VISITOR_H
 #define QOBJECT_INPUT_VISITOR_H
 
+#include "qapi/qapi-types-compat.h"
 #include "qapi/visitor.h"
 
 typedef struct QObjectInputVisitor QObjectInputVisitor;
@@ -58,14 +59,8 @@ typedef struct QObjectInputVisitor QObjectInputVisitor;
  */
 Visitor *qobject_input_visitor_new(QObject *obj);
 
-/*
- * Create a QObject input visitor for @obj for use with QMP
- *
- * This is like qobject_input_visitor_new(), except it obeys the
- * policy for handling deprecated management interfaces set with
- * -compat.
- */
-Visitor *qobject_input_visitor_new_qmp(QObject *obj);
+void qobject_input_visitor_set_policy(Visitor *v,
+                                      CompatPolicyInput deprecated);
 
 /*
  * Create a QObject input visitor for @obj for use with keyval_parse()
diff --git a/include/qapi/qobject-output-visitor.h b/include/qapi/qobject-output-visitor.h
index 29f4ea6aad..f2a2f92a00 100644
--- a/include/qapi/qobject-output-visitor.h
+++ b/include/qapi/qobject-output-visitor.h
@@ -15,6 +15,7 @@
 #define QOBJECT_OUTPUT_VISITOR_H
 
 #include "qapi/visitor.h"
+#include "qapi/qapi-types-compat.h"
 
 typedef struct QObjectOutputVisitor QObjectOutputVisitor;
 
@@ -53,13 +54,7 @@ typedef struct QObjectOutputVisitor QObjectOutputVisitor;
  */
 Visitor *qobject_output_visitor_new(QObject **result);
 
-/*
- * Create a QObject output visitor for @obj for use with QMP
- *
- * This is like qobject_output_visitor_new(), except it obeys the
- * policy for handling deprecated management interfaces set with
- * -compat.
- */
-Visitor *qobject_output_visitor_new_qmp(QObject **result);
+void qobject_output_visitor_set_policy(Visitor *v,
+                                       CompatPolicyOutput deprecated);
 
 #endif
diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c
index 12657d635e..0f7e2e48fa 100644
--- a/qapi/qmp-dispatch.c
+++ b/qapi/qmp-dispatch.c
@@ -19,6 +19,8 @@
 #include "qapi/qmp/dispatch.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qjson.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/qobject-output-visitor.h"
 #include "sysemu/runstate.h"
 #include "qapi/qmp/qbool.h"
 #include "qemu/coroutine.h"
@@ -26,6 +28,22 @@
 
 CompatPolicy compat_policy;
 
+Visitor *qobject_input_visitor_new_qmp(QObject *obj)
+{
+    Visitor *v = qobject_input_visitor_new(obj);
+
+    qobject_input_visitor_set_policy(v, compat_policy.deprecated_input);
+    return v;
+}
+
+Visitor *qobject_output_visitor_new_qmp(QObject **result)
+{
+    Visitor *v = qobject_output_visitor_new(result);
+
+    qobject_output_visitor_set_policy(v, compat_policy.deprecated_output);
+    return v;
+}
+
 static QDict *qmp_dispatch_check_obj(QDict *dict, bool allow_oob,
                                      Error **errp)
 {
diff --git a/qapi/qobject-input-visitor.c b/qapi/qobject-input-visitor.c
index baad0dcd3c..04b790412e 100644
--- a/qapi/qobject-input-visitor.c
+++ b/qapi/qobject-input-visitor.c
@@ -739,12 +739,12 @@ Visitor *qobject_input_visitor_new(QObject *obj)
     return &v->visitor;
 }
 
-Visitor *qobject_input_visitor_new_qmp(QObject *obj)
+void qobject_input_visitor_set_policy(Visitor *v,
+                                       CompatPolicyInput deprecated)
 {
-    QObjectInputVisitor *v = to_qiv(qobject_input_visitor_new(obj));
+    QObjectInputVisitor *qiv = to_qiv(v);
 
-    v->deprecated_policy = compat_policy.deprecated_input;
-    return &v->visitor;
+    qiv->deprecated_policy = deprecated;
 }
 
 Visitor *qobject_input_visitor_new_keyval(QObject *obj)
diff --git a/qapi/qobject-output-visitor.c b/qapi/qobject-output-visitor.c
index 5c4aa0f64d..e4873308d4 100644
--- a/qapi/qobject-output-visitor.c
+++ b/qapi/qobject-output-visitor.c
@@ -276,10 +276,10 @@ Visitor *qobject_output_visitor_new(QObject **result)
     return &v->visitor;
 }
 
-Visitor *qobject_output_visitor_new_qmp(QObject **result)
+void qobject_output_visitor_set_policy(Visitor *v,
+                                       CompatPolicyOutput deprecated)
 {
-    QObjectOutputVisitor *v = to_qov(qobject_output_visitor_new(result));
+    QObjectOutputVisitor *qov = to_qov(v);
 
-    v->deprecated_policy = compat_policy.deprecated_output;
-    return &v->visitor;
+    qov->deprecated_policy = deprecated;
 }
diff --git a/scripts/qapi/commands.py b/scripts/qapi/commands.py
index 8ccd1d9224..0e13d51054 100644
--- a/scripts/qapi/commands.py
+++ b/scripts/qapi/commands.py
@@ -255,10 +255,9 @@ def _begin_user_module(self, name: str) -> None:
         visit = self._module_basename('qapi-visit', name)
         self._genc.add(mcgen('''
 #include "qemu/osdep.h"
+#include "qapi/compat-policy.h"
 #include "qapi/visitor.h"
 #include "qapi/qmp/qdict.h"
-#include "qapi/qobject-output-visitor.h"
-#include "qapi/qobject-input-visitor.h"
 #include "qapi/dealloc-visitor.h"
 #include "qapi/error.h"
 #include "%(visit)s.h"
diff --git a/scripts/qapi/events.py b/scripts/qapi/events.py
index 8335c2bdfc..fee8c671e7 100644
--- a/scripts/qapi/events.py
+++ b/scripts/qapi/events.py
@@ -192,7 +192,6 @@ def _begin_user_module(self, name: str) -> None:
 #include "qapi/compat-policy.h"
 #include "qapi/error.h"
 #include "qapi/qmp/qdict.h"
-#include "qapi/qobject-output-visitor.h"
 #include "qapi/qmp-event.h"
 
 ''',



      parent reply	other threads:[~2021-03-18 15:12 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-12 15:32 [PATCH v6 00/10] Configurable policy for handling deprecated interfaces Markus Armbruster
2021-03-12 15:32 ` [PATCH v6 01/10] qemu-options: New -compat to set policy for " Markus Armbruster
2021-03-15 15:41   ` Eric Blake
2021-03-15 16:29     ` Markus Armbruster
2021-03-12 15:32 ` [PATCH v6 02/10] qapi: Implement deprecated-output=hide for QMP command results Markus Armbruster
2021-03-15 15:45   ` Eric Blake
2021-03-15 16:33     ` Markus Armbruster
2021-03-18 13:36   ` Markus Armbruster
2021-03-12 15:32 ` [PATCH v6 03/10] qapi: Implement deprecated-output=hide for QMP events Markus Armbruster
2021-03-12 15:32 ` [PATCH v6 04/10] qapi: Implement deprecated-output=hide for QMP event data Markus Armbruster
2021-03-12 15:32 ` [PATCH v6 05/10] monitor: Drop query-qmp-schema 'gen': false hack Markus Armbruster
2021-03-15 16:10   ` Eric Blake
2021-03-15 16:34     ` Markus Armbruster
2021-03-12 15:32 ` [PATCH v6 06/10] qapi: Implement deprecated-output=hide for QMP introspection Markus Armbruster
2021-03-15 16:13   ` Eric Blake
2021-03-12 15:32 ` [PATCH v6 07/10] test-util-sockets: Add stub for monitor_set_cur() Markus Armbruster
2021-03-15 16:14   ` Eric Blake
2021-03-12 15:32 ` [PATCH v6 08/10] qapi: Implement deprecated-input=reject for QMP commands Markus Armbruster
2021-03-15 16:16   ` Eric Blake
2021-03-12 15:32 ` [PATCH v6 09/10] qapi: Implement deprecated-input=reject for QMP command arguments Markus Armbruster
2021-03-12 15:32 ` [PATCH v6 10/10] qapi: New -compat deprecated-input=crash Markus Armbruster
2021-03-15 16:19   ` Eric Blake
2021-03-18 15:08 ` Markus Armbruster [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=878s6kh541.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=ldoktor@redhat.com \
    --cc=libguestfs@redhat.com \
    --cc=libvir-list@redhat.com \
    --cc=marcandre.lureau@gmail.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=pkrempa@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.