aboutsummaryrefslogtreecommitdiff
path: root/include/migration
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2016-04-27 11:04:54 +0100
committerAmit Shah <amit.shah@redhat.com>2016-05-26 11:31:14 +0530
commitbaf51e7739a4d176284d2e38e1755afeafcd2ee0 (patch)
treee9ee8de74540a573b60d6a3e16b6c8d85217201b /include/migration
parenta8ec4437cd52b2258c77d6b4195c927139c4ced5 (diff)
downloadqemu-baf51e7739a4d176284d2e38e1755afeafcd2ee0.zip
qemu-baf51e7739a4d176284d2e38e1755afeafcd2ee0.tar.gz
qemu-baf51e7739a4d176284d2e38e1755afeafcd2ee0.tar.bz2
migration: ensure qemu_fflush() always writes full data amount
The QEMUFile writev_buffer / put_buffer functions are expected to write out the full set of requested data, blocking until complete. The qemu_fflush() caller does not expect to deal with partial writes. Clarify the function comments and add a sanity check to the code to catch mistaken implementations. Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Daniel P. Berrange <berrange@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Message-Id: <1461751518-12128-5-git-send-email-berrange@redhat.com> Signed-off-by: Amit Shah <amit.shah@redhat.com>
Diffstat (limited to 'include/migration')
-rw-r--r--include/migration/qemu-file.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/include/migration/qemu-file.h b/include/migration/qemu-file.h
index 3f6b4ed..5909ff0 100644
--- a/include/migration/qemu-file.h
+++ b/include/migration/qemu-file.h
@@ -28,7 +28,8 @@
/* This function writes a chunk of data to a file at the given position.
* The pos argument can be ignored if the file is only being used for
- * streaming. The handler should try to write all of the data it can.
+ * streaming. The handler must write all of the data or return a negative
+ * errno value.
*/
typedef ssize_t (QEMUFilePutBufferFunc)(void *opaque, const uint8_t *buf,
int64_t pos, size_t size);
@@ -54,7 +55,8 @@ typedef int (QEMUFileCloseFunc)(void *opaque);
typedef int (QEMUFileGetFD)(void *opaque);
/*
- * This function writes an iovec to file.
+ * This function writes an iovec to file. The handler must write all
+ * of the data or return a negative errno value.
*/
typedef ssize_t (QEMUFileWritevBufferFunc)(void *opaque, struct iovec *iov,
int iovcnt, int64_t pos);