mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-27 16:15:23 +00:00
qemu: Introduce virQEMUSaveDataFinish
The function is supposed to update the save image header after a successful migration to the save image file. Signed-off-by: Jiri Denemark <jdenemar@redhat.com> Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
a2d2aae148
commit
ec986bc572
@ -2877,6 +2877,25 @@ qemuDomainSaveHeader(int fd, const char *path, const char *xml,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
virQEMUSaveDataFinish(virQEMUSaveHeaderPtr header,
|
||||||
|
int *fd,
|
||||||
|
const char *path)
|
||||||
|
{
|
||||||
|
memcpy(header->magic, QEMU_SAVE_MAGIC, sizeof(header->magic));
|
||||||
|
|
||||||
|
if (safewrite(*fd, header, sizeof(*header)) != sizeof(*header) ||
|
||||||
|
VIR_CLOSE(*fd) < 0) {
|
||||||
|
virReportSystemError(errno,
|
||||||
|
_("failed to write header to domain save file '%s'"),
|
||||||
|
path);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static virCommandPtr
|
static virCommandPtr
|
||||||
qemuCompressGetCommand(virQEMUSaveFormat compression)
|
qemuCompressGetCommand(virQEMUSaveFormat compression)
|
||||||
{
|
{
|
||||||
@ -3149,21 +3168,10 @@ qemuDomainSaveMemory(virQEMUDriverPtr driver,
|
|||||||
if (virFileWrapperFdClose(wrapperFd) < 0)
|
if (virFileWrapperFdClose(wrapperFd) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if ((fd = qemuOpenFile(driver, vm, path, O_WRONLY, NULL, NULL)) < 0)
|
if ((fd = qemuOpenFile(driver, vm, path, O_WRONLY, NULL, NULL)) < 0 ||
|
||||||
|
virQEMUSaveDataFinish(header, &fd, path) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
memcpy(header->magic, QEMU_SAVE_MAGIC, sizeof(header->magic));
|
|
||||||
|
|
||||||
if (safewrite(fd, &header, sizeof(header)) != sizeof(header)) {
|
|
||||||
virReportSystemError(errno, _("unable to write %s"), path);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (VIR_CLOSE(fd) < 0) {
|
|
||||||
virReportSystemError(errno, _("unable to close %s"), path);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
Loading…
Reference in New Issue
Block a user