+++ b/qapi/block-export.json
@@ -167,10 +167,15 @@
# Describes a block export, i.e. how single node should be exported on an
# external interface.
#
+# @writethrough: If true, caches are flushed after every write request to the
+# export before completion is signalled. (since: 5.2;
+# default: false)
+#
# Since: 4.2
##
{ 'union': 'BlockExportOptions',
- 'base': { 'type': 'BlockExportType' },
+ 'base': { 'type': 'BlockExportType',
+ '*writethrough': 'bool' },
'discriminator': 'type',
'data': {
'nbd': 'BlockExportOptionsNbd'
Hm. I find it weird to have @writethrough in the base but @device in
the specialized class.
I think everything that will be common to all block exports should be in
the base, and that probably includes a node-name. I’m aware that will
make things more tedious in the code, but perhaps it would be a nicer
interface in the end. Or is the real problem that that would create
problems in the storage daemon’s command line interface, because then
the specialized (legacy) NBD interface would no longer be compatible
with the new generalized block export interface?
Anyway, @writable might be a similar story. A @read-only may make sense
in general, I think.
Basically, I think that the export code should be separate from the code
setting up the BlockBackend that should be exported, so all options
regarding that BB should be common; and those options are @node-name,
@writethrough, and @read-only. (And perhaps other things like
@resizable, too, even though that isn’t something to consider for NBD.)