migration: stop returning errno from load_snapshot()
None of the callers care about the errno value since there is a full Error object populated. This gives consistency with save_snapshot() which already just returns a boolean value. Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> [PMD: Return false/true instead of -1/0, document function] Acked-by: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20210204124834.774401-4-berrange@redhat.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
		
				
					committed by
					
						 Dr. David Alan Gilbert
						Dr. David Alan Gilbert
					
				
			
			
				
	
			
			
			
						parent
						
							7ea14df230
						
					
				
				
					commit
					f61fe11aa6
				
			| @@ -23,6 +23,14 @@ | |||||||
|  * On failure, store an error through @errp and return %false. |  * On failure, store an error through @errp and return %false. | ||||||
|  */ |  */ | ||||||
| bool save_snapshot(const char *name, Error **errp); | bool save_snapshot(const char *name, Error **errp); | ||||||
| int load_snapshot(const char *name, Error **errp); |  | ||||||
|  | /** | ||||||
|  |  * load_snapshot: Load an internal snapshot. | ||||||
|  |  * @name: name of internal snapshot | ||||||
|  |  * @errp: pointer to error object | ||||||
|  |  * On success, return %true. | ||||||
|  |  * On failure, store an error through @errp and return %false. | ||||||
|  |  */ | ||||||
|  | bool load_snapshot(const char *name, Error **errp); | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|   | |||||||
| @@ -2965,7 +2965,7 @@ void qmp_xen_load_devices_state(const char *filename, Error **errp) | |||||||
|     migration_incoming_state_destroy(); |     migration_incoming_state_destroy(); | ||||||
| } | } | ||||||
|  |  | ||||||
| int load_snapshot(const char *name, Error **errp) | bool load_snapshot(const char *name, Error **errp) | ||||||
| { | { | ||||||
|     BlockDriverState *bs_vm_state; |     BlockDriverState *bs_vm_state; | ||||||
|     QEMUSnapshotInfo sn; |     QEMUSnapshotInfo sn; | ||||||
| @@ -2975,16 +2975,16 @@ int load_snapshot(const char *name, Error **errp) | |||||||
|     MigrationIncomingState *mis = migration_incoming_get_current(); |     MigrationIncomingState *mis = migration_incoming_get_current(); | ||||||
|  |  | ||||||
|     if (!bdrv_all_can_snapshot(errp)) { |     if (!bdrv_all_can_snapshot(errp)) { | ||||||
|         return -ENOTSUP; |         return false; | ||||||
|     } |     } | ||||||
|     ret = bdrv_all_find_snapshot(name, errp); |     ret = bdrv_all_find_snapshot(name, errp); | ||||||
|     if (ret < 0) { |     if (ret < 0) { | ||||||
|         return ret; |         return false; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     bs_vm_state = bdrv_all_find_vmstate_bs(errp); |     bs_vm_state = bdrv_all_find_vmstate_bs(errp); | ||||||
|     if (!bs_vm_state) { |     if (!bs_vm_state) { | ||||||
|         return -ENOTSUP; |         return false; | ||||||
|     } |     } | ||||||
|     aio_context = bdrv_get_aio_context(bs_vm_state); |     aio_context = bdrv_get_aio_context(bs_vm_state); | ||||||
|  |  | ||||||
| @@ -2993,11 +2993,11 @@ int load_snapshot(const char *name, Error **errp) | |||||||
|     ret = bdrv_snapshot_find(bs_vm_state, &sn, name); |     ret = bdrv_snapshot_find(bs_vm_state, &sn, name); | ||||||
|     aio_context_release(aio_context); |     aio_context_release(aio_context); | ||||||
|     if (ret < 0) { |     if (ret < 0) { | ||||||
|         return ret; |         return false; | ||||||
|     } else if (sn.vm_state_size == 0) { |     } else if (sn.vm_state_size == 0) { | ||||||
|         error_setg(errp, "This is a disk-only snapshot. Revert to it " |         error_setg(errp, "This is a disk-only snapshot. Revert to it " | ||||||
|                    " offline using qemu-img"); |                    " offline using qemu-img"); | ||||||
|         return -EINVAL; |         return false; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /* |     /* | ||||||
| @@ -3018,7 +3018,6 @@ int load_snapshot(const char *name, Error **errp) | |||||||
|     f = qemu_fopen_bdrv(bs_vm_state, 0); |     f = qemu_fopen_bdrv(bs_vm_state, 0); | ||||||
|     if (!f) { |     if (!f) { | ||||||
|         error_setg(errp, "Could not open VM state file"); |         error_setg(errp, "Could not open VM state file"); | ||||||
|         ret = -EINVAL; |  | ||||||
|         goto err_drain; |         goto err_drain; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -3038,14 +3037,14 @@ int load_snapshot(const char *name, Error **errp) | |||||||
|  |  | ||||||
|     if (ret < 0) { |     if (ret < 0) { | ||||||
|         error_setg(errp, "Error %d while loading VM state", ret); |         error_setg(errp, "Error %d while loading VM state", ret); | ||||||
|         return ret; |         return false; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     return 0; |     return true; | ||||||
|  |  | ||||||
| err_drain: | err_drain: | ||||||
|     bdrv_drain_all_end(); |     bdrv_drain_all_end(); | ||||||
|     return ret; |     return false; | ||||||
| } | } | ||||||
|  |  | ||||||
| void vmstate_register_ram(MemoryRegion *mr, DeviceState *dev) | void vmstate_register_ram(MemoryRegion *mr, DeviceState *dev) | ||||||
|   | |||||||
| @@ -1139,7 +1139,7 @@ void hmp_loadvm(Monitor *mon, const QDict *qdict) | |||||||
|  |  | ||||||
|     vm_stop(RUN_STATE_RESTORE_VM); |     vm_stop(RUN_STATE_RESTORE_VM); | ||||||
|  |  | ||||||
|     if (load_snapshot(name, &err) == 0 && saved_vm_running) { |     if (!load_snapshot(name, &err) && saved_vm_running) { | ||||||
|         vm_start(); |         vm_start(); | ||||||
|     } |     } | ||||||
|     hmp_handle_error(mon, err); |     hmp_handle_error(mon, err); | ||||||
|   | |||||||
| @@ -83,7 +83,7 @@ void replay_vmstate_init(void) | |||||||
|                 exit(1); |                 exit(1); | ||||||
|             } |             } | ||||||
|         } else if (replay_mode == REPLAY_MODE_PLAY) { |         } else if (replay_mode == REPLAY_MODE_PLAY) { | ||||||
|             if (load_snapshot(replay_snapshot, &err) != 0) { |             if (!load_snapshot(replay_snapshot, &err)) { | ||||||
|                 error_report_err(err); |                 error_report_err(err); | ||||||
|                 error_report("Could not load snapshot for icount replay"); |                 error_report("Could not load snapshot for icount replay"); | ||||||
|                 exit(1); |                 exit(1); | ||||||
|   | |||||||
| @@ -2530,7 +2530,7 @@ void qmp_x_exit_preconfig(Error **errp) | |||||||
|  |  | ||||||
|     if (loadvm) { |     if (loadvm) { | ||||||
|         Error *local_err = NULL; |         Error *local_err = NULL; | ||||||
|         if (load_snapshot(loadvm, &local_err) < 0) { |         if (!load_snapshot(loadvm, &local_err)) { | ||||||
|             error_report_err(local_err); |             error_report_err(local_err); | ||||||
|             autostart = 0; |             autostart = 0; | ||||||
|             exit(1); |             exit(1); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user