Now that the file migration doesn't require us to use 'dd' and other legacy stuff for too old qemus we don't even have to calcuate the offsets and other stuff. --- src/qemu/qemu_driver.c | 30 ++---------------------------- src/qemu/qemu_monitor.h | 10 ---------- 2 files changed, 2 insertions(+), 38 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 77f4baa..2ca6700 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -3128,38 +3128,13 @@ qemuDomainSaveMemory(virQEMUDriverPtr driver, int directFlag = 0; virFileWrapperFdPtr wrapperFd = NULL; unsigned int wrapperFlags = VIR_FILE_WRAPPER_NON_BLOCKING; - unsigned long long pad; - unsigned long long offset; - size_t len; - char *xml = NULL; memset(&header, 0, sizeof(header)); memcpy(header.magic, QEMU_SAVE_PARTIAL, sizeof(header.magic)); header.version = QEMU_SAVE_VERSION; header.was_running = was_running ? 1 : 0; - header.compressed = compressed; - - len = strlen(domXML) + 1; - offset = sizeof(header) + len; - - /* Due to way we append QEMU state on our header with dd, - * we need to ensure there's a 512 byte boundary. Unfortunately - * we don't have an explicit offset in the header, so we fake - * it by padding the XML string with NUL bytes. Additionally, - * we want to ensure that virDomainSaveImageDefineXML can supply - * slightly larger XML, so we add a minimum padding prior to - * rounding out to page boundaries. - */ - pad = 1024; - pad += (QEMU_MONITOR_MIGRATE_TO_FILE_BS - - ((offset + pad) % QEMU_MONITOR_MIGRATE_TO_FILE_BS)); - if (VIR_ALLOC_N(xml, len + pad) < 0) - goto cleanup; - strcpy(xml, domXML); - - offset += pad; - header.xml_len = len; + header.xml_len = strlen(domXML) + 1; /* Obtain the file handle. */ if ((flags & VIR_DOMAIN_SAVE_BYPASS_CACHE)) { @@ -3184,7 +3159,7 @@ qemuDomainSaveMemory(virQEMUDriverPtr driver, goto cleanup; /* Write header to file, followed by XML */ - if (qemuDomainSaveHeader(fd, path, xml, &header) < 0) + if (qemuDomainSaveHeader(fd, path, domXML, &header) < 0) goto cleanup; /* Perform the migration */ @@ -3226,7 +3201,6 @@ qemuDomainSaveMemory(virQEMUDriverPtr driver, cleanup: VIR_FORCE_CLOSE(fd); virFileWrapperFdFree(wrapperFd); - VIR_FREE(xml); if (ret < 0 && needUnlink) unlink(path); diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index d731344..134cbb6 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -560,16 +560,6 @@ int qemuMonitorMigrateToCommand(qemuMonitorPtr mon, unsigned int flags, const char * const *argv); -/* In general, BS is the smallest fundamental block size we can use to - * access a block device; everything must be aligned to a multiple of - * this. Linux generally supports a BS as small as 512, but with - * newer disks with 4k sectors, performance is better if we guarantee - * alignment to the sector size. However, operating on BS-sized - * blocks is painfully slow, so we also have a transfer size that is - * larger but only aligned to the smaller block size. - */ -# define QEMU_MONITOR_MIGRATE_TO_FILE_BS (1024llu * 4) - int qemuMonitorMigrateToUnix(qemuMonitorPtr mon, unsigned int flags, const char *unixfile); -- 2.6.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list