diff mbox

[v5,20/22] qapi: QMP interface for blkdebug and blkverify

Message ID 1386954633-28905-21-git-send-email-mreitz@redhat.com
State New
Headers show

Commit Message

Max Reitz Dec. 13, 2013, 5:10 p.m. UTC
Add structures to support blkdebug and blkverify in blockdev-add.

Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 qapi-schema.json | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 90 insertions(+), 4 deletions(-)

Comments

Kevin Wolf Dec. 13, 2013, 8:54 p.m. UTC | #1
Am 13.12.2013 um 18:10 hat Max Reitz geschrieben:
> Add structures to support blkdebug and blkverify in blockdev-add.
> 
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>  qapi-schema.json | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
>  1 file changed, 90 insertions(+), 4 deletions(-)
> 
> diff --git a/qapi-schema.json b/qapi-schema.json
> index c3c939c..6ce016c 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -4166,6 +4166,94 @@
>              '*pass-discard-other': 'bool' } }
>  
>  ##
> +# @BlkdebugInjectErrorOptions
> +#
> +# Describes a single error injection for blkdebug.
> +#
> +# @event:       trigger event name
> +#
> +# @state:       #optional the state identifier blkdebug needs to be in to
> +#               actually trigger the event; defaults to "any"
> +#
> +# @error:       #optional error identifier (errno) to be returned; defaults to
> +#               EIO
> +#
> +# @sector:      #optional specifies the sector index which has to be affected
> +#               in order to actually trigger the event; defaults to "any
> +#               sector"
> +#
> +# @once:        #optional disables further events after this one has been
> +#               triggered; defaults to false
> +#
> +# @immediately: #optional fail immediately; defaults to false
> +#
> +# Since: 2.0
> +##
> +{ 'type': 'BlkdebugInjectErrorOptions',
> +  'data': { 'event': 'str',

I bet Eric will tell you that an enum for event would be much nicer. ;-)

Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Eric Blake Dec. 13, 2013, 9:03 p.m. UTC | #2
On 12/13/2013 01:54 PM, Kevin Wolf wrote:
> Am 13.12.2013 um 18:10 hat Max Reitz geschrieben:

>> +# @BlkdebugInjectErrorOptions
>> +#
>> +# Describes a single error injection for blkdebug.
>> +#
>> +# @event:       trigger event name
>> +#

>> +##
>> +{ 'type': 'BlkdebugInjectErrorOptions',
>> +  'data': { 'event': 'str',
> 
> I bet Eric will tell you that an enum for event would be much nicer. ;-)

Am I that predictable?  :)

And see my comments on 19; I think with a minor tweak to qapi.py's
polluted_words, that you could use @errno instead of @error.
Max Reitz Dec. 14, 2013, 12:20 a.m. UTC | #3
On 13.12.2013 21:54, Kevin Wolf wrote:
> Am 13.12.2013 um 18:10 hat Max Reitz geschrieben:
>> Add structures to support blkdebug and blkverify in blockdev-add.
>>
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>>   qapi-schema.json | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
>>   1 file changed, 90 insertions(+), 4 deletions(-)
>>
>> diff --git a/qapi-schema.json b/qapi-schema.json
>> index c3c939c..6ce016c 100644
>> --- a/qapi-schema.json
>> +++ b/qapi-schema.json
>> @@ -4166,6 +4166,94 @@
>>               '*pass-discard-other': 'bool' } }
>>   
>>   ##
>> +# @BlkdebugInjectErrorOptions
>> +#
>> +# Describes a single error injection for blkdebug.
>> +#
>> +# @event:       trigger event name
>> +#
>> +# @state:       #optional the state identifier blkdebug needs to be in to
>> +#               actually trigger the event; defaults to "any"
>> +#
>> +# @error:       #optional error identifier (errno) to be returned; defaults to
>> +#               EIO
>> +#
>> +# @sector:      #optional specifies the sector index which has to be affected
>> +#               in order to actually trigger the event; defaults to "any
>> +#               sector"
>> +#
>> +# @once:        #optional disables further events after this one has been
>> +#               triggered; defaults to false
>> +#
>> +# @immediately: #optional fail immediately; defaults to false
>> +#
>> +# Since: 2.0
>> +##
>> +{ 'type': 'BlkdebugInjectErrorOptions',
>> +  'data': { 'event': 'str',
> I bet Eric will tell you that an enum for event would be much nicer. ;-)

 From my perspective, it isn't that nice, but I see where you are coming 
from, so I'll do it. ;-)

Max
diff mbox

Patch

diff --git a/qapi-schema.json b/qapi-schema.json
index c3c939c..6ce016c 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -4166,6 +4166,94 @@ 
             '*pass-discard-other': 'bool' } }
 
 ##
+# @BlkdebugInjectErrorOptions
+#
+# Describes a single error injection for blkdebug.
+#
+# @event:       trigger event name
+#
+# @state:       #optional the state identifier blkdebug needs to be in to
+#               actually trigger the event; defaults to "any"
+#
+# @error:       #optional error identifier (errno) to be returned; defaults to
+#               EIO
+#
+# @sector:      #optional specifies the sector index which has to be affected
+#               in order to actually trigger the event; defaults to "any
+#               sector"
+#
+# @once:        #optional disables further events after this one has been
+#               triggered; defaults to false
+#
+# @immediately: #optional fail immediately; defaults to false
+#
+# Since: 2.0
+##
+{ 'type': 'BlkdebugInjectErrorOptions',
+  'data': { 'event': 'str',
+            '*state': 'int',
+            '*error': 'int',
+            '*sector': 'int',
+            '*once': 'bool',
+            '*immediately': 'bool' } }
+
+##
+# @BlkdebugSetStateOptions
+#
+# Describes a single state-change event for blkdebug.
+#
+# @event:       trigger event name
+#
+# @state:       #optional the current state identifier blkdebug needs to be in;
+#               defaults to "any"
+#
+# @new_state:   the state identifier blkdebug is supposed to assume if
+#               this event is triggered
+#
+# Since: 2.0
+##
+{ 'type': 'BlkdebugSetStateOptions',
+  'data': { 'event': 'str',
+            '*state': 'int',
+            'new_state': 'int' } }
+
+##
+# @BlockdevOptionsBlkdebug
+#
+# Driver specific block device options for blkdebug.
+#
+# @image:           underlying raw block device (or image file)
+#
+# @config:          #optional filename of the configuration file
+#
+# @inject-error:    #optional array of error injection descriptions
+#
+# @set-state:       #optional array of state-change descriptions
+#
+# Since: 2.0
+##
+{ 'type': 'BlockdevOptionsBlkdebug',
+  'data': { 'image': 'BlockdevRef',
+            '*config': 'str',
+            '*inject-error': ['BlkdebugInjectErrorOptions'],
+            '*set-state': ['BlkdebugSetStateOptions'] } }
+
+##
+# @BlockdevOptionsBlkverify
+#
+# Driver specific block device options for blkverify.
+#
+# @test:    block device to be tested
+#
+# @raw:     raw image used for verification
+#
+# Since: 2.0
+##
+{ 'type': 'BlockdevOptionsBlkverify',
+  'data': { 'test': 'BlockdevRef',
+            'raw': 'BlockdevRef' } }
+
+##
 # @BlockdevOptions
 #
 # Options for creating a block device.
@@ -4189,10 +4277,8 @@ 
 # TODO sheepdog: Wait for structured options
 # TODO ssh: Should take InetSocketAddress for 'host'?
       'vvfat':      'BlockdevOptionsVVFAT',
-
-# TODO blkdebug: Wait for structured options
-# TODO blkverify: Wait for structured options
-
+      'blkdebug':   'BlockdevOptionsBlkdebug',
+      'blkverify':  'BlockdevOptionsBlkverify',
       'bochs':      'BlockdevOptionsGenericFormat',
       'cloop':      'BlockdevOptionsGenericFormat',
       'cow':        'BlockdevOptionsGenericCOWFormat',