From nobody Wed May 1 02:23:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1510354002560701.5194184427078; Fri, 10 Nov 2017 14:46:42 -0800 (PST) Received: from localhost ([::1]:43763 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eDI4J-0000X5-Mr for importer@patchew.org; Fri, 10 Nov 2017 17:46:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52772) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eDI1B-0006he-TZ for qemu-devel@nongnu.org; Fri, 10 Nov 2017 17:43:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eDI18-0000ni-N1 for qemu-devel@nongnu.org; Fri, 10 Nov 2017 17:43:21 -0500 Received: from mx1.redhat.com ([209.132.183.28]:34144) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eDI11-0000lX-6f; Fri, 10 Nov 2017 17:43:11 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5C68C83F3D; Fri, 10 Nov 2017 22:43:10 +0000 (UTC) Received: from localhost (ovpn-204-126.brq.redhat.com [10.40.204.126]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EBE4B62920; Fri, 10 Nov 2017 22:43:08 +0000 (UTC) From: Max Reitz To: qemu-block@nongnu.org Date: Fri, 10 Nov 2017 23:42:59 +0100 Message-Id: <20171110224302.14424-2-mreitz@redhat.com> In-Reply-To: <20171110224302.14424-1-mreitz@redhat.com> References: <20171110224302.14424-1-mreitz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Fri, 10 Nov 2017 22:43:10 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH for-2.12 1/4] iotests: Make BD-{remove, insert}-medium use @id X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Markus Armbruster , qemu-devel@nongnu.org, Max Reitz , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" In some cases, these commands still use the deprecated @device parameter. Fix that so we can later drop that parameter from their interface. Signed-off-by: Max Reitz Reviewed-by: Alberto Garcia --- tests/qemu-iotests/118 | 184 +++++++++++++++++++++++----------------------= ---- tests/qemu-iotests/155 | 60 ++++++++-------- 2 files changed, 113 insertions(+), 131 deletions(-) diff --git a/tests/qemu-iotests/118 b/tests/qemu-iotests/118 index 8a9e838c90..ca6965d23c 100755 --- a/tests/qemu-iotests/118 +++ b/tests/qemu-iotests/118 @@ -28,6 +28,14 @@ from iotests import qemu_img old_img =3D os.path.join(iotests.test_dir, 'test0.img') new_img =3D os.path.join(iotests.test_dir, 'test1.img') =20 +def interface_to_device_name(interface): + if interface =3D=3D 'ide': + return 'ide-cd' + elif interface =3D=3D 'floppy': + return 'floppy' + else: + return None + class ChangeBaseClass(iotests.QMPTestCase): has_opened =3D False has_closed =3D False @@ -63,7 +71,7 @@ class ChangeBaseClass(iotests.QMPTestCase): =20 class GeneralChangeTestsBaseClass(ChangeBaseClass): =20 - device_name =3D None + device_name =3D 'qdev0' =20 def test_change(self): result =3D self.vm.qmp('change', device=3D'drive0', target=3Dnew_i= mg, @@ -79,14 +87,9 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): self.assert_qmp(result, 'return[0]/inserted/image/filename', new_i= mg) =20 def test_blockdev_change_medium(self): - if self.device_name is not None: - result =3D self.vm.qmp('blockdev-change-medium', - id=3Dself.device_name, filename=3Dnew_img, - format=3Diotests.imgfmt) - else: - result =3D self.vm.qmp('blockdev-change-medium', - device=3D'drive0', filename=3Dnew_img, - format=3Diotests.imgfmt) + result =3D self.vm.qmp('blockdev-change-medium', + id=3Dself.device_name, filename=3Dnew_img, + format=3Diotests.imgfmt) =20 self.assert_qmp(result, 'return', {}) =20 @@ -99,10 +102,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): self.assert_qmp(result, 'return[0]/inserted/image/filename', new_i= mg) =20 def test_eject(self): - if self.device_name is not None: - result =3D self.vm.qmp('eject', id=3Dself.device_name, force= =3DTrue) - else: - result =3D self.vm.qmp('eject', device=3D'drive0', force=3DTru= e) + result =3D self.vm.qmp('eject', id=3Dself.device_name, force=3DTru= e) self.assert_qmp(result, 'return', {}) =20 self.wait_for_open() @@ -113,10 +113,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): self.assert_qmp_absent(result, 'return[0]/inserted') =20 def test_tray_eject_change(self): - if self.device_name is not None: - result =3D self.vm.qmp('eject', id=3Dself.device_name, force= =3DTrue) - else: - result =3D self.vm.qmp('eject', device=3D'drive0', force=3DTru= e) + result =3D self.vm.qmp('eject', id=3Dself.device_name, force=3DTru= e) self.assert_qmp(result, 'return', {}) =20 self.wait_for_open() @@ -126,12 +123,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): self.assert_qmp(result, 'return[0]/tray_open', True) self.assert_qmp_absent(result, 'return[0]/inserted') =20 - if self.device_name is not None: - result =3D self.vm.qmp('blockdev-change-medium', id=3Dself.dev= ice_name, - filename=3Dnew_img, format=3Diotests.imgf= mt) - else: - result =3D self.vm.qmp('blockdev-change-medium', device=3D'dri= ve0', - filename=3Dnew_img, format=3Diotests.imgf= mt) + result =3D self.vm.qmp('blockdev-change-medium', id=3Dself.device_= name, + filename=3Dnew_img, format=3Diotests.imgfmt) self.assert_qmp(result, 'return', {}) =20 self.wait_for_close() @@ -142,12 +135,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): self.assert_qmp(result, 'return[0]/inserted/image/filename', new_i= mg) =20 def test_tray_open_close(self): - if self.device_name is not None: - result =3D self.vm.qmp('blockdev-open-tray', - id=3Dself.device_name, force=3DTrue) - else: - result =3D self.vm.qmp('blockdev-open-tray', - device=3D'drive0', force=3DTrue) + result =3D self.vm.qmp('blockdev-open-tray', + id=3Dself.device_name, force=3DTrue) self.assert_qmp(result, 'return', {}) =20 self.wait_for_open() @@ -160,10 +149,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): else: self.assert_qmp(result, 'return[0]/inserted/image/filename', o= ld_img) =20 - if self.device_name is not None: - result =3D self.vm.qmp('blockdev-close-tray', id=3Dself.device= _name) - else: - result =3D self.vm.qmp('blockdev-close-tray', device=3D'drive0= ') + result =3D self.vm.qmp('blockdev-close-tray', id=3Dself.device_nam= e) self.assert_qmp(result, 'return', {}) =20 if self.has_real_tray or not self.was_empty: @@ -178,7 +164,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): self.assert_qmp(result, 'return[0]/inserted/image/filename', o= ld_img) =20 def test_tray_eject_close(self): - result =3D self.vm.qmp('eject', device=3D'drive0', force=3DTrue) + result =3D self.vm.qmp('eject', id=3Dself.device_name, force=3DTru= e) self.assert_qmp(result, 'return', {}) =20 self.wait_for_open() @@ -188,10 +174,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): self.assert_qmp(result, 'return[0]/tray_open', True) self.assert_qmp_absent(result, 'return[0]/inserted') =20 - if self.device_name is not None: - result =3D self.vm.qmp('blockdev-close-tray', id=3Dself.device= _name) - else: - result =3D self.vm.qmp('blockdev-close-tray', device=3D'drive0= ') + result =3D self.vm.qmp('blockdev-close-tray', id=3Dself.device_nam= e) self.assert_qmp(result, 'return', {}) =20 self.wait_for_close() @@ -202,7 +185,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): self.assert_qmp_absent(result, 'return[0]/inserted') =20 def test_tray_open_change(self): - result =3D self.vm.qmp('blockdev-open-tray', device=3D'drive0', fo= rce=3DTrue) + result =3D self.vm.qmp('blockdev-open-tray', id=3Dself.device_name, + force=3DTrue) self.assert_qmp(result, 'return', {}) =20 self.wait_for_open() @@ -215,7 +199,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): else: self.assert_qmp(result, 'return[0]/inserted/image/filename', o= ld_img) =20 - result =3D self.vm.qmp('blockdev-change-medium', device=3D'drive0', + result =3D self.vm.qmp('blockdev-change-medium', id=3Dself.device_= name, filename=3Dnew_img, format=3Diotests.im= gfmt) self.assert_qmp(result, 'return', {}) @@ -235,12 +219,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): 'driver': 'file'}) self.assert_qmp(result, 'return', {}) =20 - if self.device_name is not None: - result =3D self.vm.qmp('blockdev-open-tray', - id=3Dself.device_name, force=3DTrue) - else: - result =3D self.vm.qmp('blockdev-open-tray', - device=3D'drive0', force=3DTrue) + result =3D self.vm.qmp('blockdev-open-tray', + id=3Dself.device_name, force=3DTrue) self.assert_qmp(result, 'return', {}) =20 self.wait_for_open() @@ -253,11 +233,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): else: self.assert_qmp(result, 'return[0]/inserted/image/filename', o= ld_img) =20 - if self.device_name is not None: - result =3D self.vm.qmp('x-blockdev-remove-medium', - id=3Dself.device_name) - else: - result =3D self.vm.qmp('x-blockdev-remove-medium', device=3D'd= rive0') + result =3D self.vm.qmp('x-blockdev-remove-medium', + id=3Dself.device_name) self.assert_qmp(result, 'return', {}) =20 result =3D self.vm.qmp('query-block') @@ -265,12 +242,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): self.assert_qmp(result, 'return[0]/tray_open', True) self.assert_qmp_absent(result, 'return[0]/inserted') =20 - if self.device_name is not None: - result =3D self.vm.qmp('x-blockdev-insert-medium', - id=3Dself.device_name, node_name=3D'new') - else: - result =3D self.vm.qmp('x-blockdev-insert-medium', - device=3D'drive0', node_name=3D'new') + result =3D self.vm.qmp('x-blockdev-insert-medium', + id=3Dself.device_name, node_name=3D'new') self.assert_qmp(result, 'return', {}) =20 result =3D self.vm.qmp('query-block') @@ -278,10 +251,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): self.assert_qmp(result, 'return[0]/tray_open', True) self.assert_qmp(result, 'return[0]/inserted/image/filename', new_i= mg) =20 - if self.device_name is not None: - result =3D self.vm.qmp('blockdev-close-tray', id=3Dself.device= _name) - else: - result =3D self.vm.qmp('blockdev-close-tray', device=3D'drive0= ') + result =3D self.vm.qmp('blockdev-close-tray', id=3Dself.device_nam= e) self.assert_qmp(result, 'return', {}) =20 self.wait_for_close() @@ -292,7 +262,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): self.assert_qmp(result, 'return[0]/inserted/image/filename', new_i= mg) =20 def test_close_on_closed(self): - result =3D self.vm.qmp('blockdev-close-tray', device=3D'drive0') + result =3D self.vm.qmp('blockdev-close-tray', id=3Dself.device_nam= e) # Should be a no-op self.assert_qmp(result, 'return', {}) self.assertEquals(self.vm.get_qmp_events(wait=3DFalse), []) @@ -301,7 +271,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): if not self.has_real_tray: return =20 - result =3D self.vm.qmp('x-blockdev-remove-medium', device=3D'drive= 0') + result =3D self.vm.qmp('x-blockdev-remove-medium', id=3Dself.devic= e_name) self.assert_qmp(result, 'error/class', 'GenericError') =20 def test_insert_on_closed(self): @@ -315,7 +285,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): 'driver': 'file'}) self.assert_qmp(result, 'return', {}) =20 - result =3D self.vm.qmp('x-blockdev-insert-medium', device=3D'drive= 0', + result =3D self.vm.qmp('x-blockdev-insert-medium', id=3Dself.devic= e_name, node_name=3D'new') self.assert_qmp(result, 'error/class', 'GenericError') =20 @@ -326,12 +296,10 @@ class TestInitiallyFilled(GeneralChangeTestsBaseClass= ): qemu_img('create', '-f', iotests.imgfmt, old_img, '1440k') qemu_img('create', '-f', iotests.imgfmt, new_img, '1440k') self.vm =3D iotests.VM() - if interface =3D=3D 'ide': - self.device_name =3D 'qdev0' - self.vm.add_drive(old_img, 'media=3D%s' % media, 'none') - self.vm.add_device('ide-cd,drive=3Ddrive0,id=3D%s' % self.devi= ce_name) - else: - self.vm.add_drive(old_img, 'media=3D%s' % media, interface) + self.vm.add_drive(old_img, 'media=3D%s' % media, 'none') + self.vm.add_device('%s,drive=3Ddrive0,id=3D%s' % + (interface_to_device_name(interface), + self.device_name)) self.vm.launch() =20 def tearDown(self): @@ -347,12 +315,12 @@ class TestInitiallyFilled(GeneralChangeTestsBaseClass= ): 'driver': 'file'}) self.assert_qmp(result, 'return', {}) =20 - result =3D self.vm.qmp('blockdev-open-tray', device=3D'drive0') + result =3D self.vm.qmp('blockdev-open-tray', id=3Dself.device_name) self.assert_qmp(result, 'return', {}) =20 self.wait_for_open() =20 - result =3D self.vm.qmp('x-blockdev-insert-medium', device=3D'drive= 0', + result =3D self.vm.qmp('x-blockdev-insert-medium', id=3Dself.devic= e_name, node_name=3D'new') self.assert_qmp(result, 'error/class', 'GenericError') =20 @@ -361,7 +329,10 @@ class TestInitiallyEmpty(GeneralChangeTestsBaseClass): =20 def setUp(self, media, interface): qemu_img('create', '-f', iotests.imgfmt, new_img, '1440k') - self.vm =3D iotests.VM().add_drive(None, 'media=3D%s' % media, int= erface) + self.vm =3D iotests.VM().add_drive(None, 'media=3D%s' % media, 'no= ne') + self.vm.add_device('%s,drive=3Ddrive0,id=3D%s' % + (interface_to_device_name(interface), + self.device_name)) self.vm.launch() =20 def tearDown(self): @@ -369,12 +340,12 @@ class TestInitiallyEmpty(GeneralChangeTestsBaseClass): os.remove(new_img) =20 def test_remove_on_empty(self): - result =3D self.vm.qmp('blockdev-open-tray', device=3D'drive0') + result =3D self.vm.qmp('blockdev-open-tray', id=3Dself.device_name) self.assert_qmp(result, 'return', {}) =20 self.wait_for_open() =20 - result =3D self.vm.qmp('x-blockdev-remove-medium', device=3D'drive= 0') + result =3D self.vm.qmp('x-blockdev-remove-medium', id=3Dself.devic= e_name) # Should be a no-op self.assert_qmp(result, 'return', {}) =20 @@ -410,6 +381,8 @@ class TestFloppyInitiallyEmpty(TestInitiallyEmpty): self.has_opened =3D True =20 class TestChangeReadOnly(ChangeBaseClass): + device_name =3D 'qdev0' + def setUp(self): qemu_img('create', '-f', iotests.imgfmt, old_img, '1440k') qemu_img('create', '-f', iotests.imgfmt, new_img, '1440k') @@ -425,14 +398,15 @@ class TestChangeReadOnly(ChangeBaseClass): def test_ro_ro_retain(self): os.chmod(old_img, 0444) os.chmod(new_img, 0444) - self.vm.add_drive(old_img, 'media=3Ddisk,read-only=3Don', 'floppy') + self.vm.add_drive(old_img, 'media=3Ddisk,read-only=3Don', 'none') + self.vm.add_device('floppy,drive=3Ddrive0,id=3D%s' % self.device_n= ame) self.vm.launch() =20 result =3D self.vm.qmp('query-block') self.assert_qmp(result, 'return[0]/inserted/ro', True) self.assert_qmp(result, 'return[0]/inserted/image/filename', old_i= mg) =20 - result =3D self.vm.qmp('blockdev-change-medium', device=3D'drive0', + result =3D self.vm.qmp('blockdev-change-medium', id=3Dself.device_= name, filename=3Dnew_img, format=3Diotests.im= gfmt, read_only_mode=3D'r= etain') @@ -444,14 +418,15 @@ class TestChangeReadOnly(ChangeBaseClass): =20 def test_ro_rw_retain(self): os.chmod(old_img, 0444) - self.vm.add_drive(old_img, 'media=3Ddisk,read-only=3Don', 'floppy') + self.vm.add_drive(old_img, 'media=3Ddisk,read-only=3Don', 'none') + self.vm.add_device('floppy,drive=3Ddrive0,id=3D%s' % self.device_n= ame) self.vm.launch() =20 result =3D self.vm.qmp('query-block') self.assert_qmp(result, 'return[0]/inserted/ro', True) self.assert_qmp(result, 'return[0]/inserted/image/filename', old_i= mg) =20 - result =3D self.vm.qmp('blockdev-change-medium', device=3D'drive0', + result =3D self.vm.qmp('blockdev-change-medium', id=3Dself.device_= name, filename=3Dnew_img, format=3Diotests.im= gfmt, read_only_mode=3D'r= etain') @@ -463,14 +438,15 @@ class TestChangeReadOnly(ChangeBaseClass): =20 def test_rw_ro_retain(self): os.chmod(new_img, 0444) - self.vm.add_drive(old_img, 'media=3Ddisk', 'floppy') + self.vm.add_drive(old_img, 'media=3Ddisk', 'none') + self.vm.add_device('floppy,drive=3Ddrive0,id=3D%s' % self.device_n= ame) self.vm.launch() =20 result =3D self.vm.qmp('query-block') self.assert_qmp(result, 'return[0]/inserted/ro', False) self.assert_qmp(result, 'return[0]/inserted/image/filename', old_i= mg) =20 - result =3D self.vm.qmp('blockdev-change-medium', device=3D'drive0', + result =3D self.vm.qmp('blockdev-change-medium', id=3Dself.device_= name, filename=3Dnew_img, format=3Diotests.im= gfmt, read_only_mode=3D'r= etain') @@ -484,7 +460,8 @@ class TestChangeReadOnly(ChangeBaseClass): =20 def test_ro_rw(self): os.chmod(old_img, 0444) - self.vm.add_drive(old_img, 'media=3Ddisk,read-only=3Don', 'floppy') + self.vm.add_drive(old_img, 'media=3Ddisk,read-only=3Don', 'none') + self.vm.add_device('floppy,drive=3Ddrive0,id=3D%s' % self.device_n= ame) self.vm.launch() =20 result =3D self.vm.qmp('query-block') @@ -492,7 +469,7 @@ class TestChangeReadOnly(ChangeBaseClass): self.assert_qmp(result, 'return[0]/inserted/image/filename', old_i= mg) =20 result =3D self.vm.qmp('blockdev-change-medium', - device=3D'drive0', + id=3Dself.device_name, filename=3Dnew_img, format=3Diotests.imgfmt, read_only_mode=3D'read-write') @@ -504,7 +481,8 @@ class TestChangeReadOnly(ChangeBaseClass): =20 def test_rw_ro(self): os.chmod(new_img, 0444) - self.vm.add_drive(old_img, 'media=3Ddisk', 'floppy') + self.vm.add_drive(old_img, 'media=3Ddisk', 'none') + self.vm.add_device('floppy,drive=3Ddrive0,id=3D%s' % self.device_n= ame) self.vm.launch() =20 result =3D self.vm.qmp('query-block') @@ -512,7 +490,7 @@ class TestChangeReadOnly(ChangeBaseClass): self.assert_qmp(result, 'return[0]/inserted/image/filename', old_i= mg) =20 result =3D self.vm.qmp('blockdev-change-medium', - device=3D'drive0', + id=3Dself.device_name, filename=3Dnew_img, format=3Diotests.imgfmt, read_only_mode=3D'read-only') @@ -523,7 +501,8 @@ class TestChangeReadOnly(ChangeBaseClass): self.assert_qmp(result, 'return[0]/inserted/image/filename', new_i= mg) =20 def test_make_rw_ro(self): - self.vm.add_drive(old_img, 'media=3Ddisk', 'floppy') + self.vm.add_drive(old_img, 'media=3Ddisk', 'none') + self.vm.add_device('floppy,drive=3Ddrive0,id=3D%s' % self.device_n= ame) self.vm.launch() =20 result =3D self.vm.qmp('query-block') @@ -531,7 +510,7 @@ class TestChangeReadOnly(ChangeBaseClass): self.assert_qmp(result, 'return[0]/inserted/image/filename', old_i= mg) =20 result =3D self.vm.qmp('blockdev-change-medium', - device=3D'drive0', + id=3Dself.device_name, filename=3Dnew_img, format=3Diotests.imgfmt, read_only_mode=3D'read-only') @@ -543,7 +522,8 @@ class TestChangeReadOnly(ChangeBaseClass): =20 def test_make_ro_rw(self): os.chmod(new_img, 0444) - self.vm.add_drive(old_img, 'media=3Ddisk', 'floppy') + self.vm.add_drive(old_img, 'media=3Ddisk', 'none') + self.vm.add_device('floppy,drive=3Ddrive0,id=3D%s' % self.device_n= ame) self.vm.launch() =20 result =3D self.vm.qmp('query-block') @@ -551,7 +531,7 @@ class TestChangeReadOnly(ChangeBaseClass): self.assert_qmp(result, 'return[0]/inserted/image/filename', old_i= mg) =20 result =3D self.vm.qmp('blockdev-change-medium', - device=3D'drive0', + id=3Dself.device_name, filename=3Dnew_img, format=3Diotests.imgfmt, read_only_mode=3D'read-write') @@ -563,14 +543,15 @@ class TestChangeReadOnly(ChangeBaseClass): =20 def test_make_rw_ro_by_retain(self): os.chmod(old_img, 0444) - self.vm.add_drive(old_img, 'media=3Ddisk,read-only=3Don', 'floppy') + self.vm.add_drive(old_img, 'media=3Ddisk,read-only=3Don', 'none') + self.vm.add_device('floppy,drive=3Ddrive0,id=3D%s' % self.device_n= ame) self.vm.launch() =20 result =3D self.vm.qmp('query-block') self.assert_qmp(result, 'return[0]/inserted/ro', True) self.assert_qmp(result, 'return[0]/inserted/image/filename', old_i= mg) =20 - result =3D self.vm.qmp('blockdev-change-medium', device=3D'drive0', + result =3D self.vm.qmp('blockdev-change-medium', id=3Dself.device_= name, filename=3Dnew_img, format=3Diotests.im= gfmt, read_only_mode=3D'r= etain') @@ -582,14 +563,15 @@ class TestChangeReadOnly(ChangeBaseClass): =20 def test_make_ro_rw_by_retain(self): os.chmod(new_img, 0444) - self.vm.add_drive(old_img, 'media=3Ddisk', 'floppy') + self.vm.add_drive(old_img, 'media=3Ddisk', 'none') + self.vm.add_device('floppy,drive=3Ddrive0,id=3D%s' % self.device_n= ame) self.vm.launch() =20 result =3D self.vm.qmp('query-block') self.assert_qmp(result, 'return[0]/inserted/ro', False) self.assert_qmp(result, 'return[0]/inserted/image/filename', old_i= mg) =20 - result =3D self.vm.qmp('blockdev-change-medium', device=3D'drive0', + result =3D self.vm.qmp('blockdev-change-medium', id=3Dself.device_= name, filename=3Dnew_img, format=3Diotests.im= gfmt, read_only_mode=3D'r= etain') @@ -601,7 +583,8 @@ class TestChangeReadOnly(ChangeBaseClass): =20 def test_rw_ro_cycle(self): os.chmod(new_img, 0444) - self.vm.add_drive(old_img, 'media=3Ddisk', 'floppy') + self.vm.add_drive(old_img, 'media=3Ddisk', 'none') + self.vm.add_device('floppy,drive=3Ddrive0,id=3D%s' % self.device_n= ame) self.vm.launch() =20 result =3D self.vm.qmp('query-block') @@ -620,13 +603,13 @@ class TestChangeReadOnly(ChangeBaseClass): self.assert_qmp(result, 'return[0]/inserted/ro', False) self.assert_qmp(result, 'return[0]/inserted/image/filename', old_i= mg) =20 - result =3D self.vm.qmp('x-blockdev-remove-medium', device=3D'drive= 0') + result =3D self.vm.qmp('x-blockdev-remove-medium', id=3Dself.devic= e_name) self.assert_qmp(result, 'return', {}) =20 result =3D self.vm.qmp('query-block') self.assert_qmp_absent(result, 'return[0]/inserted') =20 - result =3D self.vm.qmp('x-blockdev-insert-medium', device=3D'drive= 0', + result =3D self.vm.qmp('x-blockdev-insert-medium', id=3Dself.devic= e_name, node_name=3D'new') self.assert_qmp(result, 'return', {}) =20 @@ -644,11 +627,14 @@ TestInitiallyEmpty =3D None =20 =20 class TestBlockJobsAfterCycle(ChangeBaseClass): + device_name =3D 'qdev0' + def setUp(self): - qemu_img('create', '-f', iotests.imgfmt, old_img, '1M') + qemu_img('create', '-f', iotests.imgfmt, old_img, '1440K') =20 self.vm =3D iotests.VM() self.vm.add_drive_raw("id=3Ddrive0,driver=3Dnull-co,if=3Dnone") + self.vm.add_device('floppy,drive=3Ddrive0,id=3D%s' % self.device_n= ame) self.vm.launch() =20 result =3D self.vm.qmp('query-block') @@ -656,7 +642,7 @@ class TestBlockJobsAfterCycle(ChangeBaseClass): =20 # For device-less BBs, calling blockdev-open-tray or blockdev-clos= e-tray # is not necessary - result =3D self.vm.qmp('x-blockdev-remove-medium', device=3D'drive= 0') + result =3D self.vm.qmp('x-blockdev-remove-medium', id=3Dself.devic= e_name) self.assert_qmp(result, 'return', {}) =20 result =3D self.vm.qmp('query-block') @@ -669,7 +655,7 @@ class TestBlockJobsAfterCycle(ChangeBaseClass): 'driver': 'file'}) self.assert_qmp(result, 'return', {}) =20 - result =3D self.vm.qmp('x-blockdev-insert-medium', device=3D'drive= 0', + result =3D self.vm.qmp('x-blockdev-insert-medium', id=3Dself.devic= e_name, node_name=3D'node0') self.assert_qmp(result, 'return', {}) =20 diff --git a/tests/qemu-iotests/155 b/tests/qemu-iotests/155 index 0b86ea4e5c..fc9fa975be 100755 --- a/tests/qemu-iotests/155 +++ b/tests/qemu-iotests/155 @@ -51,36 +51,30 @@ class BaseClass(iotests.QMPTestCase): target_real_backing =3D None =20 def setUp(self): - qemu_img('create', '-f', iotests.imgfmt, back0_img, '1M') + qemu_img('create', '-f', iotests.imgfmt, back0_img, '1440K') qemu_img('create', '-f', iotests.imgfmt, '-b', back0_img, back1_im= g) qemu_img('create', '-f', iotests.imgfmt, '-b', back1_img, back2_im= g) qemu_img('create', '-f', iotests.imgfmt, '-b', back2_img, source_i= mg) =20 self.vm =3D iotests.VM() - self.vm.add_drive(None, '', 'none') - self.vm.launch() - # Add the BDS via blockdev-add so it stays around after the mirror= block # job has been completed - result =3D self.vm.qmp('blockdev-add', - node_name=3D'source', - driver=3Diotests.imgfmt, - file=3D{'driver': 'file', - 'filename': source_img}) - self.assert_qmp(result, 'return', {}) - - result =3D self.vm.qmp('x-blockdev-insert-medium', - device=3D'drive0', node_name=3D'source') - self.assert_qmp(result, 'return', {}) + blockdev =3D {'node-name': 'source', + 'driver': iotests.imgfmt, + 'file': {'driver': 'file', + 'filename': source_img}} + self.vm.add_blockdev(self.qmp_to_opts(blockdev)) + self.vm.add_device('floppy,id=3Dqdev0,drive=3Dsource') + self.vm.launch() =20 self.assertIntactSourceBackingChain() =20 if self.existing: if self.target_backing: qemu_img('create', '-f', iotests.imgfmt, - '-b', self.target_backing, target_img, '1M') + '-b', self.target_backing, target_img, '1440K') else: - qemu_img('create', '-f', iotests.imgfmt, target_img, '1M') + qemu_img('create', '-f', iotests.imgfmt, target_img, '1440= K') =20 if self.cmd =3D=3D 'blockdev-mirror': options =3D { 'node-name': 'target', @@ -104,11 +98,11 @@ class BaseClass(iotests.QMPTestCase): except OSError: pass =20 - def findBlockNode(self, node_name, id=3DNone): - if id: + def findBlockNode(self, node_name, qdev=3DNone): + if qdev: result =3D self.vm.qmp('query-block') for device in result['return']: - if device['device'] =3D=3D id: + if device['qdev'] =3D=3D qdev: if node_name: self.assert_qmp(device, 'inserted/node-name', node= _name) return device['inserted'] @@ -118,7 +112,7 @@ class BaseClass(iotests.QMPTestCase): if node['node-name'] =3D=3D node_name: return node =20 - self.fail('Cannot find node %s/%s' % (id, node_name)) + self.fail('Cannot find node %s/%s' % (qdev, node_name)) =20 def assertIntactSourceBackingChain(self): node =3D self.findBlockNode('source') @@ -155,22 +149,23 @@ class BaseClass(iotests.QMPTestCase): class MirrorBaseClass(BaseClass): def runMirror(self, sync): if self.cmd =3D=3D 'blockdev-mirror': - result =3D self.vm.qmp(self.cmd, device=3D'drive0', sync=3Dsyn= c, - target=3D'target') + result =3D self.vm.qmp(self.cmd, job_id=3D'mirror-job', device= =3D'source', + sync=3Dsync, target=3D'target') else: if self.existing: mode =3D 'existing' else: mode =3D 'absolute-paths' - result =3D self.vm.qmp(self.cmd, device=3D'drive0', sync=3Dsyn= c, - target=3Dtarget_img, format=3Diotests.img= fmt, - mode=3Dmode, node_name=3D'target') + result =3D self.vm.qmp(self.cmd, job_id=3D'mirror-job', device= =3D'source', + sync=3Dsync, target=3Dtarget_img, + format=3Diotests.imgfmt, mode=3Dmode, + node_name=3D'target') =20 self.assert_qmp(result, 'return', {}) =20 self.vm.event_wait('BLOCK_JOB_READY') =20 - result =3D self.vm.qmp('block-job-complete', device=3D'drive0') + result =3D self.vm.qmp('block-job-complete', device=3D'mirror-job') self.assert_qmp(result, 'return', {}) =20 self.vm.event_wait('BLOCK_JOB_COMPLETED') @@ -178,21 +173,21 @@ class MirrorBaseClass(BaseClass): def testFull(self): self.runMirror('full') =20 - node =3D self.findBlockNode('target', 'drive0') + node =3D self.findBlockNode('target', 'qdev0') self.assertCorrectBackingImage(node, None) self.assertIntactSourceBackingChain() =20 def testTop(self): self.runMirror('top') =20 - node =3D self.findBlockNode('target', 'drive0') + node =3D self.findBlockNode('target', 'qdev0') self.assertCorrectBackingImage(node, back2_img) self.assertIntactSourceBackingChain() =20 def testNone(self): self.runMirror('none') =20 - node =3D self.findBlockNode('target', 'drive0') + node =3D self.findBlockNode('target', 'qdev0') self.assertCorrectBackingImage(node, source_img) self.assertIntactSourceBackingChain() =20 @@ -233,17 +228,18 @@ class TestCommit(BaseClass): existing =3D False =20 def testCommit(self): - result =3D self.vm.qmp('block-commit', device=3D'drive0', base=3Db= ack1_img) + result =3D self.vm.qmp('block-commit', job_id=3D'commit-job', + device=3D'source', base=3Dback1_img) self.assert_qmp(result, 'return', {}) =20 self.vm.event_wait('BLOCK_JOB_READY') =20 - result =3D self.vm.qmp('block-job-complete', device=3D'drive0') + result =3D self.vm.qmp('block-job-complete', device=3D'commit-job') self.assert_qmp(result, 'return', {}) =20 self.vm.event_wait('BLOCK_JOB_COMPLETED') =20 - node =3D self.findBlockNode(None, 'drive0') + node =3D self.findBlockNode(None, 'qdev0') self.assert_qmp(node, 'image' + '/backing-image' * 0 + '/filename', back1_img) self.assert_qmp(node, 'image' + '/backing-image' * 1 + '/filename', --=20 2.13.6 From nobody Wed May 1 02:23:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1510353910239568.9482838647862; Fri, 10 Nov 2017 14:45:10 -0800 (PST) Received: from localhost ([::1]:43753 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eDI2p-0007lh-Cn for importer@patchew.org; Fri, 10 Nov 2017 17:45:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52771) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eDI1B-0006hb-T0 for qemu-devel@nongnu.org; Fri, 10 Nov 2017 17:43:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eDI1B-0000oO-11 for qemu-devel@nongnu.org; Fri, 10 Nov 2017 17:43:21 -0500 Received: from mx1.redhat.com ([209.132.183.28]:52868) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eDI16-0000mr-Fd; Fri, 10 Nov 2017 17:43:16 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 93DF7C057EC9; Fri, 10 Nov 2017 22:43:15 +0000 (UTC) Received: from localhost (ovpn-204-126.brq.redhat.com [10.40.204.126]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 74C4117143; Fri, 10 Nov 2017 22:43:12 +0000 (UTC) From: Max Reitz To: qemu-block@nongnu.org Date: Fri, 10 Nov 2017 23:43:00 +0100 Message-Id: <20171110224302.14424-3-mreitz@redhat.com> In-Reply-To: <20171110224302.14424-1-mreitz@redhat.com> References: <20171110224302.14424-1-mreitz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Fri, 10 Nov 2017 22:43:15 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH for-2.12 2/4] tests/ahci: Switch tray and medium commands to @id X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Markus Armbruster , qemu-devel@nongnu.org, Max Reitz , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Currently, the tray and medium commands in the AHCI test use the deprecated @device parameter. This patch switches all invocations over to use @id. Signed-off-by: Max Reitz Reviewed-by: Alberto Garcia --- tests/ahci-test.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/ahci-test.c b/tests/ahci-test.c index cb84edc8fb..3635ea6d41 100644 --- a/tests/ahci-test.c +++ b/tests/ahci-test.c @@ -1578,9 +1578,9 @@ static void test_atapi_tray(void) QDict *rsp; =20 fd =3D prepare_iso(iso_size, &tx, &iso); - ahci =3D ahci_boot_and_enable("-drive if=3Dnone,id=3Ddrive0,file=3D%s,= format=3Draw " + ahci =3D ahci_boot_and_enable("-blockdev node-name=3Ddrive0,driver=3Df= ile,filename=3D%s " "-M q35 " - "-device ide-cd,drive=3Ddrive0 ", iso); + "-device ide-cd,id=3Dcd0,drive=3Ddrive0 ",= iso); port =3D ahci_port_select(ahci); =20 ahci_atapi_eject(ahci, port); @@ -1591,13 +1591,13 @@ static void test_atapi_tray(void) =20 /* Remove media */ qmp_async("{'execute': 'blockdev-open-tray', " - "'arguments': {'device': 'drive0'}}"); + "'arguments': {'id': 'cd0'}}"); atapi_wait_tray(true); rsp =3D qmp_receive(); QDECREF(rsp); =20 qmp_discard_response("{'execute': 'x-blockdev-remove-medium', " - "'arguments': {'device': 'drive0'}}"); + "'arguments': {'id': 'cd0'}}"); =20 /* Test the tray without a medium */ ahci_atapi_load(ahci, port); @@ -1613,12 +1613,12 @@ static void test_atapi_tray(void) "'file': { 'driver': 'file', " "'filename': %s }}}", is= o); qmp_discard_response("{'execute': 'x-blockdev-insert-medium'," - "'arguments': { 'device': 'drive0', " + "'arguments': { 'id': 'cd0', " "'node-name': 'node0' }}"); =20 /* Again, the event shows up first */ qmp_async("{'execute': 'blockdev-close-tray', " - "'arguments': {'device': 'drive0'}}"); + "'arguments': {'id': 'cd0'}}"); atapi_wait_tray(false); rsp =3D qmp_receive(); QDECREF(rsp); --=20 2.13.6 From nobody Wed May 1 02:23:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1510353912535343.0068325632526; Fri, 10 Nov 2017 14:45:12 -0800 (PST) Received: from localhost ([::1]:43754 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eDI2v-0007pb-Po for importer@patchew.org; Fri, 10 Nov 2017 17:45:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52814) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eDI1F-0006mt-Vx for qemu-devel@nongnu.org; Fri, 10 Nov 2017 17:43:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eDI1E-0000pV-Ti for qemu-devel@nongnu.org; Fri, 10 Nov 2017 17:43:26 -0500 Received: from mx1.redhat.com ([209.132.183.28]:34172) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eDI18-0000nb-SX; Fri, 10 Nov 2017 17:43:19 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0D7A97E423; Fri, 10 Nov 2017 22:43:18 +0000 (UTC) Received: from localhost (ovpn-204-126.brq.redhat.com [10.40.204.126]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 94AC717122; Fri, 10 Nov 2017 22:43:17 +0000 (UTC) From: Max Reitz To: qemu-block@nongnu.org Date: Fri, 10 Nov 2017 23:43:01 +0100 Message-Id: <20171110224302.14424-4-mreitz@redhat.com> In-Reply-To: <20171110224302.14424-1-mreitz@redhat.com> References: <20171110224302.14424-1-mreitz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Fri, 10 Nov 2017 22:43:18 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH for-2.12 3/4] blockdev: Drop BD-{remove, insert}-medium's @device X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Markus Armbruster , qemu-devel@nongnu.org, Max Reitz , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This is an incompatible change, which is fine as the commands are experimental. Signed-off-by: Max Reitz Reviewed-by: Alberto Garcia --- qapi/block-core.json | 10 ++-------- blockdev.c | 30 +++++++++++++++++++++++------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/qapi/block-core.json b/qapi/block-core.json index 76bf50f813..cf3f941999 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -3405,8 +3405,6 @@ # # If the tray is open and there is no medium inserted, this will be a no-o= p. # -# @device: Block device name (deprecated, use @id instead) -# # @id: The name or QOM path of the guest device (since: 2.8) # # Note: This command is still a work in progress and is considered experim= ental. @@ -3441,8 +3439,7 @@ # ## { 'command': 'x-blockdev-remove-medium', - 'data': { '*device': 'str', - '*id': 'str' } } + 'data': { 'id': 'str' } } =20 ## # @x-blockdev-insert-medium: @@ -3451,8 +3448,6 @@ # device's tray must currently be open (unless there is no attached guest # device) and there must be no medium inserted already. # -# @device: Block device name (deprecated, use @id instead) -# # @id: The name or QOM path of the guest device (since: 2.8) # # @node-name: name of a node in the block driver state graph @@ -3480,8 +3475,7 @@ # ## { 'command': 'x-blockdev-insert-medium', - 'data': { '*device': 'str', - '*id': 'str', + 'data': { 'id': 'str', 'node-name': 'str'} } =20 =20 diff --git a/blockdev.c b/blockdev.c index 56a6b24a0b..a74224e8f8 100644 --- a/blockdev.c +++ b/blockdev.c @@ -59,6 +59,11 @@ static QTAILQ_HEAD(, BlockDriverState) monitor_bdrv_stat= es =3D =20 static int do_open_tray(const char *blk_name, const char *qdev_id, bool force, Error **errp); +static void blockdev_remove_medium(bool has_device, const char *device, + bool has_id, const char *id, Error **er= rp); +static void blockdev_insert_medium(bool has_device, const char *device, + bool has_id, const char *id, + const char *node_name, Error **errp); =20 static const char *const if_name[IF_COUNT] =3D { [IF_NONE] =3D "none", @@ -2256,7 +2261,7 @@ void qmp_eject(bool has_device, const char *device, } error_free(local_err); =20 - qmp_x_blockdev_remove_medium(has_device, device, has_id, id, errp); + blockdev_remove_medium(has_device, device, has_id, id, errp); } =20 void qmp_block_passwd(bool has_device, const char *device, @@ -2379,8 +2384,8 @@ void qmp_blockdev_close_tray(bool has_device, const c= har *device, } } =20 -void qmp_x_blockdev_remove_medium(bool has_device, const char *device, - bool has_id, const char *id, Error **err= p) +static void blockdev_remove_medium(bool has_device, const char *device, + bool has_id, const char *id, Error **er= rp) { BlockBackend *blk; BlockDriverState *bs; @@ -2436,6 +2441,11 @@ out: aio_context_release(aio_context); } =20 +void qmp_x_blockdev_remove_medium(const char *id, Error **errp) +{ + blockdev_remove_medium(false, NULL, true, id, errp); +} + static void qmp_blockdev_insert_anon_medium(BlockBackend *blk, BlockDriverState *bs, Error **= errp) { @@ -2481,9 +2491,9 @@ static void qmp_blockdev_insert_anon_medium(BlockBack= end *blk, } } =20 -void qmp_x_blockdev_insert_medium(bool has_device, const char *device, - bool has_id, const char *id, - const char *node_name, Error **errp) +static void blockdev_insert_medium(bool has_device, const char *device, + bool has_id, const char *id, + const char *node_name, Error **errp) { BlockBackend *blk; BlockDriverState *bs; @@ -2509,6 +2519,12 @@ void qmp_x_blockdev_insert_medium(bool has_device, c= onst char *device, qmp_blockdev_insert_anon_medium(blk, bs, errp); } =20 +void qmp_x_blockdev_insert_medium(const char *id, const char *node_name, + Error **errp) +{ + blockdev_insert_medium(false, NULL, true, id, node_name, errp); +} + void qmp_blockdev_change_medium(bool has_device, const char *device, bool has_id, const char *id, const char *filename, @@ -2583,7 +2599,7 @@ void qmp_blockdev_change_medium(bool has_device, cons= t char *device, error_free(err); err =3D NULL; =20 - qmp_x_blockdev_remove_medium(has_device, device, has_id, id, &err); + blockdev_remove_medium(has_device, device, has_id, id, &err); if (err) { error_propagate(errp, err); goto fail; --=20 2.13.6 From nobody Wed May 1 02:23:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1510354083841699.8112782886133; Fri, 10 Nov 2017 14:48:03 -0800 (PST) Received: from localhost ([::1]:43765 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eDI5V-0001A1-U6 for importer@patchew.org; Fri, 10 Nov 2017 17:47:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52836) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eDI1J-0006qN-JR for qemu-devel@nongnu.org; Fri, 10 Nov 2017 17:43:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eDI1H-0000qH-Px for qemu-devel@nongnu.org; Fri, 10 Nov 2017 17:43:29 -0500 Received: from mx1.redhat.com ([209.132.183.28]:44778) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eDI1D-0000p0-Qt; Fri, 10 Nov 2017 17:43:24 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D3CDB80469; Fri, 10 Nov 2017 22:43:22 +0000 (UTC) Received: from localhost (ovpn-204-126.brq.redhat.com [10.40.204.126]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4A4A460175; Fri, 10 Nov 2017 22:43:20 +0000 (UTC) From: Max Reitz To: qemu-block@nongnu.org Date: Fri, 10 Nov 2017 23:43:02 +0100 Message-Id: <20171110224302.14424-5-mreitz@redhat.com> In-Reply-To: <20171110224302.14424-1-mreitz@redhat.com> References: <20171110224302.14424-1-mreitz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Fri, 10 Nov 2017 22:43:22 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH for-2.12 4/4] blockdev: Mark BD-{remove, insert}-medium stable X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Markus Armbruster , qemu-devel@nongnu.org, Max Reitz , John Snow Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Now that iotest 093 test proves that the throttling configuration survives a blockdev-remove-medium/blockdev-insert-medium pair, the original reason for declaring these commands experimental is gone (see commit 6e0abc251dd4f8eba1f53656dfede12e5840e83b). Signed-off-by: Max Reitz Reviewed-by: Alberto Garcia --- qapi/block-core.json | 32 +++++++++++++------------------- blockdev.c | 6 +++--- tests/ahci-test.c | 4 ++-- tests/qemu-iotests/093 | 6 +++--- tests/qemu-iotests/118 | 20 ++++++++++---------- tests/qemu-iotests/139 | 2 +- 6 files changed, 32 insertions(+), 38 deletions(-) diff --git a/qapi/block-core.json b/qapi/block-core.json index cf3f941999..8e6842e23e 100644 --- a/qapi/block-core.json +++ b/qapi/block-core.json @@ -3397,7 +3397,7 @@ '*id': 'str' } } =20 ## -# @x-blockdev-remove-medium: +# @blockdev-remove-medium: # # Removes a medium (a block driver state tree) from a block device. That b= lock # device's tray must currently be open (unless there is no attached guest @@ -3405,16 +3405,13 @@ # # If the tray is open and there is no medium inserted, this will be a no-o= p. # -# @id: The name or QOM path of the guest device (since: 2.8) -# -# Note: This command is still a work in progress and is considered experim= ental. -# Stay away from it unless you want to help with its development. +# @id: The name or QOM path of the guest device # -# Since: 2.5 +# Since: 2.12 # # Example: # -# -> { "execute": "x-blockdev-remove-medium", +# -> { "execute": "blockdev-remove-medium", # "arguments": { "id": "ide0-1-0" } } # # <- { "error": { "class": "GenericError", @@ -3432,30 +3429,27 @@ # # <- { "return": {} } # -# -> { "execute": "x-blockdev-remove-medium", +# -> { "execute": "blockdev-remove-medium", # "arguments": { "id": "ide0-1-0" } } # # <- { "return": {} } # ## -{ 'command': 'x-blockdev-remove-medium', +{ 'command': 'blockdev-remove-medium', 'data': { 'id': 'str' } } =20 ## -# @x-blockdev-insert-medium: +# @blockdev-insert-medium: # # Inserts a medium (a block driver state tree) into a block device. That b= lock # device's tray must currently be open (unless there is no attached guest # device) and there must be no medium inserted already. # -# @id: The name or QOM path of the guest device (since: 2.8) +# @id: The name or QOM path of the guest device # # @node-name: name of a node in the block driver state graph # -# Note: This command is still a work in progress and is considered experim= ental. -# Stay away from it unless you want to help with its development. -# -# Since: 2.5 +# Since: 2.12 # # Example: # @@ -3467,14 +3461,14 @@ # "filename": "fedora.iso" } } } # <- { "return": {} } # -# -> { "execute": "x-blockdev-insert-medium", +# -> { "execute": "blockdev-insert-medium", # "arguments": { "id": "ide0-1-0", # "node-name": "node0" } } # # <- { "return": {} } # ## -{ 'command': 'x-blockdev-insert-medium', +{ 'command': 'blockdev-insert-medium', 'data': { 'id': 'str', 'node-name': 'str'} } =20 @@ -3503,8 +3497,8 @@ # # Changes the medium inserted into a block device by ejecting the current = medium # and loading a new image file which is inserted as the new medium (this c= ommand -# combines blockdev-open-tray, x-blockdev-remove-medium, -# x-blockdev-insert-medium and blockdev-close-tray). +# combines blockdev-open-tray, blockdev-remove-medium, blockdev-insert-med= ium +# and blockdev-close-tray). # # @device: Block device name (deprecated, use @id instead) # diff --git a/blockdev.c b/blockdev.c index a74224e8f8..fb93283334 100644 --- a/blockdev.c +++ b/blockdev.c @@ -2441,7 +2441,7 @@ out: aio_context_release(aio_context); } =20 -void qmp_x_blockdev_remove_medium(const char *id, Error **errp) +void qmp_blockdev_remove_medium(const char *id, Error **errp) { blockdev_remove_medium(false, NULL, true, id, errp); } @@ -2519,8 +2519,8 @@ static void blockdev_insert_medium(bool has_device, c= onst char *device, qmp_blockdev_insert_anon_medium(blk, bs, errp); } =20 -void qmp_x_blockdev_insert_medium(const char *id, const char *node_name, - Error **errp) +void qmp_blockdev_insert_medium(const char *id, const char *node_name, + Error **errp) { blockdev_insert_medium(false, NULL, true, id, node_name, errp); } diff --git a/tests/ahci-test.c b/tests/ahci-test.c index 3635ea6d41..3934e62ef7 100644 --- a/tests/ahci-test.c +++ b/tests/ahci-test.c @@ -1596,7 +1596,7 @@ static void test_atapi_tray(void) rsp =3D qmp_receive(); QDECREF(rsp); =20 - qmp_discard_response("{'execute': 'x-blockdev-remove-medium', " + qmp_discard_response("{'execute': 'blockdev-remove-medium', " "'arguments': {'id': 'cd0'}}"); =20 /* Test the tray without a medium */ @@ -1612,7 +1612,7 @@ static void test_atapi_tray(void) "'driver': 'raw', " "'file': { 'driver': 'file', " "'filename': %s }}}", is= o); - qmp_discard_response("{'execute': 'x-blockdev-insert-medium'," + qmp_discard_response("{'execute': 'blockdev-insert-medium'," "'arguments': { 'id': 'cd0', " "'node-name': 'node0' }}"); =20 diff --git a/tests/qemu-iotests/093 b/tests/qemu-iotests/093 index 7862f2ba94..a354c79bff 100755 --- a/tests/qemu-iotests/093 +++ b/tests/qemu-iotests/093 @@ -348,9 +348,9 @@ class ThrottleTestRemovableMedia(iotests.QMPTestCase): # Now eject cd0 and insert cd1 result =3D self.vm.qmp("blockdev-open-tray", id =3D 'dev0') self.assert_qmp(result, 'return', {}) - result =3D self.vm.qmp("x-blockdev-remove-medium", id =3D 'dev0') + result =3D self.vm.qmp("blockdev-remove-medium", id =3D 'dev0') self.assert_qmp(result, 'return', {}) - result =3D self.vm.qmp("x-blockdev-insert-medium", id =3D 'dev0', = node_name =3D 'cd1') + result =3D self.vm.qmp("blockdev-insert-medium", id =3D 'dev0', no= de_name =3D 'cd1') self.assert_qmp(result, 'return', {}) =20 # Check that the I/O limits are still the same @@ -359,7 +359,7 @@ class ThrottleTestRemovableMedia(iotests.QMPTestCase): self.assert_qmp(result, 'return[0]/inserted/bps', 50) =20 # Eject cd1 - result =3D self.vm.qmp("x-blockdev-remove-medium", id =3D 'dev0') + result =3D self.vm.qmp("blockdev-remove-medium", id =3D 'dev0') self.assert_qmp(result, 'return', {}) =20 # Check that we can't set limits if the device has no medium diff --git a/tests/qemu-iotests/118 b/tests/qemu-iotests/118 index ca6965d23c..a0469b570e 100755 --- a/tests/qemu-iotests/118 +++ b/tests/qemu-iotests/118 @@ -233,7 +233,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): else: self.assert_qmp(result, 'return[0]/inserted/image/filename', o= ld_img) =20 - result =3D self.vm.qmp('x-blockdev-remove-medium', + result =3D self.vm.qmp('blockdev-remove-medium', id=3Dself.device_name) self.assert_qmp(result, 'return', {}) =20 @@ -242,7 +242,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): self.assert_qmp(result, 'return[0]/tray_open', True) self.assert_qmp_absent(result, 'return[0]/inserted') =20 - result =3D self.vm.qmp('x-blockdev-insert-medium', + result =3D self.vm.qmp('blockdev-insert-medium', id=3Dself.device_name, node_name=3D'new') self.assert_qmp(result, 'return', {}) =20 @@ -271,7 +271,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): if not self.has_real_tray: return =20 - result =3D self.vm.qmp('x-blockdev-remove-medium', id=3Dself.devic= e_name) + result =3D self.vm.qmp('blockdev-remove-medium', id=3Dself.device_= name) self.assert_qmp(result, 'error/class', 'GenericError') =20 def test_insert_on_closed(self): @@ -285,7 +285,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass): 'driver': 'file'}) self.assert_qmp(result, 'return', {}) =20 - result =3D self.vm.qmp('x-blockdev-insert-medium', id=3Dself.devic= e_name, + result =3D self.vm.qmp('blockdev-insert-medium', id=3Dself.device_= name, node_name=3D'new') self.assert_qmp(result, 'error/class', 'GenericError') =20 @@ -320,7 +320,7 @@ class TestInitiallyFilled(GeneralChangeTestsBaseClass): =20 self.wait_for_open() =20 - result =3D self.vm.qmp('x-blockdev-insert-medium', id=3Dself.devic= e_name, + result =3D self.vm.qmp('blockdev-insert-medium', id=3Dself.device_= name, node_name=3D'new') self.assert_qmp(result, 'error/class', 'GenericError') =20 @@ -345,7 +345,7 @@ class TestInitiallyEmpty(GeneralChangeTestsBaseClass): =20 self.wait_for_open() =20 - result =3D self.vm.qmp('x-blockdev-remove-medium', id=3Dself.devic= e_name) + result =3D self.vm.qmp('blockdev-remove-medium', id=3Dself.device_= name) # Should be a no-op self.assert_qmp(result, 'return', {}) =20 @@ -603,13 +603,13 @@ class TestChangeReadOnly(ChangeBaseClass): self.assert_qmp(result, 'return[0]/inserted/ro', False) self.assert_qmp(result, 'return[0]/inserted/image/filename', old_i= mg) =20 - result =3D self.vm.qmp('x-blockdev-remove-medium', id=3Dself.devic= e_name) + result =3D self.vm.qmp('blockdev-remove-medium', id=3Dself.device_= name) self.assert_qmp(result, 'return', {}) =20 result =3D self.vm.qmp('query-block') self.assert_qmp_absent(result, 'return[0]/inserted') =20 - result =3D self.vm.qmp('x-blockdev-insert-medium', id=3Dself.devic= e_name, + result =3D self.vm.qmp('blockdev-insert-medium', id=3Dself.device_= name, node_name=3D'new') self.assert_qmp(result, 'return', {}) =20 @@ -642,7 +642,7 @@ class TestBlockJobsAfterCycle(ChangeBaseClass): =20 # For device-less BBs, calling blockdev-open-tray or blockdev-clos= e-tray # is not necessary - result =3D self.vm.qmp('x-blockdev-remove-medium', id=3Dself.devic= e_name) + result =3D self.vm.qmp('blockdev-remove-medium', id=3Dself.device_= name) self.assert_qmp(result, 'return', {}) =20 result =3D self.vm.qmp('query-block') @@ -655,7 +655,7 @@ class TestBlockJobsAfterCycle(ChangeBaseClass): 'driver': 'file'}) self.assert_qmp(result, 'return', {}) =20 - result =3D self.vm.qmp('x-blockdev-insert-medium', id=3Dself.devic= e_name, + result =3D self.vm.qmp('blockdev-insert-medium', id=3Dself.device_= name, node_name=3D'node0') self.assert_qmp(result, 'return', {}) =20 diff --git a/tests/qemu-iotests/139 b/tests/qemu-iotests/139 index f8f02808a9..cc7fe337f3 100644 --- a/tests/qemu-iotests/139 +++ b/tests/qemu-iotests/139 @@ -133,7 +133,7 @@ class TestBlockdevDel(iotests.QMPTestCase): # Insert a BlockDriverState def insertDrive(self, device, node): self.checkBlockDriverState(node) - result =3D self.vm.qmp('x-blockdev-insert-medium', + result =3D self.vm.qmp('blockdev-insert-medium', id =3D device, node_name =3D node) self.assert_qmp(result, 'return', {}) self.checkBlockDriverState(node) --=20 2.13.6