qapi: Convert eject
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
		
							parent
							
								
									92d48558ed
								
							
						
					
					
						commit
						c245b6a37d
					
				
							
								
								
									
										20
									
								
								blockdev.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								blockdev.c
									
									
									
									
									
								
							@ -683,27 +683,17 @@ static void eject_device(BlockDriverState *bs, int force, Error **errp)
 | 
				
			|||||||
    bdrv_close(bs);
 | 
					    bdrv_close(bs);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int do_eject(Monitor *mon, const QDict *qdict, QObject **ret_data)
 | 
					void qmp_eject(const char *device, bool has_force, bool force, Error **errp)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    BlockDriverState *bs;
 | 
					    BlockDriverState *bs;
 | 
				
			||||||
    int force = qdict_get_try_bool(qdict, "force", 0);
 | 
					 | 
				
			||||||
    const char *filename = qdict_get_str(qdict, "device");
 | 
					 | 
				
			||||||
    Error *err = NULL;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bs = bdrv_find(filename);
 | 
					    bs = bdrv_find(device);
 | 
				
			||||||
    if (!bs) {
 | 
					    if (!bs) {
 | 
				
			||||||
        qerror_report(QERR_DEVICE_NOT_FOUND, filename);
 | 
					        error_set(errp, QERR_DEVICE_NOT_FOUND, device);
 | 
				
			||||||
        return -1;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    eject_device(bs, force, &err);
 | 
					    eject_device(bs, force, errp);
 | 
				
			||||||
    if (error_is_set(&err)) {
 | 
					 | 
				
			||||||
        qerror_report_err(err);
 | 
					 | 
				
			||||||
        error_free(err);
 | 
					 | 
				
			||||||
        return -1;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return 0;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void qmp_block_passwd(const char *device, const char *password, Error **errp)
 | 
					void qmp_block_passwd(const char *device, const char *password, Error **errp)
 | 
				
			||||||
 | 
				
			|||||||
@ -58,7 +58,6 @@ DriveInfo *drive_init(QemuOpts *arg, int default_to_scsi);
 | 
				
			|||||||
DriveInfo *add_init_drive(const char *opts);
 | 
					DriveInfo *add_init_drive(const char *opts);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void do_commit(Monitor *mon, const QDict *qdict);
 | 
					void do_commit(Monitor *mon, const QDict *qdict);
 | 
				
			||||||
int do_eject(Monitor *mon, const QDict *qdict, QObject **ret_data);
 | 
					 | 
				
			||||||
int do_change_block(Monitor *mon, const char *device,
 | 
					int do_change_block(Monitor *mon, const char *device,
 | 
				
			||||||
                    const char *filename, const char *fmt);
 | 
					                    const char *filename, const char *fmt);
 | 
				
			||||||
int do_drive_del(Monitor *mon, const QDict *qdict, QObject **ret_data);
 | 
					int do_drive_del(Monitor *mon, const QDict *qdict, QObject **ret_data);
 | 
				
			||||||
 | 
				
			|||||||
@ -75,8 +75,7 @@ ETEXI
 | 
				
			|||||||
        .args_type  = "force:-f,device:B",
 | 
					        .args_type  = "force:-f,device:B",
 | 
				
			||||||
        .params     = "[-f] device",
 | 
					        .params     = "[-f] device",
 | 
				
			||||||
        .help       = "eject a removable medium (use -f to force it)",
 | 
					        .help       = "eject a removable medium (use -f to force it)",
 | 
				
			||||||
        .user_print = monitor_user_noop,
 | 
					        .mhandler.cmd = hmp_eject,
 | 
				
			||||||
        .mhandler.cmd_new = do_eject,
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STEXI
 | 
					STEXI
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										10
									
								
								hmp.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								hmp.c
									
									
									
									
									
								
							@ -702,3 +702,13 @@ void hmp_expire_password(Monitor *mon, const QDict *qdict)
 | 
				
			|||||||
    qmp_expire_password(protocol, whenstr, &err);
 | 
					    qmp_expire_password(protocol, whenstr, &err);
 | 
				
			||||||
    hmp_handle_error(mon, &err);
 | 
					    hmp_handle_error(mon, &err);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void hmp_eject(Monitor *mon, const QDict *qdict)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int force = qdict_get_try_bool(qdict, "force", 0);
 | 
				
			||||||
 | 
					    const char *device = qdict_get_str(qdict, "device");
 | 
				
			||||||
 | 
					    Error *err = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    qmp_eject(device, true, force, &err);
 | 
				
			||||||
 | 
					    hmp_handle_error(mon, &err);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								hmp.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								hmp.h
									
									
									
									
									
								
							@ -51,5 +51,6 @@ void hmp_migrate_set_downtime(Monitor *mon, const QDict *qdict);
 | 
				
			|||||||
void hmp_migrate_set_speed(Monitor *mon, const QDict *qdict);
 | 
					void hmp_migrate_set_speed(Monitor *mon, const QDict *qdict);
 | 
				
			||||||
void hmp_set_password(Monitor *mon, const QDict *qdict);
 | 
					void hmp_set_password(Monitor *mon, const QDict *qdict);
 | 
				
			||||||
void hmp_expire_password(Monitor *mon, const QDict *qdict);
 | 
					void hmp_expire_password(Monitor *mon, const QDict *qdict);
 | 
				
			||||||
 | 
					void hmp_eject(Monitor *mon, const QDict *qdict);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
@ -1331,3 +1331,24 @@
 | 
				
			|||||||
#        sure you are on the same machine as the QEMU instance.
 | 
					#        sure you are on the same machine as the QEMU instance.
 | 
				
			||||||
##
 | 
					##
 | 
				
			||||||
{ 'command': 'expire_password', 'data': {'protocol': 'str', 'time': 'str'} }
 | 
					{ 'command': 'expire_password', 'data': {'protocol': 'str', 'time': 'str'} }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					##
 | 
				
			||||||
 | 
					# @eject:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Ejects a device from a removable drive.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# @device:  The name of the device
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# @force:   @optional If true, eject regardless of whether the drive is locked.
 | 
				
			||||||
 | 
					#           If not specified, the default value is false.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Returns:  Nothing on success
 | 
				
			||||||
 | 
					#           If @device is not a valid block device, DeviceNotFound
 | 
				
			||||||
 | 
					#           If @device is not removable and @force is false, DeviceNotRemovable
 | 
				
			||||||
 | 
					#           If @force is false and @device is locked, DeviceLocked
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Notes:    Ejecting a device will no media results in success
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Since: 0.14.0
 | 
				
			||||||
 | 
					##
 | 
				
			||||||
 | 
					{ 'command': 'eject', 'data': {'device': 'str', '*force': 'bool'} }
 | 
				
			||||||
 | 
				
			|||||||
@ -84,10 +84,7 @@ EQMP
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        .name       = "eject",
 | 
					        .name       = "eject",
 | 
				
			||||||
        .args_type  = "force:-f,device:B",
 | 
					        .args_type  = "force:-f,device:B",
 | 
				
			||||||
        .params     = "[-f] device",
 | 
					        .mhandler.cmd_new = qmp_marshal_input_eject,
 | 
				
			||||||
        .help       = "eject a removable medium (use -f to force it)",
 | 
					 | 
				
			||||||
        .user_print = monitor_user_noop,
 | 
					 | 
				
			||||||
        .mhandler.cmd_new = do_eject,
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SQMP
 | 
					SQMP
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user