On Wed, 11 Apr 2012 16:27:10 +0100 Stefan Hajnoczi <stefa...@linux.vnet.ibm.com> wrote:
> The block streaming and job commands used '_' instead of '-' for reasons > of compatibility with libvirt, which already included support for the > '_' naming. However, the semantics of block_job_cancel have changed and > libvirt now needs to handle the new semantics. > > Since the old semantics were never in a QEMU release we can still rename > the commands to use '-' instead of '_'. Libvirt is also happy because > the new name can be used to distinguish QEMU binaries that support the > latest block-job-cancel semantics from those that include a downstream > block_job_cancel command. > > Therefore, let's apply the QAPI/QMP naming rules to the block streaming > and job commands. QEMU 1.1 will be the first release with these > commands so no upstream users can break. > > Note that HMP commands are left with '_' because that is the convention > there. > > Signed-off-by: Stefan Hajnoczi <stefa...@linux.vnet.ibm.com> Applied to the qmp branch, thanks. > --- > qapi-schema.json | 15 ++++++++------- > qmp-commands.hx | 6 +++--- > tests/qemu-iotests/030 | 12 ++++++------ > 3 files changed, 17 insertions(+), 16 deletions(-) > > diff --git a/qapi-schema.json b/qapi-schema.json > index ace55f3..6499895 100644 > --- a/qapi-schema.json > +++ b/qapi-schema.json > @@ -1548,7 +1548,8 @@ > 'data': { 'device': 'str', 'bps': 'int', 'bps_rd': 'int', 'bps_wr': 'int', > 'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int' } } > > -# @block_stream: > +## > +# @block-stream: > # > # Copy data from a backing file into a block device. > # > @@ -1556,7 +1557,7 @@ > # backing file has been copied. This command returns immediately once > streaming > # has started. The status of ongoing block streaming operations can be > checked > # with query-block-jobs. The operation can be stopped before it has > completed > -# using the block_job_cancel command. > +# using the block-job-cancel command. > # > # If a base file is specified then sectors are not copied from that base > file and > # its backing chain. When streaming completes the image file will have the > base > @@ -1578,10 +1579,10 @@ > # > # Since: 1.1 > ## > -{ 'command': 'block_stream', 'data': { 'device': 'str', '*base': 'str' } } > +{ 'command': 'block-stream', 'data': { 'device': 'str', '*base': 'str' } } > > ## > -# @block_job_set_speed: > +# @block-job-set-speed: > # > # Set maximum speed for a background block operation. > # > @@ -1599,11 +1600,11 @@ > # > # Since: 1.1 > ## > -{ 'command': 'block_job_set_speed', > +{ 'command': 'block-job-set-speed', > 'data': { 'device': 'str', 'value': 'int' } } > > ## > -# @block_job_cancel: > +# @block-job-cancel: > # > # Stop an active block streaming operation. > # > @@ -1629,7 +1630,7 @@ > # > # Since: 1.1 > ## > -{ 'command': 'block_job_cancel', 'data': { 'device': 'str' } } > +{ 'command': 'block-job-cancel', 'data': { 'device': 'str' } } > > ## > # @ObjectTypeInfo: > diff --git a/qmp-commands.hx b/qmp-commands.hx > index c09ee85..f972332 100644 > --- a/qmp-commands.hx > +++ b/qmp-commands.hx > @@ -687,19 +687,19 @@ Example: > EQMP > > { > - .name = "block_stream", > + .name = "block-stream", > .args_type = "device:B,base:s?", > .mhandler.cmd_new = qmp_marshal_input_block_stream, > }, > > { > - .name = "block_job_set_speed", > + .name = "block-job-set-speed", > .args_type = "device:B,value:o", > .mhandler.cmd_new = qmp_marshal_input_block_job_set_speed, > }, > > { > - .name = "block_job_cancel", > + .name = "block-job-cancel", > .args_type = "device:B", > .mhandler.cmd_new = qmp_marshal_input_block_job_cancel, > }, > diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030 > index 1faf984..978fd82 100755 > --- a/tests/qemu-iotests/030 > +++ b/tests/qemu-iotests/030 > @@ -49,7 +49,7 @@ class TestSingleDrive(ImageStreamingTestCase): > def test_stream(self): > self.assert_no_active_streams() > > - result = self.vm.qmp('block_stream', device='drive0') > + result = self.vm.qmp('block-stream', device='drive0') > self.assert_qmp(result, 'return', {}) > > completed = False > @@ -68,7 +68,7 @@ class TestSingleDrive(ImageStreamingTestCase): > 'image file not fully populated after streaming') > > def test_device_not_found(self): > - result = self.vm.qmp('block_stream', device='nonexistent') > + result = self.vm.qmp('block-stream', device='nonexistent') > self.assert_qmp(result, 'error/class', 'DeviceNotFound') > > class TestStreamStop(ImageStreamingTestCase): > @@ -90,14 +90,14 @@ class TestStreamStop(ImageStreamingTestCase): > > self.assert_no_active_streams() > > - result = self.vm.qmp('block_stream', device='drive0') > + result = self.vm.qmp('block-stream', device='drive0') > self.assert_qmp(result, 'return', {}) > > time.sleep(1) > events = self.vm.get_qmp_events(wait=False) > self.assertEqual(events, [], 'unexpected QMP event: %s' % events) > > - self.vm.qmp('block_job_cancel', device='drive0') > + self.vm.qmp('block-job-cancel', device='drive0') > self.assert_qmp(result, 'return', {}) > > cancelled = False > @@ -129,10 +129,10 @@ class TestSetSpeed(ImageStreamingTestCase): > def perf_test_set_speed(self): > self.assert_no_active_streams() > > - result = self.vm.qmp('block_stream', device='drive0') > + result = self.vm.qmp('block-stream', device='drive0') > self.assert_qmp(result, 'return', {}) > > - result = self.vm.qmp('block_job_set_speed', device='drive0', value=8 > * 1024 * 1024) > + result = self.vm.qmp('block-job-set-speed', device='drive0', value=8 > * 1024 * 1024) > self.assert_qmp(result, 'return', {}) > > completed = False