Revert "hw/block/fdc: Implement tray status"
This reverts the changes that commit
2e1280e8ff applied to hw/block/fdc.c;
also, an additional case of drv->media_inserted use has crept in since,
which is replaced by a call to blk_is_inserted().
That commit changed tests/fdc-test.c, too, because after it, one less
TRAY_MOVED event would be emitted when executing 'change' on an empty
drive. However, now, no TRAY_MOVED events will be emitted at all, and
the tray_open status returned by query-block will always be false,
necessitating (different) changes to tests/fdc-test.c and iotest 118,
which is why this patch is not a pure revert of said commit.
Signed-off-by: Max Reitz <mreitz@redhat.com>
Message-id: 1454096953-31773-4-git-send-email-mreitz@redhat.com
Reviewed-by: Eric Blake <eblake@redhat.com>
			
			
This commit is contained in:
		
							parent
							
								
									12c7ec87a7
								
							
						
					
					
						commit
						abb3e55b5b
					
				| 
						 | 
				
			
			@ -173,7 +173,6 @@ typedef struct FDrive {
 | 
			
		|||
    uint8_t media_changed;    /* Is media changed       */
 | 
			
		||||
    uint8_t media_rate;       /* Data rate of medium    */
 | 
			
		||||
 | 
			
		||||
    bool media_inserted;      /* Is there a medium in the tray */
 | 
			
		||||
    bool media_validated;     /* Have we validated the media? */
 | 
			
		||||
} FDrive;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -249,7 +248,7 @@ static int fd_seek(FDrive *drv, uint8_t head, uint8_t track, uint8_t sect,
 | 
			
		|||
#endif
 | 
			
		||||
        drv->head = head;
 | 
			
		||||
        if (drv->track != track) {
 | 
			
		||||
            if (drv->media_inserted) {
 | 
			
		||||
            if (drv->blk != NULL && blk_is_inserted(drv->blk)) {
 | 
			
		||||
                drv->media_changed = 0;
 | 
			
		||||
            }
 | 
			
		||||
            ret = 1;
 | 
			
		||||
| 
						 | 
				
			
			@ -258,7 +257,7 @@ static int fd_seek(FDrive *drv, uint8_t head, uint8_t track, uint8_t sect,
 | 
			
		|||
        drv->sect = sect;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!drv->media_inserted) {
 | 
			
		||||
    if (drv->blk == NULL || !blk_is_inserted(drv->blk)) {
 | 
			
		||||
        ret = 2;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -288,7 +287,9 @@ static int pick_geometry(FDrive *drv)
 | 
			
		|||
    bool magic = drv->drive == FLOPPY_DRIVE_TYPE_AUTO;
 | 
			
		||||
 | 
			
		||||
    /* We can only pick a geometry if we have a diskette. */
 | 
			
		||||
    if (!drv->media_inserted || drv->drive == FLOPPY_DRIVE_TYPE_NONE) {
 | 
			
		||||
    if (!drv->blk || !blk_is_inserted(drv->blk) ||
 | 
			
		||||
        drv->drive == FLOPPY_DRIVE_TYPE_NONE)
 | 
			
		||||
    {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -390,7 +391,7 @@ static void fd_revalidate(FDrive *drv)
 | 
			
		|||
    FLOPPY_DPRINTF("revalidate\n");
 | 
			
		||||
    if (drv->blk != NULL) {
 | 
			
		||||
        drv->ro = blk_is_read_only(drv->blk);
 | 
			
		||||
        if (!drv->media_inserted) {
 | 
			
		||||
        if (!blk_is_inserted(drv->blk)) {
 | 
			
		||||
            FLOPPY_DPRINTF("No disk in drive\n");
 | 
			
		||||
            drv->disk = FLOPPY_DRIVE_TYPE_NONE;
 | 
			
		||||
        } else if (!drv->media_validated) {
 | 
			
		||||
| 
						 | 
				
			
			@ -793,7 +794,7 @@ static bool fdrive_media_changed_needed(void *opaque)
 | 
			
		|||
{
 | 
			
		||||
    FDrive *drive = opaque;
 | 
			
		||||
 | 
			
		||||
    return (drive->media_inserted && drive->media_changed != 1);
 | 
			
		||||
    return (drive->blk != NULL && drive->media_changed != 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const VMStateDescription vmstate_fdrive_media_changed = {
 | 
			
		||||
| 
						 | 
				
			
			@ -2285,22 +2286,13 @@ static void fdctrl_change_cb(void *opaque, bool load)
 | 
			
		|||
{
 | 
			
		||||
    FDrive *drive = opaque;
 | 
			
		||||
 | 
			
		||||
    drive->media_inserted = load && drive->blk && blk_is_inserted(drive->blk);
 | 
			
		||||
 | 
			
		||||
    drive->media_changed = 1;
 | 
			
		||||
    drive->media_validated = false;
 | 
			
		||||
    fd_revalidate(drive);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static bool fdctrl_is_tray_open(void *opaque)
 | 
			
		||||
{
 | 
			
		||||
    FDrive *drive = opaque;
 | 
			
		||||
    return !drive->media_inserted;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const BlockDevOps fdctrl_block_ops = {
 | 
			
		||||
    .change_media_cb = fdctrl_change_cb,
 | 
			
		||||
    .is_tray_open = fdctrl_is_tray_open,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Init functions */
 | 
			
		||||
| 
						 | 
				
			
			@ -2327,7 +2319,6 @@ static void fdctrl_connect_drives(FDCtrl *fdctrl, Error **errp)
 | 
			
		|||
        fd_init(drive);
 | 
			
		||||
        if (drive->blk) {
 | 
			
		||||
            blk_set_dev_ops(drive->blk, &fdctrl_block_ops, drive);
 | 
			
		||||
            drive->media_inserted = blk_is_inserted(drive->blk);
 | 
			
		||||
            pick_drive_type(drive);
 | 
			
		||||
        }
 | 
			
		||||
        fd_revalidate(drive);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -304,7 +304,6 @@ static void test_media_insert(void)
 | 
			
		|||
    qmp_discard_response("{'execute':'change', 'arguments':{"
 | 
			
		||||
                         " 'device':'floppy0', 'target': %s, 'arg': 'raw' }}",
 | 
			
		||||
                         test_image);
 | 
			
		||||
    qmp_discard_response(""); /* ignore event (open -> close) */
 | 
			
		||||
 | 
			
		||||
    dir = inb(FLOPPY_BASE + reg_dir);
 | 
			
		||||
    assert_bit_set(dir, DSKCHG);
 | 
			
		||||
| 
						 | 
				
			
			@ -335,7 +334,6 @@ static void test_media_change(void)
 | 
			
		|||
     * reset the bit. */
 | 
			
		||||
    qmp_discard_response("{'execute':'eject', 'arguments':{"
 | 
			
		||||
                         " 'device':'floppy0' }}");
 | 
			
		||||
    qmp_discard_response(""); /* ignore event */
 | 
			
		||||
 | 
			
		||||
    dir = inb(FLOPPY_BASE + reg_dir);
 | 
			
		||||
    assert_bit_set(dir, DSKCHG);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,6 +42,9 @@ class ChangeBaseClass(iotests.QMPTestCase):
 | 
			
		|||
                    self.has_opened = True
 | 
			
		||||
 | 
			
		||||
    def wait_for_open(self):
 | 
			
		||||
        if not self.has_real_tray:
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        timeout = time.clock() + 3
 | 
			
		||||
        while not self.has_opened and time.clock() < timeout:
 | 
			
		||||
            self.process_events()
 | 
			
		||||
| 
						 | 
				
			
			@ -49,6 +52,9 @@ class ChangeBaseClass(iotests.QMPTestCase):
 | 
			
		|||
            self.fail('Timeout while waiting for the tray to open')
 | 
			
		||||
 | 
			
		||||
    def wait_for_close(self):
 | 
			
		||||
        if not self.has_real_tray:
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        timeout = time.clock() + 3
 | 
			
		||||
        while not self.has_closed and time.clock() < timeout:
 | 
			
		||||
            self.process_events()
 | 
			
		||||
| 
						 | 
				
			
			@ -65,7 +71,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
    def test_blockdev_change_medium(self):
 | 
			
		||||
| 
						 | 
				
			
			@ -78,7 +85,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
    def test_eject(self):
 | 
			
		||||
| 
						 | 
				
			
			@ -88,7 +96,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.wait_for_open()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        self.assert_qmp_absent(result, 'return[0]/inserted')
 | 
			
		||||
 | 
			
		||||
    def test_tray_eject_change(self):
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +107,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.wait_for_open()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        self.assert_qmp_absent(result, 'return[0]/inserted')
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('blockdev-change-medium', device='drive0',
 | 
			
		||||
| 
						 | 
				
			
			@ -109,7 +119,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
    def test_tray_open_close(self):
 | 
			
		||||
| 
						 | 
				
			
			@ -119,7 +130,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.wait_for_open()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        if self.was_empty == True:
 | 
			
		||||
            self.assert_qmp_absent(result, 'return[0]/inserted')
 | 
			
		||||
        else:
 | 
			
		||||
| 
						 | 
				
			
			@ -132,10 +144,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
            self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        if self.has_real_tray or not self.was_empty:
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        else:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        if self.was_empty == True:
 | 
			
		||||
            self.assert_qmp_absent(result, 'return[0]/inserted')
 | 
			
		||||
        else:
 | 
			
		||||
| 
						 | 
				
			
			@ -148,20 +158,18 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.wait_for_open()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        self.assert_qmp_absent(result, 'return[0]/inserted')
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('blockdev-close-tray', device='drive0')
 | 
			
		||||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.wait_for_close()
 | 
			
		||||
        self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        else:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        self.assert_qmp_absent(result, 'return[0]/inserted')
 | 
			
		||||
 | 
			
		||||
    def test_tray_open_change(self):
 | 
			
		||||
| 
						 | 
				
			
			@ -171,7 +179,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.wait_for_open()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        if self.was_empty == True:
 | 
			
		||||
            self.assert_qmp_absent(result, 'return[0]/inserted')
 | 
			
		||||
        else:
 | 
			
		||||
| 
						 | 
				
			
			@ -185,7 +194,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
    def test_cycle(self):
 | 
			
		||||
| 
						 | 
				
			
			@ -202,7 +212,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.wait_for_open()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        if self.was_empty == True:
 | 
			
		||||
            self.assert_qmp_absent(result, 'return[0]/inserted')
 | 
			
		||||
        else:
 | 
			
		||||
| 
						 | 
				
			
			@ -212,7 +223,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        self.assert_qmp_absent(result, 'return[0]/inserted')
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('x-blockdev-insert-medium', device='drive0',
 | 
			
		||||
| 
						 | 
				
			
			@ -220,7 +232,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('blockdev-close-tray', device='drive0')
 | 
			
		||||
| 
						 | 
				
			
			@ -229,7 +242,8 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        if self.has_real_tray:
 | 
			
		||||
            self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
    def test_close_on_closed(self):
 | 
			
		||||
| 
						 | 
				
			
			@ -239,16 +253,14 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
 | 
			
		|||
        self.assertEquals(self.vm.get_qmp_events(wait=False), [])
 | 
			
		||||
 | 
			
		||||
    def test_remove_on_closed(self):
 | 
			
		||||
        if self.has_opened:
 | 
			
		||||
            # Empty floppy drive
 | 
			
		||||
        if not self.has_real_tray:
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('x-blockdev-remove-medium', device='drive0')
 | 
			
		||||
        self.assert_qmp(result, 'error/class', 'GenericError')
 | 
			
		||||
 | 
			
		||||
    def test_insert_on_closed(self):
 | 
			
		||||
        if self.has_opened:
 | 
			
		||||
            # Empty floppy drive
 | 
			
		||||
        if not self.has_real_tray:
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('blockdev-add',
 | 
			
		||||
| 
						 | 
				
			
			@ -366,7 +378,6 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
        self.vm.launch()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -376,11 +387,7 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
                                                       read_only_mode='retain')
 | 
			
		||||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        self.wait_for_open()
 | 
			
		||||
        self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -390,7 +397,6 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
        self.vm.launch()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -400,11 +406,7 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
                                                       read_only_mode='retain')
 | 
			
		||||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        self.wait_for_open()
 | 
			
		||||
        self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -414,7 +416,6 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
        self.vm.launch()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -427,7 +428,6 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
        self.assertEquals(self.vm.get_qmp_events(wait=False), [])
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -437,7 +437,6 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
        self.vm.launch()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -448,11 +447,7 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
                             read_only_mode='read-write')
 | 
			
		||||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        self.wait_for_open()
 | 
			
		||||
        self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -462,7 +457,6 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
        self.vm.launch()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -473,11 +467,7 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
                             read_only_mode='read-only')
 | 
			
		||||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        self.wait_for_open()
 | 
			
		||||
        self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -486,7 +476,6 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
        self.vm.launch()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -497,11 +486,7 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
                             read_only_mode='read-only')
 | 
			
		||||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        self.wait_for_open()
 | 
			
		||||
        self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -511,7 +496,6 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
        self.vm.launch()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -522,10 +506,7 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
                             read_only_mode='read-write')
 | 
			
		||||
        self.assert_qmp(result, 'error/class', 'GenericError')
 | 
			
		||||
 | 
			
		||||
        self.assertEquals(self.vm.get_qmp_events(wait=False), [])
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -535,7 +516,6 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
        self.vm.launch()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -545,11 +525,7 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
                                                       read_only_mode='retain')
 | 
			
		||||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        self.wait_for_open()
 | 
			
		||||
        self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -559,7 +535,6 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
        self.vm.launch()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -569,10 +544,7 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
                                                       read_only_mode='retain')
 | 
			
		||||
        self.assert_qmp(result, 'error/class', 'GenericError')
 | 
			
		||||
 | 
			
		||||
        self.assertEquals(self.vm.get_qmp_events(wait=False), [])
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -582,7 +554,6 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
        self.vm.launch()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -594,13 +565,7 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
                                               'driver': 'file'}})
 | 
			
		||||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('blockdev-open-tray', device='drive0', force=True)
 | 
			
		||||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        self.wait_for_open()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -608,7 +573,6 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        self.assert_qmp_absent(result, 'return[0]/inserted')
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('x-blockdev-insert-medium', device='drive0',
 | 
			
		||||
| 
						 | 
				
			
			@ -616,17 +580,10 @@ class TestChangeReadOnly(ChangeBaseClass):
 | 
			
		|||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('blockdev-close-tray', device='drive0')
 | 
			
		||||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        self.wait_for_close()
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/ro', True)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -648,7 +605,6 @@ class TestBlockJobsAfterCycle(ChangeBaseClass):
 | 
			
		|||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/format', 'null-co')
 | 
			
		||||
 | 
			
		||||
        # For device-less BBs, calling blockdev-open-tray or blockdev-close-tray
 | 
			
		||||
| 
						 | 
				
			
			@ -671,7 +627,6 @@ class TestBlockJobsAfterCycle(ChangeBaseClass):
 | 
			
		|||
        self.assert_qmp(result, 'return', {})
 | 
			
		||||
 | 
			
		||||
        result = self.vm.qmp('query-block')
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/tray_open', False)
 | 
			
		||||
        self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 | 
			
		||||
 | 
			
		||||
    def tearDown(self):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue