In several place we need to get QEMUFile input position in the meaning of the number of bytes read by qemu_get_byte()/qemu_get_buffer() routines.
Existing qemu_ftell() returns offset in terms of the number of bytes read from underlying IOChannel object which is not suitable here. Signed-off-by: Andrey Gruzdev <andrey.gruz...@virtuozzo.com> --- migration/qemu-file.c | 6 ++++++ migration/qemu-file.h | 1 + 2 files changed, 7 insertions(+) diff --git a/migration/qemu-file.c b/migration/qemu-file.c index d6e03dbc0e..66be5e6460 100644 --- a/migration/qemu-file.c +++ b/migration/qemu-file.c @@ -657,6 +657,12 @@ int64_t qemu_ftell(QEMUFile *f) return f->pos; } +int64_t qemu_ftell2(QEMUFile *f) +{ + qemu_fflush(f); + return f->pos + f->buf_index - f->buf_size; +} + int qemu_file_rate_limit(QEMUFile *f) { if (f->shutdown) { diff --git a/migration/qemu-file.h b/migration/qemu-file.h index a9b6d6ccb7..bd1a6def02 100644 --- a/migration/qemu-file.h +++ b/migration/qemu-file.h @@ -124,6 +124,7 @@ void qemu_file_set_hooks(QEMUFile *f, const QEMUFileHooks *hooks); int qemu_get_fd(QEMUFile *f); int qemu_fclose(QEMUFile *f); int64_t qemu_ftell(QEMUFile *f); +int64_t qemu_ftell2(QEMUFile *f); int64_t qemu_ftell_fast(QEMUFile *f); /* * put_buffer without copying the buffer. -- 2.25.1