@@ -82,6 +82,7 @@ QEMUFile *qemu_popen_cmd(const char *command, const char *mode);
int qemu_get_fd(QEMUFile *f);
int qemu_fclose(QEMUFile *f);
int64_t qemu_ftell(QEMUFile *f);
+int qemu_fseek(QEMUFile *f, int64_t offset);
void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, int size);
void qemu_put_byte(QEMUFile *f, int v);
@@ -683,6 +683,23 @@ int64_t qemu_ftell(QEMUFile *f)
}
}
+int qemu_fseek(QEMUFile *f, int64_t offset)
+{
+ /* only support for writing */
+ g_assert(f->is_write);
+
+ int ret;
+ if (f->buf_index) {
+ ret = qemu_fflush(f);
+ if (ret < 0) {
+ qemu_file_set_error(f, ret);
+ return ret;
+ }
+ }
+ f->buf_offset = offset;
+ return 0;
+}
+
int qemu_file_rate_limit(QEMUFile *f)
{
if (f->ops->rate_limit)
Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com> --- include/migration/qemu-file.h | 1 + savevm.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 0 deletions(-)