* Daniel P. Berrangé (berra...@redhat.com) wrote: > This directly implements the get_return_path logic using QIOChannel APIs. > > Signed-off-by: Daniel P. Berrangé <berra...@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > --- > migration/qemu-file-channel.c | 16 ---------------- > migration/qemu-file.c | 22 ++++++++++------------ > migration/qemu-file.h | 6 ------ > 3 files changed, 10 insertions(+), 34 deletions(-) > > diff --git a/migration/qemu-file-channel.c b/migration/qemu-file-channel.c > index 2e139f7bcd..51717c1137 100644 > --- a/migration/qemu-file-channel.c > +++ b/migration/qemu-file-channel.c > @@ -32,27 +32,11 @@ > #include "yank_functions.h" > > > -static QEMUFile *channel_get_input_return_path(void *opaque) > -{ > - QIOChannel *ioc = QIO_CHANNEL(opaque); > - > - return qemu_fopen_channel_output(ioc); > -} > - > -static QEMUFile *channel_get_output_return_path(void *opaque) > -{ > - QIOChannel *ioc = QIO_CHANNEL(opaque); > - > - return qemu_fopen_channel_input(ioc); > -} > - > static const QEMUFileOps channel_input_ops = { > - .get_return_path = channel_get_input_return_path, > }; > > > static const QEMUFileOps channel_output_ops = { > - .get_return_path = channel_get_output_return_path, > }; > > > diff --git a/migration/qemu-file.c b/migration/qemu-file.c > index 72a6f58af5..dfee808924 100644 > --- a/migration/qemu-file.c > +++ b/migration/qemu-file.c > @@ -92,18 +92,6 @@ int qemu_file_shutdown(QEMUFile *f) > return ret; > } > > -/* > - * Result: QEMUFile* for a 'return path' for comms in the opposite direction > - * NULL if not available > - */ > -QEMUFile *qemu_file_get_return_path(QEMUFile *f) > -{ > - if (!f->ops->get_return_path) { > - return NULL; > - } > - return f->ops->get_return_path(f->ioc); > -} > - > bool qemu_file_mode_is_not_valid(const char *mode) > { > if (mode == NULL || > @@ -131,6 +119,16 @@ static QEMUFile *qemu_file_new_impl(QIOChannel *ioc, > return f; > } > > +/* > + * Result: QEMUFile* for a 'return path' for comms in the opposite direction > + * NULL if not available > + */ > +QEMUFile *qemu_file_get_return_path(QEMUFile *f) > +{ > + object_ref(f->ioc); > + return qemu_file_new_impl(f->ioc, f->ops, !f->is_writable); > +} > + > QEMUFile *qemu_file_new_output(QIOChannel *ioc, const QEMUFileOps *ops) > { > return qemu_file_new_impl(ioc, ops, true); > diff --git a/migration/qemu-file.h b/migration/qemu-file.h > index 542c637934..5370e4e5ec 100644 > --- a/migration/qemu-file.h > +++ b/migration/qemu-file.h > @@ -55,13 +55,7 @@ typedef size_t (QEMURamSaveFunc)(QEMUFile *f, > size_t size, > uint64_t *bytes_sent); > > -/* > - * Return a QEMUFile for comms in the opposite direction > - */ > -typedef QEMUFile *(QEMURetPathFunc)(void *opaque); > - > typedef struct QEMUFileOps { > - QEMURetPathFunc *get_return_path; > } QEMUFileOps; > > typedef struct QEMUFileHooks { > -- > 2.36.1 > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK