2015-08-22 01:13 keltezéssel, Eduardo Habkost írta:
On Fri, Aug 21, 2015 at 05:36:59PM +0200, Kővágó, Zoltán wrote:
Signed-off-by: Kővágó, Zoltán <dirty.ice...@gmail.com>

I don't understand QAPI enough to understand why exactly this is needed
(so I would like to get feedback from somebody who actually understands
QAPI unions), but I have one comment below.

It's needed so the option visitor can support nested structures properly without flattening them (or breaking backward compatibility).

There is some discussion here:
http://lists.nongnu.org/archive/html/qemu-devel/2015-06/msg04438.html

But basically the thing is that with new new opts visitor, unless we convert NumaOptions into a flat union, the user would have to type -numa node,node.nodeid=foo instead of -numa node,nodeid=foo which would break backward compatibility.


[...]
  ##
+# @NumaDriver
+#
+# List of possible numa drivers.
+#
+# Since: 2.5
+##
+{ 'enum': 'NumaDriver',
+  'data': [ 'node' ] }

Why is the name "NumaDriver"? Below, the field is called "type", so why
not something like "NumaOptionType"?

No particular reason other than the example in docs/qapi-code-gen.txt used driver. The field is called type because in the non-flat union the discriminator is called type.

+
+##
+# @NumaCommonOptions
+#
+# Common set of numa options.
+#
+# @type: the numa driver to use
+#
+# Since: 2.5
+##
+{ 'struct': 'NumaCommonOptions',
+  'data': {
+    'type': 'NumaDriver' } }
+
+##
+# @NumaOptions
+#
+# A discriminated record of NUMA options. (for OptsVisitor)
+#
+# Since 2.1
+##
+{ 'union': 'NumaOptions',
+  'base': 'NumaCommonOptions',
+  'discriminator': 'type',
+  'data': {
+    'node': 'NumaNodeOptions' }}
+
+##
  # @HostMemPolicy
  #
  # Host memory policy types
--
2.5.0




Reply via email to