From 03cd4655cbbc304f355deffd3413f7e3cbbcbe5e Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 17 Feb 2010 16:24:10 +0100 Subject: savevm: Fix -loadvm to report errors to stderr, not the monitor A monitor may not even exist. Change load_vmstate() to use qemu_error() instead of monitor_printf(). Parameter mon is now unused, remove it. --- savevm.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'savevm.c') diff --git a/savevm.c b/savevm.c index a6e774b..b634686 100644 --- a/savevm.c +++ b/savevm.c @@ -1737,7 +1737,7 @@ void do_savevm(Monitor *mon, const QDict *qdict) vm_start(); } -int load_vmstate(Monitor *mon, const char *name) +int load_vmstate(const char *name) { DriveInfo *dinfo; BlockDriverState *bs, *bs1; @@ -1747,7 +1747,7 @@ int load_vmstate(Monitor *mon, const char *name) bs = get_bs_snapshots(); if (!bs) { - monitor_printf(mon, "No block device supports snapshots\n"); + qemu_error("No block device supports snapshots\n"); return -EINVAL; } @@ -1760,21 +1760,19 @@ int load_vmstate(Monitor *mon, const char *name) ret = bdrv_snapshot_goto(bs1, name); if (ret < 0) { if (bs != bs1) - monitor_printf(mon, "Warning: "); + qemu_error("Warning: "); switch(ret) { case -ENOTSUP: - monitor_printf(mon, - "Snapshots not supported on device '%s'\n", - bdrv_get_device_name(bs1)); + qemu_error("Snapshots not supported on device '%s'\n", + bdrv_get_device_name(bs1)); break; case -ENOENT: - monitor_printf(mon, "Could not find snapshot '%s' on " - "device '%s'\n", - name, bdrv_get_device_name(bs1)); + qemu_error("Could not find snapshot '%s' on device '%s'\n", + name, bdrv_get_device_name(bs1)); break; default: - monitor_printf(mon, "Error %d while activating snapshot on" - " '%s'\n", ret, bdrv_get_device_name(bs1)); + qemu_error("Error %d while activating snapshot on '%s'\n", + ret, bdrv_get_device_name(bs1)); break; } /* fatal on snapshot block device */ @@ -1792,13 +1790,13 @@ int load_vmstate(Monitor *mon, const char *name) /* restore the VM state */ f = qemu_fopen_bdrv(bs, 0); if (!f) { - monitor_printf(mon, "Could not open VM state file\n"); + qemu_error("Could not open VM state file\n"); return -EINVAL; } ret = qemu_loadvm_state(f); qemu_fclose(f); if (ret < 0) { - monitor_printf(mon, "Error %d while loading VM state\n", ret); + qemu_error("Error %d while loading VM state\n", ret); return ret; } return 0; -- cgit v1.1 From 1ecda02b24a13f501e747b8442934829d82698ae Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Thu, 18 Feb 2010 17:25:24 +0100 Subject: error: Replace qemu_error() by error_report() error_report() terminates the message with a newline. Strip it it from its arguments. This fixes a few error messages lacking a newline: net_handle_fd_param()'s "No file descriptor named %s found", and tap_open()'s "vnet_hdr=1 requested, but no kernel support for IFF_VNET_HDR available" (all three versions). There's one place that passes arguments without newlines intentionally: load_vmstate(). Fix it up. --- savevm.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'savevm.c') diff --git a/savevm.c b/savevm.c index b634686..bee1be1 100644 --- a/savevm.c +++ b/savevm.c @@ -1747,7 +1747,7 @@ int load_vmstate(const char *name) bs = get_bs_snapshots(); if (!bs) { - qemu_error("No block device supports snapshots\n"); + error_report("No block device supports snapshots"); return -EINVAL; } @@ -1759,20 +1759,21 @@ int load_vmstate(const char *name) if (bdrv_has_snapshot(bs1)) { ret = bdrv_snapshot_goto(bs1, name); if (ret < 0) { - if (bs != bs1) - qemu_error("Warning: "); switch(ret) { case -ENOTSUP: - qemu_error("Snapshots not supported on device '%s'\n", - bdrv_get_device_name(bs1)); + error_report("%sSnapshots not supported on device '%s'", + bs != bs1 ? "Warning: " : "", + bdrv_get_device_name(bs1)); break; case -ENOENT: - qemu_error("Could not find snapshot '%s' on device '%s'\n", - name, bdrv_get_device_name(bs1)); + error_report("%sCould not find snapshot '%s' on device '%s'", + bs != bs1 ? "Warning: " : "", + name, bdrv_get_device_name(bs1)); break; default: - qemu_error("Error %d while activating snapshot on '%s'\n", - ret, bdrv_get_device_name(bs1)); + error_report("%sError %d while activating snapshot on '%s'", + bs != bs1 ? "Warning: " : "", + ret, bdrv_get_device_name(bs1)); break; } /* fatal on snapshot block device */ @@ -1790,13 +1791,13 @@ int load_vmstate(const char *name) /* restore the VM state */ f = qemu_fopen_bdrv(bs, 0); if (!f) { - qemu_error("Could not open VM state file\n"); + error_report("Could not open VM state file"); return -EINVAL; } ret = qemu_loadvm_state(f); qemu_fclose(f); if (ret < 0) { - qemu_error("Error %d while loading VM state\n", ret); + error_report("Error %d while loading VM state", ret); return ret; } return 0; -- cgit v1.1