diff mbox

[v8,02/12] qapi: Add BlockOperationType enum

Message ID 1386920120-2651-3-git-send-email-famz@redhat.com
State New
Headers show

Commit Message

Fam Zheng Dec. 13, 2013, 7:35 a.m. UTC
This adds the enum of all the operations that can be taken on a block
device.

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 qapi-schema.json | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

Comments

Stefan Hajnoczi Jan. 3, 2014, 10:09 a.m. UTC | #1
On Fri, Dec 13, 2013 at 03:35:10PM +0800, Fam Zheng wrote:
> This adds the enum of all the operations that can be taken on a block
> device.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  qapi-schema.json | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
> 
> diff --git a/qapi-schema.json b/qapi-schema.json
> index d6f8615..8e982a2 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -1440,6 +1440,56 @@
>    'data': ['commit', 'stream', 'mirror', 'backup'] }
>  
>  ##
> +# @BlockOperationType
> +#
> +# Type of a block operation. (since 2.0)

Why is this exposed in qapi-schema.json?  The blockers concept is
internal to QEMU and not exposed via QMP.
Fam Zheng Jan. 8, 2014, 2:28 a.m. UTC | #2
On 2014年01月03日 18:09, Stefan Hajnoczi wrote:
> On Fri, Dec 13, 2013 at 03:35:10PM +0800, Fam Zheng wrote:
>> This adds the enum of all the operations that can be taken on a block
>> device.
>>
>> Signed-off-by: Fam Zheng <famz@redhat.com>
>> ---
>>   qapi-schema.json | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 50 insertions(+)
>>
>> diff --git a/qapi-schema.json b/qapi-schema.json
>> index d6f8615..8e982a2 100644
>> --- a/qapi-schema.json
>> +++ b/qapi-schema.json
>> @@ -1440,6 +1440,56 @@
>>     'data': ['commit', 'stream', 'mirror', 'backup'] }
>>
>>   ##
>> +# @BlockOperationType
>> +#
>> +# Type of a block operation. (since 2.0)
>
> Why is this exposed in qapi-schema.json?  The blockers concept is
> internal to QEMU and not exposed via QMP.
>

I plan to add it into block information (query-block, for example). But 
in follow up patches. It could be useful for user to check which 
commands/operations are possible without trial-and-fail, when we put 
more and more complicated state and configuration into the BDS graph.

Fam
Stefan Hajnoczi Jan. 8, 2014, 3:26 a.m. UTC | #3
On Wed, Jan 08, 2014 at 10:28:59AM +0800, Fam Zheng wrote:
> On 2014年01月03日 18:09, Stefan Hajnoczi wrote:
> >On Fri, Dec 13, 2013 at 03:35:10PM +0800, Fam Zheng wrote:
> >>This adds the enum of all the operations that can be taken on a block
> >>device.
> >>
> >>Signed-off-by: Fam Zheng <famz@redhat.com>
> >>---
> >>  qapi-schema.json | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
> >>  1 file changed, 50 insertions(+)
> >>
> >>diff --git a/qapi-schema.json b/qapi-schema.json
> >>index d6f8615..8e982a2 100644
> >>--- a/qapi-schema.json
> >>+++ b/qapi-schema.json
> >>@@ -1440,6 +1440,56 @@
> >>    'data': ['commit', 'stream', 'mirror', 'backup'] }
> >>
> >>  ##
> >>+# @BlockOperationType
> >>+#
> >>+# Type of a block operation. (since 2.0)
> >
> >Why is this exposed in qapi-schema.json?  The blockers concept is
> >internal to QEMU and not exposed via QMP.
> >
> 
> I plan to add it into block information (query-block, for example).
> But in follow up patches. It could be useful for user to check which
> commands/operations are possible without trial-and-fail, when we put
> more and more complicated state and configuration into the BDS
> graph.

Can you make it internal for now and expose via QMP if necessary later?

I think we shouldn't commit to public APIs unless they are ready and
provide a useful service, since we cannot change them.

Stefan
Fam Zheng Jan. 8, 2014, 3:31 a.m. UTC | #4
On 2014年01月08日 11:26, Stefan Hajnoczi wrote:
> On Wed, Jan 08, 2014 at 10:28:59AM +0800, Fam Zheng wrote:
>> On 2014年01月03日 18:09, Stefan Hajnoczi wrote:
>>> On Fri, Dec 13, 2013 at 03:35:10PM +0800, Fam Zheng wrote:
>>>> This adds the enum of all the operations that can be taken on a block
>>>> device.
>>>>
>>>> Signed-off-by: Fam Zheng <famz@redhat.com>
>>>> ---
>>>>   qapi-schema.json | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>   1 file changed, 50 insertions(+)
>>>>
>>>> diff --git a/qapi-schema.json b/qapi-schema.json
>>>> index d6f8615..8e982a2 100644
>>>> --- a/qapi-schema.json
>>>> +++ b/qapi-schema.json
>>>> @@ -1440,6 +1440,56 @@
>>>>     'data': ['commit', 'stream', 'mirror', 'backup'] }
>>>>
>>>>   ##
>>>> +# @BlockOperationType
>>>> +#
>>>> +# Type of a block operation. (since 2.0)
>>>
>>> Why is this exposed in qapi-schema.json?  The blockers concept is
>>> internal to QEMU and not exposed via QMP.
>>>
>>
>> I plan to add it into block information (query-block, for example).
>> But in follow up patches. It could be useful for user to check which
>> commands/operations are possible without trial-and-fail, when we put
>> more and more complicated state and configuration into the BDS
>> graph.
>
> Can you make it internal for now and expose via QMP if necessary later?
>
> I think we shouldn't commit to public APIs unless they are ready and
> provide a useful service, since we cannot change them.
>

OK, works for me.

Fam
diff mbox

Patch

diff --git a/qapi-schema.json b/qapi-schema.json
index d6f8615..8e982a2 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -1440,6 +1440,56 @@ 
   'data': ['commit', 'stream', 'mirror', 'backup'] }
 
 ##
+# @BlockOperationType
+#
+# Type of a block operation. (since 2.0)
+#
+# @backup-source: As a backup source. See the 'drive-backup' command.
+#
+# @backup-target: As a backup target. See the 'drive-backup' command.
+#
+# @change: See the 'change' command.
+#
+# @commit: See the 'block-commit' command.
+#
+# @dataplane: The virtio-blk dataplane feature.
+#
+# @drive-del: See the 'drive_del' HMP command.
+#
+# @eject: See the 'eject' command.
+#
+# @external-snapshot: See the 'blockdev-snapshot-sync' command.
+#
+# @internal-snapshot: See the 'blockdev-snapshot-internal-sync' command.
+#
+# @internal-snapshot-delete: See the 'blockdev-snapshot-delete-internal-sync' command.
+#
+# @mirror: See the 'drive-mirror' command.
+#
+# @resize: See the 'block-resize' command.
+#
+# @stream: See the 'block-stream' command.
+#
+# Since: 2.0
+##
+{ 'enum': 'BlockOpType',
+  'data': [
+    'backup-source',
+    'backup-target',
+    'change',
+    'commit',
+    'dataplane',
+    'drive-del',
+    'eject',
+    'external-snapshot',
+    'internal-snapshot',
+    'internal-snapshot-delete',
+    'mirror',
+    'resize',
+    'stream'
+] }
+
+##
 # @BlockJobInfo:
 #
 # Information about a long-running block device operation.