[Qemu-devel] [PATCH 03/18] Introduce qemu_loadvm_state_no_header() and make qemu_loadvm_state() a wrapper.
From: Yoshiaki Tamura tamura.yoshi...@lab.ntt.co.jp Introduce qemu_loadvm_state_no_header() so that it can be called iteratively without reading the header, and qemu_loadvm_state() becomes a wrapper of it. Signed-off-by: Yoshiaki Tamura tamura.yoshi...@lab.ntt.co.jp Signed-off-by: OHMURA Kei ohmura@lab.ntt.co.jp --- savevm.c | 45 +++-- 1 files changed, 27 insertions(+), 18 deletions(-) diff --git a/savevm.c b/savevm.c index 9cf0258..d017760 100644 --- a/savevm.c +++ b/savevm.c @@ -1744,30 +1744,14 @@ typedef struct LoadStateEntry { int version_id; } LoadStateEntry; -int qemu_loadvm_state(QEMUFile *f) +static int qemu_loadvm_state_no_header(QEMUFile *f) { QLIST_HEAD(, LoadStateEntry) loadvm_handlers = QLIST_HEAD_INITIALIZER(loadvm_handlers); LoadStateEntry *le, *new_le; uint8_t section_type; -unsigned int v; -int ret; - -if (qemu_savevm_state_blocked(default_mon)) { -return -EINVAL; -} - -v = qemu_get_be32(f); -if (v != QEMU_VM_FILE_MAGIC) -return -EINVAL; -v = qemu_get_be32(f); -if (v == QEMU_VM_FILE_VERSION_COMPAT) { -fprintf(stderr, SaveVM v2 format is obsolete and don't work anymore\n); -return -ENOTSUP; -} -if (v != QEMU_VM_FILE_VERSION) -return -ENOTSUP; +int ret; while ((section_type = qemu_get_byte(f)) != QEMU_VM_EOF) { uint32_t instance_id, version_id, section_id; @@ -1862,6 +1846,31 @@ out: return ret; } +int qemu_loadvm_state(QEMUFile *f) +{ +unsigned int v; + +if (qemu_savevm_state_blocked(default_mon)) { +return -EINVAL; +} + +v = qemu_get_be32(f); +if (v != QEMU_VM_FILE_MAGIC) { +return -EINVAL; +} + +v = qemu_get_be32(f); +if (v == QEMU_VM_FILE_VERSION_COMPAT) { +fprintf(stderr, SaveVM v2 format is obsolete and don't work anymore\n); +return -ENOTSUP; +} +if (v != QEMU_VM_FILE_VERSION) { +return -ENOTSUP; +} + +return qemu_loadvm_state_no_header(f); +} + static int bdrv_snapshot_find(BlockDriverState *bs, QEMUSnapshotInfo *sn_info, const char *name) { -- 1.7.0.2
[Qemu-devel] [PATCH 03/18] Introduce qemu_loadvm_state_no_header() and make qemu_loadvm_state() a wrapper.
Introduce qemu_loadvm_state_no_header() so that it can be called iteratively without reading the header, and qemu_loadvm_state() becomes a wrapper of it. Signed-off-by: Yoshiaki Tamura tamura.yoshi...@lab.ntt.co.jp --- savevm.c | 45 +++-- 1 files changed, 27 insertions(+), 18 deletions(-) diff --git a/savevm.c b/savevm.c index d293f9c..4a76e32 100644 --- a/savevm.c +++ b/savevm.c @@ -1743,30 +1743,14 @@ typedef struct LoadStateEntry { int version_id; } LoadStateEntry; -int qemu_loadvm_state(QEMUFile *f) +static int qemu_loadvm_state_no_header(QEMUFile *f) { QLIST_HEAD(, LoadStateEntry) loadvm_handlers = QLIST_HEAD_INITIALIZER(loadvm_handlers); LoadStateEntry *le, *new_le; uint8_t section_type; -unsigned int v; -int ret; - -if (qemu_savevm_state_blocked(default_mon)) { -return -EINVAL; -} - -v = qemu_get_be32(f); -if (v != QEMU_VM_FILE_MAGIC) -return -EINVAL; -v = qemu_get_be32(f); -if (v == QEMU_VM_FILE_VERSION_COMPAT) { -fprintf(stderr, SaveVM v2 format is obsolete and don't work anymore\n); -return -ENOTSUP; -} -if (v != QEMU_VM_FILE_VERSION) -return -ENOTSUP; +int ret; while ((section_type = qemu_get_byte(f)) != QEMU_VM_EOF) { uint32_t instance_id, version_id, section_id; @@ -1861,6 +1845,31 @@ out: return ret; } +int qemu_loadvm_state(QEMUFile *f) +{ +unsigned int v; + +if (qemu_savevm_state_blocked(default_mon)) { +return -EINVAL; +} + +v = qemu_get_be32(f); +if (v != QEMU_VM_FILE_MAGIC) { +return -EINVAL; +} + +v = qemu_get_be32(f); +if (v == QEMU_VM_FILE_VERSION_COMPAT) { +fprintf(stderr, SaveVM v2 format is obsolete and don't work anymore\n); +return -ENOTSUP; +} +if (v != QEMU_VM_FILE_VERSION) { +return -ENOTSUP; +} + +return qemu_loadvm_state_no_header(f); +} + static int bdrv_snapshot_find(BlockDriverState *bs, QEMUSnapshotInfo *sn_info, const char *name) { -- 1.7.1.2
[Qemu-devel] [PATCH 03/18] Introduce qemu_loadvm_state_no_header() and make qemu_loadvm_state() a wrapper.
Introduce qemu_loadvm_state_no_header() so that it can be called iteratively without reading the header, and qemu_loadvm_state() becomes a wrapper of it. Signed-off-by: Yoshiaki Tamura tamura.yoshi...@lab.ntt.co.jp --- savevm.c | 45 +++-- 1 files changed, 27 insertions(+), 18 deletions(-) diff --git a/savevm.c b/savevm.c index 22010b9..fc62bcb 100644 --- a/savevm.c +++ b/savevm.c @@ -1716,30 +1716,14 @@ typedef struct LoadStateEntry { int version_id; } LoadStateEntry; -int qemu_loadvm_state(QEMUFile *f) +static int qemu_loadvm_state_no_header(QEMUFile *f) { QLIST_HEAD(, LoadStateEntry) loadvm_handlers = QLIST_HEAD_INITIALIZER(loadvm_handlers); LoadStateEntry *le, *new_le; uint8_t section_type; -unsigned int v; -int ret; - -if (qemu_savevm_state_blocked(default_mon)) { -return -EINVAL; -} - -v = qemu_get_be32(f); -if (v != QEMU_VM_FILE_MAGIC) -return -EINVAL; -v = qemu_get_be32(f); -if (v == QEMU_VM_FILE_VERSION_COMPAT) { -fprintf(stderr, SaveVM v2 format is obsolete and don't work anymore\n); -return -ENOTSUP; -} -if (v != QEMU_VM_FILE_VERSION) -return -ENOTSUP; +int ret; while ((section_type = qemu_get_byte(f)) != QEMU_VM_EOF) { uint32_t instance_id, version_id, section_id; @@ -1834,6 +1818,31 @@ out: return ret; } +int qemu_loadvm_state(QEMUFile *f) +{ +unsigned int v; + +if (qemu_savevm_state_blocked(default_mon)) { +return -EINVAL; +} + +v = qemu_get_be32(f); +if (v != QEMU_VM_FILE_MAGIC) { +return -EINVAL; +} + +v = qemu_get_be32(f); +if (v == QEMU_VM_FILE_VERSION_COMPAT) { +fprintf(stderr, SaveVM v2 format is obsolete and don't work anymore\n); +return -ENOTSUP; +} +if (v != QEMU_VM_FILE_VERSION) { +return -ENOTSUP; +} + +return qemu_loadvm_state_no_header(f); +} + static int bdrv_snapshot_find(BlockDriverState *bs, QEMUSnapshotInfo *sn_info, const char *name) { -- 1.7.1.2