Skip to content

Commit 8cb8e85

Browse files
author
Dave Anderson
committed
Recognize and parse the new QEMU_VM_CONFIGURATION and QEMU_VM_FOOTER
sections used for live migration of KVM guests, which are seen in the "kvmdump" format generated if "virsh dump" is used without the "--memory-only" option. ([email protected])
1 parent 5649088 commit 8cb8e85

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

qemu-load.c

+21
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,16 @@ get_string (FILE *fp, char *name)
208208
name[sz] = 0;
209209
return sz;
210210
}
211+
static int
212+
get_string_len (FILE *fp, char *name, uint32_t sz)
213+
{
214+
size_t items ATTRIBUTE_UNUSED;
215+
if (sz == EOF)
216+
return -1;
217+
items = fread (name, sz, 1, fp);
218+
name[sz] = 0;
219+
return sz;
220+
}
211221

212222
static void
213223
ram_read_blocks (FILE *fp, uint64_t size)
@@ -924,6 +934,8 @@ qemu_load (const struct qemu_device_loader *devices, uint32_t required_features,
924934
struct qemu_device_list *result = NULL;
925935
struct qemu_device *last = NULL;;
926936
size_t items ATTRIBUTE_UNUSED;
937+
uint32_t footerSecId ATTRIBUTE_UNUSED;
938+
char name[257];
927939

928940
switch (get_be32 (fp)) {
929941
case QEMU_VM_FILE_MAGIC:
@@ -961,6 +973,15 @@ qemu_load (const struct qemu_device_loader *devices, uint32_t required_features,
961973
break;
962974
if (sec == QEMU_VM_EOF)
963975
break;
976+
if (sec == QEMU_VM_SECTION_FOOTER) {
977+
footerSecId = get_be32 (fp);
978+
continue;
979+
}
980+
if (sec == QEMU_VM_CONFIGURATION) {
981+
uint32_t len = get_be32 (fp);
982+
get_string_len (fp, name, len);
983+
continue;
984+
}
964985

965986
d = device_get (devices, result, sec, fp);
966987
if (!d)

qemu-load.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ enum qemu_save_section {
2929
QEMU_VM_SECTION_PART,
3030
QEMU_VM_SECTION_END,
3131
QEMU_VM_SECTION_FULL,
32-
QEMU_VM_SUBSECTION
32+
QEMU_VM_SUBSECTION,
33+
QEMU_VM_CONFIGURATION = 0x07,
34+
QEMU_VM_SECTION_FOOTER = 0x7e
3335
};
3436

3537
enum qemu_features {

0 commit comments

Comments
 (0)