From b3e617f74e41ffd4f18d2fcf3536858a5b6fcdef Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 19 Oct 2011 23:47:50 +0200 Subject: [PATCH 15/18] migration: use qemu_file_get_error() return value when possible RH-Author: Juan Quintela Message-id: Patchwork-id: 34441 O-Subject: [PATCH qemu-kvm RHEL-6.2 15/16] migration: use qemu_file_get_error() return value when possible Bugzilla: 669581 RH-Acked-by: Amit Shah RH-Acked-by: Orit Wasserman RH-Acked-by: Markus Armbruster Signed-off-by: Juan Quintela Conflicts: arch_init.c on vl.c block-migration.c code changed/moved --- block-migration.c | 6 ++++-- buffered_file.c | 23 ++++++++++++++--------- savevm.c | 4 ++-- vl.c | 6 ++++-- 4 files changed, 24 insertions(+), 15 deletions(-) Signed-off-by: Michal Novotny --- block-migration.c | 6 ++++-- buffered_file.c | 23 ++++++++++++++--------- savevm.c | 4 ++-- vl.c | 6 ++++-- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/block-migration.c b/block-migration.c index 122f561..1628def 100644 --- a/block-migration.c +++ b/block-migration.c @@ -482,6 +482,7 @@ static int block_load(QEMUFile *f, void *opaque, int version_id) int64_t addr; BlockDriverState *bs; uint8_t *buf; + int ret; do { addr = qemu_get_be64(f); @@ -520,8 +521,9 @@ static int block_load(QEMUFile *f, void *opaque, int version_id) fprintf(stderr, "Unknown flags\n"); return -EINVAL; } - if (qemu_file_get_error(f)) { - return -EIO; + ret = qemu_file_get_error(f); + if (ret != 0) { + return ret; } } while (!(flags & BLK_MIG_FLAG_EOS)); diff --git a/buffered_file.c b/buffered_file.c index 14f7a24..dd1f172 100644 --- a/buffered_file.c +++ b/buffered_file.c @@ -72,9 +72,11 @@ static void buffered_append(QEMUFileBuffered *s, static void buffered_flush(QEMUFileBuffered *s) { size_t offset = 0; + int error; - if (qemu_file_get_error(s->file)) { - DPRINTF("flush when error, bailing\n"); + error = qemu_file_get_error(s->file); + if (error != 0) { + DPRINTF("flush when error, bailing: %s\n", strerror(-error)); return; } @@ -109,14 +111,15 @@ static void buffered_flush(QEMUFileBuffered *s) static int buffered_put_buffer(void *opaque, const uint8_t *buf, int64_t pos, int size) { QEMUFileBuffered *s = opaque; - int offset = 0; + int offset = 0, error; ssize_t ret; DPRINTF("putting %d bytes at %" PRId64 "\n", size, pos); - if (qemu_file_get_error(s->file)) { - DPRINTF("flush when error, bailing\n"); - return -EINVAL; + error = qemu_file_get_error(s->file); + if (error) { + DPRINTF("flush when error, bailing: %s\n", strerror(-error)); + return error; } DPRINTF("unfreezing output\n"); @@ -193,14 +196,16 @@ static int buffered_close(void *opaque) * The meaning of the return values is: * 0: We can continue sending * 1: Time to stop - * -1: There has been an error + * negative: There has been an error */ static int buffered_rate_limit(void *opaque) { QEMUFileBuffered *s = opaque; + int ret; - if (qemu_file_get_error(s->file)) { - return -1; + ret = qemu_file_get_error(s->file); + if (ret) { + return ret; } if (s->freeze_output) return 1; diff --git a/savevm.c b/savevm.c index 86d3279..4306144 100644 --- a/savevm.c +++ b/savevm.c @@ -1866,8 +1866,8 @@ out: qemu_free(le); } - if (qemu_file_get_error(f)) { - ret = -EIO; + if (ret == 0) { + ret = qemu_file_get_error(f); } return ret; diff --git a/vl.c b/vl.c index 547be13..3aee379 100644 --- a/vl.c +++ b/vl.c @@ -3055,6 +3055,7 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id) { ram_addr_t addr; int flags; + int error; if (version_id < 3 || version_id > 4) return -EINVAL; @@ -3131,8 +3132,9 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id) qemu_get_buffer(f, host, TARGET_PAGE_SIZE); } - if (qemu_file_get_error(f)) { - return -EIO; + error = qemu_file_get_error(f); + if (error) { + return error; } } while (!(flags & RAM_SAVE_FLAG_EOS)); -- 1.7.4.4