Il 21/03/2013 10:09, Orit Wasserman ha scritto:
Signed-off-by: Orit Wasserman owass...@redhat.com
---
savevm.c | 6 ++
1 file changed, 6 insertions(+)
diff --git a/savevm.c b/savevm.c
index 41dc87f..fa07a86 100644
--- a/savevm.c
+++ b/savevm.c
@@ -241,6 +241,11 @@ static int stdio_get_fd(void *opaque)
return fileno(s-stdio_file);
}
+static int stdio_writev_buffer(void *opaque, struct iovec *iov, int iovcnt)
+{
+return iov_writev(stdio_get_fd(opaque), iov, iovcnt);
+}
+
static int stdio_put_buffer(void *opaque, const uint8_t *buf, int64_t pos,
int size)
{
QEMUFileStdio *s = opaque;
@@ -321,6 +326,7 @@ static const QEMUFileOps stdio_pipe_read_ops = {
static const QEMUFileOps stdio_pipe_write_ops = {
.get_fd = stdio_get_fd,
.put_buffer = stdio_put_buffer,
+.writev_buffer = stdio_writev_buffer,
.close = stdio_pclose
};
This may cause subtle bugs if the FILE* is written before opening the
QEMUFile, but not flushed. It doesn't happen in QEMU, but it is not too
clean. If you let qemu_fflush pick one of stdio_put_buffer or
stdio_writev_buffer, the problem disappears.
Paolo