monitor/hmp: move hmp_drive_mirror and hmp_drive_backup to block-hmp-cmds.c
Moved code was added after 2012-01-13, thus under GPLv2+ Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Message-Id: <20200308092440.23564-6-mlevitsk@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Fixed commit message
This commit is contained in:
		
							parent
							
								
									a1edae276a
								
							
						
					
					
						commit
						0932e3f23d
					
				| @ -37,10 +37,12 @@ | ||||
| #include "qapi/qapi-commands-block.h" | ||||
| #include "qapi/qmp/qdict.h" | ||||
| #include "qapi/error.h" | ||||
| #include "qapi/qmp/qerror.h" | ||||
| #include "qemu/config-file.h" | ||||
| #include "qemu/option.h" | ||||
| #include "sysemu/sysemu.h" | ||||
| #include "monitor/monitor.h" | ||||
| #include "monitor/hmp.h" | ||||
| #include "block/block_int.h" | ||||
| #include "block/block-hmp-cmds.h" | ||||
| 
 | ||||
| @ -187,3 +189,61 @@ void hmp_commit(Monitor *mon, const QDict *qdict) | ||||
|         error_report("'commit' error for '%s': %s", device, strerror(-ret)); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void hmp_drive_mirror(Monitor *mon, const QDict *qdict) | ||||
| { | ||||
|     const char *filename = qdict_get_str(qdict, "target"); | ||||
|     const char *format = qdict_get_try_str(qdict, "format"); | ||||
|     bool reuse = qdict_get_try_bool(qdict, "reuse", false); | ||||
|     bool full = qdict_get_try_bool(qdict, "full", false); | ||||
|     Error *err = NULL; | ||||
|     DriveMirror mirror = { | ||||
|         .device = (char *)qdict_get_str(qdict, "device"), | ||||
|         .target = (char *)filename, | ||||
|         .has_format = !!format, | ||||
|         .format = (char *)format, | ||||
|         .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, | ||||
|         .has_mode = true, | ||||
|         .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, | ||||
|         .unmap = true, | ||||
|     }; | ||||
| 
 | ||||
|     if (!filename) { | ||||
|         error_setg(&err, QERR_MISSING_PARAMETER, "target"); | ||||
|         hmp_handle_error(mon, err); | ||||
|         return; | ||||
|     } | ||||
|     qmp_drive_mirror(&mirror, &err); | ||||
|     hmp_handle_error(mon, err); | ||||
| } | ||||
| 
 | ||||
| void hmp_drive_backup(Monitor *mon, const QDict *qdict) | ||||
| { | ||||
|     const char *device = qdict_get_str(qdict, "device"); | ||||
|     const char *filename = qdict_get_str(qdict, "target"); | ||||
|     const char *format = qdict_get_try_str(qdict, "format"); | ||||
|     bool reuse = qdict_get_try_bool(qdict, "reuse", false); | ||||
|     bool full = qdict_get_try_bool(qdict, "full", false); | ||||
|     bool compress = qdict_get_try_bool(qdict, "compress", false); | ||||
|     Error *err = NULL; | ||||
|     DriveBackup backup = { | ||||
|         .device = (char *)device, | ||||
|         .target = (char *)filename, | ||||
|         .has_format = !!format, | ||||
|         .format = (char *)format, | ||||
|         .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, | ||||
|         .has_mode = true, | ||||
|         .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, | ||||
|         .has_compress = !!compress, | ||||
|         .compress = compress, | ||||
|     }; | ||||
| 
 | ||||
|     if (!filename) { | ||||
|         error_setg(&err, QERR_MISSING_PARAMETER, "target"); | ||||
|         hmp_handle_error(mon, err); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     qmp_drive_backup(&backup, &err); | ||||
|     hmp_handle_error(mon, err); | ||||
| } | ||||
|  | ||||
| @ -3,10 +3,13 @@ | ||||
|  * | ||||
|  * Copyright (c) 2003-2008 Fabrice Bellard | ||||
|  * Copyright (c) 2020 Red Hat, Inc. | ||||
|  * Copyright IBM, Corp. 2011 | ||||
|  * | ||||
|  * This work is licensed under the terms of the GNU GPL, version 2. | ||||
|  * or (at your option) any later version. | ||||
|  * See the COPYING file in the top-level directory. | ||||
|  * Authors: | ||||
|  *  Anthony Liguori   <aliguori@us.ibm.com> | ||||
|  * | ||||
|  * This work is licensed under the terms of the GNU GPL, version 2.  See | ||||
|  * the COPYING file in the top-level directory. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef BLOCK_HMP_COMMANDS_H | ||||
| @ -17,4 +20,7 @@ void hmp_drive_add(Monitor *mon, const QDict *qdict); | ||||
| void hmp_commit(Monitor *mon, const QDict *qdict); | ||||
| void hmp_drive_del(Monitor *mon, const QDict *qdict); | ||||
| 
 | ||||
| void hmp_drive_mirror(Monitor *mon, const QDict *qdict); | ||||
| void hmp_drive_backup(Monitor *mon, const QDict *qdict); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -64,8 +64,6 @@ void hmp_block_resize(Monitor *mon, const QDict *qdict); | ||||
| void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict); | ||||
| void hmp_snapshot_blkdev_internal(Monitor *mon, const QDict *qdict); | ||||
| void hmp_snapshot_delete_blkdev_internal(Monitor *mon, const QDict *qdict); | ||||
| void hmp_drive_mirror(Monitor *mon, const QDict *qdict); | ||||
| void hmp_drive_backup(Monitor *mon, const QDict *qdict); | ||||
| void hmp_loadvm(Monitor *mon, const QDict *qdict); | ||||
| void hmp_savevm(Monitor *mon, const QDict *qdict); | ||||
| void hmp_delvm(Monitor *mon, const QDict *qdict); | ||||
|  | ||||
| @ -1342,64 +1342,6 @@ void hmp_block_resize(Monitor *mon, const QDict *qdict) | ||||
|     hmp_handle_error(mon, err); | ||||
| } | ||||
| 
 | ||||
| void hmp_drive_mirror(Monitor *mon, const QDict *qdict) | ||||
| { | ||||
|     const char *filename = qdict_get_str(qdict, "target"); | ||||
|     const char *format = qdict_get_try_str(qdict, "format"); | ||||
|     bool reuse = qdict_get_try_bool(qdict, "reuse", false); | ||||
|     bool full = qdict_get_try_bool(qdict, "full", false); | ||||
|     Error *err = NULL; | ||||
|     DriveMirror mirror = { | ||||
|         .device = (char *)qdict_get_str(qdict, "device"), | ||||
|         .target = (char *)filename, | ||||
|         .has_format = !!format, | ||||
|         .format = (char *)format, | ||||
|         .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, | ||||
|         .has_mode = true, | ||||
|         .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, | ||||
|         .unmap = true, | ||||
|     }; | ||||
| 
 | ||||
|     if (!filename) { | ||||
|         error_setg(&err, QERR_MISSING_PARAMETER, "target"); | ||||
|         hmp_handle_error(mon, err); | ||||
|         return; | ||||
|     } | ||||
|     qmp_drive_mirror(&mirror, &err); | ||||
|     hmp_handle_error(mon, err); | ||||
| } | ||||
| 
 | ||||
| void hmp_drive_backup(Monitor *mon, const QDict *qdict) | ||||
| { | ||||
|     const char *device = qdict_get_str(qdict, "device"); | ||||
|     const char *filename = qdict_get_str(qdict, "target"); | ||||
|     const char *format = qdict_get_try_str(qdict, "format"); | ||||
|     bool reuse = qdict_get_try_bool(qdict, "reuse", false); | ||||
|     bool full = qdict_get_try_bool(qdict, "full", false); | ||||
|     bool compress = qdict_get_try_bool(qdict, "compress", false); | ||||
|     Error *err = NULL; | ||||
|     DriveBackup backup = { | ||||
|         .device = (char *)device, | ||||
|         .target = (char *)filename, | ||||
|         .has_format = !!format, | ||||
|         .format = (char *)format, | ||||
|         .sync = full ? MIRROR_SYNC_MODE_FULL : MIRROR_SYNC_MODE_TOP, | ||||
|         .has_mode = true, | ||||
|         .mode = reuse ? NEW_IMAGE_MODE_EXISTING : NEW_IMAGE_MODE_ABSOLUTE_PATHS, | ||||
|         .has_compress = !!compress, | ||||
|         .compress = compress, | ||||
|     }; | ||||
| 
 | ||||
|     if (!filename) { | ||||
|         error_setg(&err, QERR_MISSING_PARAMETER, "target"); | ||||
|         hmp_handle_error(mon, err); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     qmp_drive_backup(&backup, &err); | ||||
|     hmp_handle_error(mon, err); | ||||
| } | ||||
| 
 | ||||
| void hmp_snapshot_blkdev(Monitor *mon, const QDict *qdict) | ||||
| { | ||||
|     const char *device = qdict_get_str(qdict, "device"); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Maxim Levitsky
						Maxim Levitsky