diff mbox series

[20/20] migration: remove the QEMUFileOps abstraction

Message ID 20220524110235.145079-21-berrange@redhat.com
State New
Headers show
Series migration: remove QEMUFileOps concept and assume use of QIOChannel | expand

Commit Message

Daniel P. Berrangé May 24, 2022, 11:02 a.m. UTC
Now that all QEMUFile callbacks are removed, the entire concept can be
deleted.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 migration/channel.c           |  4 +--
 migration/colo.c              |  5 ++--
 migration/meson.build         |  1 -
 migration/migration.c         |  7 ++---
 migration/qemu-file-channel.c | 53 -----------------------------------
 migration/qemu-file-channel.h | 32 ---------------------
 migration/qemu-file.c         | 20 ++++++-------
 migration/qemu-file.h         |  8 ++----
 migration/ram.c               |  3 +-
 migration/rdma.c              |  5 ++--
 migration/savevm.c            | 11 ++++----
 tests/unit/test-vmstate.c     |  5 ++--
 12 files changed, 27 insertions(+), 127 deletions(-)
 delete mode 100644 migration/qemu-file-channel.c
 delete mode 100644 migration/qemu-file-channel.h

Comments

Dr. David Alan Gilbert June 9, 2022, 4:59 p.m. UTC | #1
* Daniel P. Berrangé (berrange@redhat.com) wrote:
> Now that all QEMUFile callbacks are removed, the entire concept can be
> deleted.
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

I think that's OK, there's one nit - you remove qemu_get_fd from one of
the headers; I think that probably belongs in an earlier patch.

Other than that,


Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> ---
>  migration/channel.c           |  4 +--
>  migration/colo.c              |  5 ++--
>  migration/meson.build         |  1 -
>  migration/migration.c         |  7 ++---
>  migration/qemu-file-channel.c | 53 -----------------------------------
>  migration/qemu-file-channel.h | 32 ---------------------
>  migration/qemu-file.c         | 20 ++++++-------
>  migration/qemu-file.h         |  8 ++----
>  migration/ram.c               |  3 +-
>  migration/rdma.c              |  5 ++--
>  migration/savevm.c            | 11 ++++----
>  tests/unit/test-vmstate.c     |  5 ++--
>  12 files changed, 27 insertions(+), 127 deletions(-)
>  delete mode 100644 migration/qemu-file-channel.c
>  delete mode 100644 migration/qemu-file-channel.h
> 
> diff --git a/migration/channel.c b/migration/channel.c
> index a162d00fea..90087d8986 100644
> --- a/migration/channel.c
> +++ b/migration/channel.c
> @@ -14,7 +14,7 @@
>  #include "channel.h"
>  #include "tls.h"
>  #include "migration.h"
> -#include "qemu-file-channel.h"
> +#include "qemu-file.h"
>  #include "trace.h"
>  #include "qapi/error.h"
>  #include "io/channel-tls.h"
> @@ -85,7 +85,7 @@ void migration_channel_connect(MigrationState *s,
>                  return;
>              }
>          } else {
> -            QEMUFile *f = qemu_fopen_channel_output(ioc);
> +            QEMUFile *f = qemu_file_new_output(ioc);
>  
>              migration_ioc_register_yank(ioc);
>  
> diff --git a/migration/colo.c b/migration/colo.c
> index 5f7071b3cd..2b71722fd6 100644
> --- a/migration/colo.c
> +++ b/migration/colo.c
> @@ -14,7 +14,6 @@
>  #include "sysemu/sysemu.h"
>  #include "qapi/error.h"
>  #include "qapi/qapi-commands-migration.h"
> -#include "qemu-file-channel.h"
>  #include "migration.h"
>  #include "qemu-file.h"
>  #include "savevm.h"
> @@ -559,7 +558,7 @@ static void colo_process_checkpoint(MigrationState *s)
>          goto out;
>      }
>      bioc = qio_channel_buffer_new(COLO_BUFFER_BASE_SIZE);
> -    fb = qemu_fopen_channel_output(QIO_CHANNEL(bioc));
> +    fb = qemu_file_new_output(QIO_CHANNEL(bioc));
>      object_unref(OBJECT(bioc));
>  
>      qemu_mutex_lock_iothread();
> @@ -873,7 +872,7 @@ void *colo_process_incoming_thread(void *opaque)
>      colo_incoming_start_dirty_log();
>  
>      bioc = qio_channel_buffer_new(COLO_BUFFER_BASE_SIZE);
> -    fb = qemu_fopen_channel_input(QIO_CHANNEL(bioc));
> +    fb = qemu_file_new_input(QIO_CHANNEL(bioc));
>      object_unref(OBJECT(bioc));
>  
>      qemu_mutex_lock_iothread();
> diff --git a/migration/meson.build b/migration/meson.build
> index 8d309f5849..690487cf1a 100644
> --- a/migration/meson.build
> +++ b/migration/meson.build
> @@ -4,7 +4,6 @@ migration_files = files(
>    'xbzrle.c',
>    'vmstate-types.c',
>    'vmstate.c',
> -  'qemu-file-channel.c',
>    'qemu-file.c',
>    'yank_functions.c',
>  )
> diff --git a/migration/migration.c b/migration/migration.c
> index ab1e9610ef..8a30ef17d9 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -30,7 +30,6 @@
>  #include "migration/misc.h"
>  #include "migration.h"
>  #include "savevm.h"
> -#include "qemu-file-channel.h"
>  #include "qemu-file.h"
>  #include "migration/vmstate.h"
>  #include "block/block.h"
> @@ -722,7 +721,7 @@ void migration_ioc_process_incoming(QIOChannel *ioc, Error **errp)
>  
>      if (!mis->from_src_file) {
>          /* The first connection (multifd may have multiple) */
> -        QEMUFile *f = qemu_fopen_channel_input(ioc);
> +        QEMUFile *f = qemu_file_new_input(ioc);
>  
>          if (!migration_incoming_setup(f, errp)) {
>              return;
> @@ -3081,7 +3080,7 @@ static int postcopy_start(MigrationState *ms)
>       */
>      bioc = qio_channel_buffer_new(4096);
>      qio_channel_set_name(QIO_CHANNEL(bioc), "migration-postcopy-buffer");
> -    fb = qemu_fopen_channel_output(QIO_CHANNEL(bioc));
> +    fb = qemu_file_new_output(QIO_CHANNEL(bioc));
>      object_unref(OBJECT(bioc));
>  
>      /*
> @@ -3970,7 +3969,7 @@ static void *bg_migration_thread(void *opaque)
>       */
>      s->bioc = qio_channel_buffer_new(512 * 1024);
>      qio_channel_set_name(QIO_CHANNEL(s->bioc), "vmstate-buffer");
> -    fb = qemu_fopen_channel_output(QIO_CHANNEL(s->bioc));
> +    fb = qemu_file_new_output(QIO_CHANNEL(s->bioc));
>      object_unref(OBJECT(s->bioc));
>  
>      update_iteration_initial_status(s);
> diff --git a/migration/qemu-file-channel.c b/migration/qemu-file-channel.c
> deleted file mode 100644
> index 51717c1137..0000000000
> --- a/migration/qemu-file-channel.c
> +++ /dev/null
> @@ -1,53 +0,0 @@
> -/*
> - * QEMUFile backend for QIOChannel objects
> - *
> - * Copyright (c) 2015-2016 Red Hat, Inc
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a copy
> - * of this software and associated documentation files (the "Software"), to deal
> - * in the Software without restriction, including without limitation the rights
> - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> - * copies of the Software, and to permit persons to whom the Software is
> - * furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice shall be included in
> - * all copies or substantial portions of the Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> - * THE SOFTWARE.
> - */
> -
> -#include "qemu/osdep.h"
> -#include "qemu-file-channel.h"
> -#include "qemu-file.h"
> -#include "io/channel-socket.h"
> -#include "io/channel-tls.h"
> -#include "qemu/iov.h"
> -#include "qemu/yank.h"
> -#include "yank_functions.h"
> -
> -
> -static const QEMUFileOps channel_input_ops = {
> -};
> -
> -
> -static const QEMUFileOps channel_output_ops = {
> -};
> -
> -
> -QEMUFile *qemu_fopen_channel_input(QIOChannel *ioc)
> -{
> -    object_ref(OBJECT(ioc));
> -    return qemu_file_new_input(ioc, &channel_input_ops);
> -}
> -
> -QEMUFile *qemu_fopen_channel_output(QIOChannel *ioc)
> -{
> -    object_ref(OBJECT(ioc));
> -    return qemu_file_new_output(ioc, &channel_output_ops);
> -}
> diff --git a/migration/qemu-file-channel.h b/migration/qemu-file-channel.h
> deleted file mode 100644
> index 0028a09eb6..0000000000
> --- a/migration/qemu-file-channel.h
> +++ /dev/null
> @@ -1,32 +0,0 @@
> -/*
> - * QEMUFile backend for QIOChannel objects
> - *
> - * Copyright (c) 2015-2016 Red Hat, Inc
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a copy
> - * of this software and associated documentation files (the "Software"), to deal
> - * in the Software without restriction, including without limitation the rights
> - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> - * copies of the Software, and to permit persons to whom the Software is
> - * furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice shall be included in
> - * all copies or substantial portions of the Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> - * THE SOFTWARE.
> - */
> -
> -#ifndef QEMU_FILE_CHANNEL_H
> -#define QEMU_FILE_CHANNEL_H
> -
> -#include "io/channel.h"
> -
> -QEMUFile *qemu_fopen_channel_input(QIOChannel *ioc);
> -QEMUFile *qemu_fopen_channel_output(QIOChannel *ioc);
> -#endif
> diff --git a/migration/qemu-file.c b/migration/qemu-file.c
> index dfee808924..81688b7a23 100644
> --- a/migration/qemu-file.c
> +++ b/migration/qemu-file.c
> @@ -35,7 +35,6 @@
>  #define MAX_IOV_SIZE MIN_CONST(IOV_MAX, 64)
>  
>  struct QEMUFile {
> -    const QEMUFileOps *ops;
>      const QEMUFileHooks *hooks;
>      QIOChannel *ioc;
>      bool is_writable;
> @@ -104,16 +103,14 @@ bool qemu_file_mode_is_not_valid(const char *mode)
>      return false;
>  }
>  
> -static QEMUFile *qemu_file_new_impl(QIOChannel *ioc,
> -                                    const QEMUFileOps *ops,
> -                                    bool is_writable)
> +static QEMUFile *qemu_file_new_impl(QIOChannel *ioc, bool is_writable)
>  {
>      QEMUFile *f;
>  
>      f = g_new0(QEMUFile, 1);
>  
> +    object_ref(ioc);
>      f->ioc = ioc;
> -    f->ops = ops;
>      f->is_writable = is_writable;
>  
>      return f;
> @@ -125,21 +122,19 @@ static QEMUFile *qemu_file_new_impl(QIOChannel *ioc,
>   */
>  QEMUFile *qemu_file_get_return_path(QEMUFile *f)
>  {
> -    object_ref(f->ioc);
> -    return qemu_file_new_impl(f->ioc, f->ops, !f->is_writable);
> +    return qemu_file_new_impl(f->ioc, !f->is_writable);
>  }
>  
> -QEMUFile *qemu_file_new_output(QIOChannel *ioc, const QEMUFileOps *ops)
> +QEMUFile *qemu_file_new_output(QIOChannel *ioc)
>  {
> -    return qemu_file_new_impl(ioc, ops, true);
> +    return qemu_file_new_impl(ioc, true);
>  }
>  
> -QEMUFile *qemu_file_new_input(QIOChannel *ioc, const QEMUFileOps *ops)
> +QEMUFile *qemu_file_new_input(QIOChannel *ioc)
>  {
> -    return qemu_file_new_impl(ioc, ops, false);
> +    return qemu_file_new_impl(ioc, false);
>  }
>  
> -
>  void qemu_file_set_hooks(QEMUFile *f, const QEMUFileHooks *hooks)
>  {
>      f->hooks = hooks;
> @@ -235,6 +230,7 @@ static void qemu_iovec_release_ram(QEMUFile *f)
>      memset(f->may_free, 0, sizeof(f->may_free));
>  }
>  
> +
>  /**
>   * Flushes QEMUFile buffer
>   *
> diff --git a/migration/qemu-file.h b/migration/qemu-file.h
> index 5370e4e5ec..12e625f96a 100644
> --- a/migration/qemu-file.h
> +++ b/migration/qemu-file.h
> @@ -55,9 +55,6 @@ typedef size_t (QEMURamSaveFunc)(QEMUFile *f,
>                                   size_t size,
>                                   uint64_t *bytes_sent);
>  
> -typedef struct QEMUFileOps {
> -} QEMUFileOps;
> -
>  typedef struct QEMUFileHooks {
>      QEMURamHookFunc *before_ram_iterate;
>      QEMURamHookFunc *after_ram_iterate;
> @@ -65,10 +62,9 @@ typedef struct QEMUFileHooks {
>      QEMURamSaveFunc *save_page;
>  } QEMUFileHooks;
>  
> -QEMUFile *qemu_file_new_input(QIOChannel *ioc, const QEMUFileOps *ops);
> -QEMUFile *qemu_file_new_output(QIOChannel *ioc, const QEMUFileOps *ops);
> +QEMUFile *qemu_file_new_input(QIOChannel *ioc);
> +QEMUFile *qemu_file_new_output(QIOChannel *ioc);
>  void qemu_file_set_hooks(QEMUFile *f, const QEMUFileHooks *hooks);
> -int qemu_get_fd(QEMUFile *f);
>  int qemu_fclose(QEMUFile *f);
>  
>  /*
> diff --git a/migration/ram.c b/migration/ram.c
> index bf321e1e72..01f9cc1d72 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -38,7 +38,6 @@
>  #include "migration.h"
>  #include "migration/register.h"
>  #include "migration/misc.h"
> -#include "migration/qemu-file-channel.h"
>  #include "qemu-file.h"
>  #include "postcopy-ram.h"
>  #include "page_cache.h"
> @@ -569,7 +568,7 @@ static int compress_threads_save_setup(void)
>          /* comp_param[i].file is just used as a dummy buffer to save data,
>           * set its ops to empty.
>           */
> -        comp_param[i].file = qemu_fopen_channel_output(
> +        comp_param[i].file = qemu_file_new_output(
>              QIO_CHANNEL(qio_channel_null_new()));
>          comp_param[i].done = true;
>          comp_param[i].quit = false;
> diff --git a/migration/rdma.c b/migration/rdma.c
> index 83265513d9..49e6dba323 100644
> --- a/migration/rdma.c
> +++ b/migration/rdma.c
> @@ -21,7 +21,6 @@
>  #include "migration.h"
>  #include "qemu-file.h"
>  #include "ram.h"
> -#include "qemu-file-channel.h"
>  #include "qemu/error-report.h"
>  #include "qemu/main-loop.h"
>  #include "qemu/module.h"
> @@ -4093,12 +4092,12 @@ static QEMUFile *qemu_fopen_rdma(RDMAContext *rdma, const char *mode)
>      rioc = QIO_CHANNEL_RDMA(object_new(TYPE_QIO_CHANNEL_RDMA));
>  
>      if (mode[0] == 'w') {
> -        rioc->file = qemu_fopen_channel_output(QIO_CHANNEL(rioc));
> +        rioc->file = qemu_file_new_output(QIO_CHANNEL(rioc));
>          rioc->rdmaout = rdma;
>          rioc->rdmain = rdma->return_path;
>          qemu_file_set_hooks(rioc->file, &rdma_write_hooks);
>      } else {
> -        rioc->file = qemu_fopen_channel_input(QIO_CHANNEL(rioc));
> +        rioc->file = qemu_file_new_input(QIO_CHANNEL(rioc));
>          rioc->rdmain = rdma;
>          rioc->rdmaout = rdma->return_path;
>          qemu_file_set_hooks(rioc->file, &rdma_read_hooks);
> diff --git a/migration/savevm.c b/migration/savevm.c
> index 24a50376dc..e8a1b96fcd 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -37,7 +37,6 @@
>  #include "migration/global_state.h"
>  #include "migration/channel-block.h"
>  #include "ram.h"
> -#include "qemu-file-channel.h"
>  #include "qemu-file.h"
>  #include "savevm.h"
>  #include "postcopy-ram.h"
> @@ -134,9 +133,9 @@ static struct mig_cmd_args {
>  static QEMUFile *qemu_fopen_bdrv(BlockDriverState *bs, int is_writable)
>  {
>      if (is_writable) {
> -        return qemu_fopen_channel_output(QIO_CHANNEL(qio_channel_block_new(bs)));
> +        return qemu_file_new_output(QIO_CHANNEL(qio_channel_block_new(bs)));
>      } else {
> -        return qemu_fopen_channel_input(QIO_CHANNEL(qio_channel_block_new(bs)));
> +        return qemu_file_new_input(QIO_CHANNEL(qio_channel_block_new(bs)));
>      }
>  }
>  
> @@ -2159,7 +2158,7 @@ static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis)
>      bioc->usage += length;
>      trace_loadvm_handle_cmd_packaged_received(ret);
>  
> -    QEMUFile *packf = qemu_fopen_channel_input(QIO_CHANNEL(bioc));
> +    QEMUFile *packf = qemu_file_new_input(QIO_CHANNEL(bioc));
>  
>      ret = qemu_loadvm_state_main(packf, mis);
>      trace_loadvm_handle_cmd_packaged_main(ret);
> @@ -2917,7 +2916,7 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,
>          goto the_end;
>      }
>      qio_channel_set_name(QIO_CHANNEL(ioc), "migration-xen-save-state");
> -    f = qemu_fopen_channel_output(QIO_CHANNEL(ioc));
> +    f = qemu_file_new_output(QIO_CHANNEL(ioc));
>      object_unref(OBJECT(ioc));
>      ret = qemu_save_device_state(f);
>      if (ret < 0 || qemu_fclose(f) < 0) {
> @@ -2964,7 +2963,7 @@ void qmp_xen_load_devices_state(const char *filename, Error **errp)
>          return;
>      }
>      qio_channel_set_name(QIO_CHANNEL(ioc), "migration-xen-load-state");
> -    f = qemu_fopen_channel_input(QIO_CHANNEL(ioc));
> +    f = qemu_file_new_input(QIO_CHANNEL(ioc));
>      object_unref(OBJECT(ioc));
>  
>      ret = qemu_loadvm_state(f);
> diff --git a/tests/unit/test-vmstate.c b/tests/unit/test-vmstate.c
> index 6a417bb102..72077b5780 100644
> --- a/tests/unit/test-vmstate.c
> +++ b/tests/unit/test-vmstate.c
> @@ -28,7 +28,6 @@
>  #include "migration/vmstate.h"
>  #include "migration/qemu-file-types.h"
>  #include "../migration/qemu-file.h"
> -#include "../migration/qemu-file-channel.h"
>  #include "../migration/savevm.h"
>  #include "qemu/coroutine.h"
>  #include "qemu/module.h"
> @@ -52,9 +51,9 @@ static QEMUFile *open_test_file(bool write)
>      }
>      ioc = QIO_CHANNEL(qio_channel_file_new_fd(fd));
>      if (write) {
> -        f = qemu_fopen_channel_output(ioc);
> +        f = qemu_file_new_output(ioc);
>      } else {
> -        f = qemu_fopen_channel_input(ioc);
> +        f = qemu_file_new_input(ioc);
>      }
>      object_unref(OBJECT(ioc));
>      return f;
> -- 
> 2.36.1
>
Daniel P. Berrangé June 9, 2022, 5:10 p.m. UTC | #2
On Thu, Jun 09, 2022 at 05:59:00PM +0100, Dr. David Alan Gilbert wrote:
> * Daniel P. Berrangé (berrange@redhat.com) wrote:
> > Now that all QEMUFile callbacks are removed, the entire concept can be
> > deleted.
> > 
> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> 
> I think that's OK, there's one nit - you remove qemu_get_fd from one of
> the headers; I think that probably belongs in an earlier patch.

Oh should probably be squashed back into patch 13, which removes
the corresponding unused callback typedef.

> 
> Other than that,
> 
> 
> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> 
> > ---
> >  migration/channel.c           |  4 +--
> >  migration/colo.c              |  5 ++--
> >  migration/meson.build         |  1 -
> >  migration/migration.c         |  7 ++---
> >  migration/qemu-file-channel.c | 53 -----------------------------------
> >  migration/qemu-file-channel.h | 32 ---------------------
> >  migration/qemu-file.c         | 20 ++++++-------
> >  migration/qemu-file.h         |  8 ++----
> >  migration/ram.c               |  3 +-
> >  migration/rdma.c              |  5 ++--
> >  migration/savevm.c            | 11 ++++----
> >  tests/unit/test-vmstate.c     |  5 ++--
> >  12 files changed, 27 insertions(+), 127 deletions(-)
> >  delete mode 100644 migration/qemu-file-channel.c
> >  delete mode 100644 migration/qemu-file-channel.h
> > 
> > diff --git a/migration/channel.c b/migration/channel.c
> > index a162d00fea..90087d8986 100644
> > --- a/migration/channel.c
> > +++ b/migration/channel.c
> > @@ -14,7 +14,7 @@
> >  #include "channel.h"
> >  #include "tls.h"
> >  #include "migration.h"
> > -#include "qemu-file-channel.h"
> > +#include "qemu-file.h"
> >  #include "trace.h"
> >  #include "qapi/error.h"
> >  #include "io/channel-tls.h"
> > @@ -85,7 +85,7 @@ void migration_channel_connect(MigrationState *s,
> >                  return;
> >              }
> >          } else {
> > -            QEMUFile *f = qemu_fopen_channel_output(ioc);
> > +            QEMUFile *f = qemu_file_new_output(ioc);
> >  
> >              migration_ioc_register_yank(ioc);
> >  
> > diff --git a/migration/colo.c b/migration/colo.c
> > index 5f7071b3cd..2b71722fd6 100644
> > --- a/migration/colo.c
> > +++ b/migration/colo.c
> > @@ -14,7 +14,6 @@
> >  #include "sysemu/sysemu.h"
> >  #include "qapi/error.h"
> >  #include "qapi/qapi-commands-migration.h"
> > -#include "qemu-file-channel.h"
> >  #include "migration.h"
> >  #include "qemu-file.h"
> >  #include "savevm.h"
> > @@ -559,7 +558,7 @@ static void colo_process_checkpoint(MigrationState *s)
> >          goto out;
> >      }
> >      bioc = qio_channel_buffer_new(COLO_BUFFER_BASE_SIZE);
> > -    fb = qemu_fopen_channel_output(QIO_CHANNEL(bioc));
> > +    fb = qemu_file_new_output(QIO_CHANNEL(bioc));
> >      object_unref(OBJECT(bioc));
> >  
> >      qemu_mutex_lock_iothread();
> > @@ -873,7 +872,7 @@ void *colo_process_incoming_thread(void *opaque)
> >      colo_incoming_start_dirty_log();
> >  
> >      bioc = qio_channel_buffer_new(COLO_BUFFER_BASE_SIZE);
> > -    fb = qemu_fopen_channel_input(QIO_CHANNEL(bioc));
> > +    fb = qemu_file_new_input(QIO_CHANNEL(bioc));
> >      object_unref(OBJECT(bioc));
> >  
> >      qemu_mutex_lock_iothread();
> > diff --git a/migration/meson.build b/migration/meson.build
> > index 8d309f5849..690487cf1a 100644
> > --- a/migration/meson.build
> > +++ b/migration/meson.build
> > @@ -4,7 +4,6 @@ migration_files = files(
> >    'xbzrle.c',
> >    'vmstate-types.c',
> >    'vmstate.c',
> > -  'qemu-file-channel.c',
> >    'qemu-file.c',
> >    'yank_functions.c',
> >  )
> > diff --git a/migration/migration.c b/migration/migration.c
> > index ab1e9610ef..8a30ef17d9 100644
> > --- a/migration/migration.c
> > +++ b/migration/migration.c
> > @@ -30,7 +30,6 @@
> >  #include "migration/misc.h"
> >  #include "migration.h"
> >  #include "savevm.h"
> > -#include "qemu-file-channel.h"
> >  #include "qemu-file.h"
> >  #include "migration/vmstate.h"
> >  #include "block/block.h"
> > @@ -722,7 +721,7 @@ void migration_ioc_process_incoming(QIOChannel *ioc, Error **errp)
> >  
> >      if (!mis->from_src_file) {
> >          /* The first connection (multifd may have multiple) */
> > -        QEMUFile *f = qemu_fopen_channel_input(ioc);
> > +        QEMUFile *f = qemu_file_new_input(ioc);
> >  
> >          if (!migration_incoming_setup(f, errp)) {
> >              return;
> > @@ -3081,7 +3080,7 @@ static int postcopy_start(MigrationState *ms)
> >       */
> >      bioc = qio_channel_buffer_new(4096);
> >      qio_channel_set_name(QIO_CHANNEL(bioc), "migration-postcopy-buffer");
> > -    fb = qemu_fopen_channel_output(QIO_CHANNEL(bioc));
> > +    fb = qemu_file_new_output(QIO_CHANNEL(bioc));
> >      object_unref(OBJECT(bioc));
> >  
> >      /*
> > @@ -3970,7 +3969,7 @@ static void *bg_migration_thread(void *opaque)
> >       */
> >      s->bioc = qio_channel_buffer_new(512 * 1024);
> >      qio_channel_set_name(QIO_CHANNEL(s->bioc), "vmstate-buffer");
> > -    fb = qemu_fopen_channel_output(QIO_CHANNEL(s->bioc));
> > +    fb = qemu_file_new_output(QIO_CHANNEL(s->bioc));
> >      object_unref(OBJECT(s->bioc));
> >  
> >      update_iteration_initial_status(s);
> > diff --git a/migration/qemu-file-channel.c b/migration/qemu-file-channel.c
> > deleted file mode 100644
> > index 51717c1137..0000000000
> > --- a/migration/qemu-file-channel.c
> > +++ /dev/null
> > @@ -1,53 +0,0 @@
> > -/*
> > - * QEMUFile backend for QIOChannel objects
> > - *
> > - * Copyright (c) 2015-2016 Red Hat, Inc
> > - *
> > - * Permission is hereby granted, free of charge, to any person obtaining a copy
> > - * of this software and associated documentation files (the "Software"), to deal
> > - * in the Software without restriction, including without limitation the rights
> > - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > - * copies of the Software, and to permit persons to whom the Software is
> > - * furnished to do so, subject to the following conditions:
> > - *
> > - * The above copyright notice and this permission notice shall be included in
> > - * all copies or substantial portions of the Software.
> > - *
> > - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> > - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> > - * THE SOFTWARE.
> > - */
> > -
> > -#include "qemu/osdep.h"
> > -#include "qemu-file-channel.h"
> > -#include "qemu-file.h"
> > -#include "io/channel-socket.h"
> > -#include "io/channel-tls.h"
> > -#include "qemu/iov.h"
> > -#include "qemu/yank.h"
> > -#include "yank_functions.h"
> > -
> > -
> > -static const QEMUFileOps channel_input_ops = {
> > -};
> > -
> > -
> > -static const QEMUFileOps channel_output_ops = {
> > -};
> > -
> > -
> > -QEMUFile *qemu_fopen_channel_input(QIOChannel *ioc)
> > -{
> > -    object_ref(OBJECT(ioc));
> > -    return qemu_file_new_input(ioc, &channel_input_ops);
> > -}
> > -
> > -QEMUFile *qemu_fopen_channel_output(QIOChannel *ioc)
> > -{
> > -    object_ref(OBJECT(ioc));
> > -    return qemu_file_new_output(ioc, &channel_output_ops);
> > -}
> > diff --git a/migration/qemu-file-channel.h b/migration/qemu-file-channel.h
> > deleted file mode 100644
> > index 0028a09eb6..0000000000
> > --- a/migration/qemu-file-channel.h
> > +++ /dev/null
> > @@ -1,32 +0,0 @@
> > -/*
> > - * QEMUFile backend for QIOChannel objects
> > - *
> > - * Copyright (c) 2015-2016 Red Hat, Inc
> > - *
> > - * Permission is hereby granted, free of charge, to any person obtaining a copy
> > - * of this software and associated documentation files (the "Software"), to deal
> > - * in the Software without restriction, including without limitation the rights
> > - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> > - * copies of the Software, and to permit persons to whom the Software is
> > - * furnished to do so, subject to the following conditions:
> > - *
> > - * The above copyright notice and this permission notice shall be included in
> > - * all copies or substantial portions of the Software.
> > - *
> > - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> > - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> > - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> > - * THE SOFTWARE.
> > - */
> > -
> > -#ifndef QEMU_FILE_CHANNEL_H
> > -#define QEMU_FILE_CHANNEL_H
> > -
> > -#include "io/channel.h"
> > -
> > -QEMUFile *qemu_fopen_channel_input(QIOChannel *ioc);
> > -QEMUFile *qemu_fopen_channel_output(QIOChannel *ioc);
> > -#endif
> > diff --git a/migration/qemu-file.c b/migration/qemu-file.c
> > index dfee808924..81688b7a23 100644
> > --- a/migration/qemu-file.c
> > +++ b/migration/qemu-file.c
> > @@ -35,7 +35,6 @@
> >  #define MAX_IOV_SIZE MIN_CONST(IOV_MAX, 64)
> >  
> >  struct QEMUFile {
> > -    const QEMUFileOps *ops;
> >      const QEMUFileHooks *hooks;
> >      QIOChannel *ioc;
> >      bool is_writable;
> > @@ -104,16 +103,14 @@ bool qemu_file_mode_is_not_valid(const char *mode)
> >      return false;
> >  }
> >  
> > -static QEMUFile *qemu_file_new_impl(QIOChannel *ioc,
> > -                                    const QEMUFileOps *ops,
> > -                                    bool is_writable)
> > +static QEMUFile *qemu_file_new_impl(QIOChannel *ioc, bool is_writable)
> >  {
> >      QEMUFile *f;
> >  
> >      f = g_new0(QEMUFile, 1);
> >  
> > +    object_ref(ioc);
> >      f->ioc = ioc;
> > -    f->ops = ops;
> >      f->is_writable = is_writable;
> >  
> >      return f;
> > @@ -125,21 +122,19 @@ static QEMUFile *qemu_file_new_impl(QIOChannel *ioc,
> >   */
> >  QEMUFile *qemu_file_get_return_path(QEMUFile *f)
> >  {
> > -    object_ref(f->ioc);
> > -    return qemu_file_new_impl(f->ioc, f->ops, !f->is_writable);
> > +    return qemu_file_new_impl(f->ioc, !f->is_writable);
> >  }
> >  
> > -QEMUFile *qemu_file_new_output(QIOChannel *ioc, const QEMUFileOps *ops)
> > +QEMUFile *qemu_file_new_output(QIOChannel *ioc)
> >  {
> > -    return qemu_file_new_impl(ioc, ops, true);
> > +    return qemu_file_new_impl(ioc, true);
> >  }
> >  
> > -QEMUFile *qemu_file_new_input(QIOChannel *ioc, const QEMUFileOps *ops)
> > +QEMUFile *qemu_file_new_input(QIOChannel *ioc)
> >  {
> > -    return qemu_file_new_impl(ioc, ops, false);
> > +    return qemu_file_new_impl(ioc, false);
> >  }
> >  
> > -
> >  void qemu_file_set_hooks(QEMUFile *f, const QEMUFileHooks *hooks)
> >  {
> >      f->hooks = hooks;
> > @@ -235,6 +230,7 @@ static void qemu_iovec_release_ram(QEMUFile *f)
> >      memset(f->may_free, 0, sizeof(f->may_free));
> >  }
> >  
> > +
> >  /**
> >   * Flushes QEMUFile buffer
> >   *
> > diff --git a/migration/qemu-file.h b/migration/qemu-file.h
> > index 5370e4e5ec..12e625f96a 100644
> > --- a/migration/qemu-file.h
> > +++ b/migration/qemu-file.h
> > @@ -55,9 +55,6 @@ typedef size_t (QEMURamSaveFunc)(QEMUFile *f,
> >                                   size_t size,
> >                                   uint64_t *bytes_sent);
> >  
> > -typedef struct QEMUFileOps {
> > -} QEMUFileOps;
> > -
> >  typedef struct QEMUFileHooks {
> >      QEMURamHookFunc *before_ram_iterate;
> >      QEMURamHookFunc *after_ram_iterate;
> > @@ -65,10 +62,9 @@ typedef struct QEMUFileHooks {
> >      QEMURamSaveFunc *save_page;
> >  } QEMUFileHooks;
> >  
> > -QEMUFile *qemu_file_new_input(QIOChannel *ioc, const QEMUFileOps *ops);
> > -QEMUFile *qemu_file_new_output(QIOChannel *ioc, const QEMUFileOps *ops);
> > +QEMUFile *qemu_file_new_input(QIOChannel *ioc);
> > +QEMUFile *qemu_file_new_output(QIOChannel *ioc);
> >  void qemu_file_set_hooks(QEMUFile *f, const QEMUFileHooks *hooks);
> > -int qemu_get_fd(QEMUFile *f);
> >  int qemu_fclose(QEMUFile *f);
> >  
> >  /*
> > diff --git a/migration/ram.c b/migration/ram.c
> > index bf321e1e72..01f9cc1d72 100644
> > --- a/migration/ram.c
> > +++ b/migration/ram.c
> > @@ -38,7 +38,6 @@
> >  #include "migration.h"
> >  #include "migration/register.h"
> >  #include "migration/misc.h"
> > -#include "migration/qemu-file-channel.h"
> >  #include "qemu-file.h"
> >  #include "postcopy-ram.h"
> >  #include "page_cache.h"
> > @@ -569,7 +568,7 @@ static int compress_threads_save_setup(void)
> >          /* comp_param[i].file is just used as a dummy buffer to save data,
> >           * set its ops to empty.
> >           */
> > -        comp_param[i].file = qemu_fopen_channel_output(
> > +        comp_param[i].file = qemu_file_new_output(
> >              QIO_CHANNEL(qio_channel_null_new()));
> >          comp_param[i].done = true;
> >          comp_param[i].quit = false;
> > diff --git a/migration/rdma.c b/migration/rdma.c
> > index 83265513d9..49e6dba323 100644
> > --- a/migration/rdma.c
> > +++ b/migration/rdma.c
> > @@ -21,7 +21,6 @@
> >  #include "migration.h"
> >  #include "qemu-file.h"
> >  #include "ram.h"
> > -#include "qemu-file-channel.h"
> >  #include "qemu/error-report.h"
> >  #include "qemu/main-loop.h"
> >  #include "qemu/module.h"
> > @@ -4093,12 +4092,12 @@ static QEMUFile *qemu_fopen_rdma(RDMAContext *rdma, const char *mode)
> >      rioc = QIO_CHANNEL_RDMA(object_new(TYPE_QIO_CHANNEL_RDMA));
> >  
> >      if (mode[0] == 'w') {
> > -        rioc->file = qemu_fopen_channel_output(QIO_CHANNEL(rioc));
> > +        rioc->file = qemu_file_new_output(QIO_CHANNEL(rioc));
> >          rioc->rdmaout = rdma;
> >          rioc->rdmain = rdma->return_path;
> >          qemu_file_set_hooks(rioc->file, &rdma_write_hooks);
> >      } else {
> > -        rioc->file = qemu_fopen_channel_input(QIO_CHANNEL(rioc));
> > +        rioc->file = qemu_file_new_input(QIO_CHANNEL(rioc));
> >          rioc->rdmain = rdma;
> >          rioc->rdmaout = rdma->return_path;
> >          qemu_file_set_hooks(rioc->file, &rdma_read_hooks);
> > diff --git a/migration/savevm.c b/migration/savevm.c
> > index 24a50376dc..e8a1b96fcd 100644
> > --- a/migration/savevm.c
> > +++ b/migration/savevm.c
> > @@ -37,7 +37,6 @@
> >  #include "migration/global_state.h"
> >  #include "migration/channel-block.h"
> >  #include "ram.h"
> > -#include "qemu-file-channel.h"
> >  #include "qemu-file.h"
> >  #include "savevm.h"
> >  #include "postcopy-ram.h"
> > @@ -134,9 +133,9 @@ static struct mig_cmd_args {
> >  static QEMUFile *qemu_fopen_bdrv(BlockDriverState *bs, int is_writable)
> >  {
> >      if (is_writable) {
> > -        return qemu_fopen_channel_output(QIO_CHANNEL(qio_channel_block_new(bs)));
> > +        return qemu_file_new_output(QIO_CHANNEL(qio_channel_block_new(bs)));
> >      } else {
> > -        return qemu_fopen_channel_input(QIO_CHANNEL(qio_channel_block_new(bs)));
> > +        return qemu_file_new_input(QIO_CHANNEL(qio_channel_block_new(bs)));
> >      }
> >  }
> >  
> > @@ -2159,7 +2158,7 @@ static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis)
> >      bioc->usage += length;
> >      trace_loadvm_handle_cmd_packaged_received(ret);
> >  
> > -    QEMUFile *packf = qemu_fopen_channel_input(QIO_CHANNEL(bioc));
> > +    QEMUFile *packf = qemu_file_new_input(QIO_CHANNEL(bioc));
> >  
> >      ret = qemu_loadvm_state_main(packf, mis);
> >      trace_loadvm_handle_cmd_packaged_main(ret);
> > @@ -2917,7 +2916,7 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,
> >          goto the_end;
> >      }
> >      qio_channel_set_name(QIO_CHANNEL(ioc), "migration-xen-save-state");
> > -    f = qemu_fopen_channel_output(QIO_CHANNEL(ioc));
> > +    f = qemu_file_new_output(QIO_CHANNEL(ioc));
> >      object_unref(OBJECT(ioc));
> >      ret = qemu_save_device_state(f);
> >      if (ret < 0 || qemu_fclose(f) < 0) {
> > @@ -2964,7 +2963,7 @@ void qmp_xen_load_devices_state(const char *filename, Error **errp)
> >          return;
> >      }
> >      qio_channel_set_name(QIO_CHANNEL(ioc), "migration-xen-load-state");
> > -    f = qemu_fopen_channel_input(QIO_CHANNEL(ioc));
> > +    f = qemu_file_new_input(QIO_CHANNEL(ioc));
> >      object_unref(OBJECT(ioc));
> >  
> >      ret = qemu_loadvm_state(f);
> > diff --git a/tests/unit/test-vmstate.c b/tests/unit/test-vmstate.c
> > index 6a417bb102..72077b5780 100644
> > --- a/tests/unit/test-vmstate.c
> > +++ b/tests/unit/test-vmstate.c
> > @@ -28,7 +28,6 @@
> >  #include "migration/vmstate.h"
> >  #include "migration/qemu-file-types.h"
> >  #include "../migration/qemu-file.h"
> > -#include "../migration/qemu-file-channel.h"
> >  #include "../migration/savevm.h"
> >  #include "qemu/coroutine.h"
> >  #include "qemu/module.h"
> > @@ -52,9 +51,9 @@ static QEMUFile *open_test_file(bool write)
> >      }
> >      ioc = QIO_CHANNEL(qio_channel_file_new_fd(fd));
> >      if (write) {
> > -        f = qemu_fopen_channel_output(ioc);
> > +        f = qemu_file_new_output(ioc);
> >      } else {
> > -        f = qemu_fopen_channel_input(ioc);
> > +        f = qemu_file_new_input(ioc);
> >      }
> >      object_unref(OBJECT(ioc));
> >      return f;
> > -- 
> > 2.36.1
> > 
> -- 
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> 

With regards,
Daniel
diff mbox series

Patch

diff --git a/migration/channel.c b/migration/channel.c
index a162d00fea..90087d8986 100644
--- a/migration/channel.c
+++ b/migration/channel.c
@@ -14,7 +14,7 @@ 
 #include "channel.h"
 #include "tls.h"
 #include "migration.h"
-#include "qemu-file-channel.h"
+#include "qemu-file.h"
 #include "trace.h"
 #include "qapi/error.h"
 #include "io/channel-tls.h"
@@ -85,7 +85,7 @@  void migration_channel_connect(MigrationState *s,
                 return;
             }
         } else {
-            QEMUFile *f = qemu_fopen_channel_output(ioc);
+            QEMUFile *f = qemu_file_new_output(ioc);
 
             migration_ioc_register_yank(ioc);
 
diff --git a/migration/colo.c b/migration/colo.c
index 5f7071b3cd..2b71722fd6 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -14,7 +14,6 @@ 
 #include "sysemu/sysemu.h"
 #include "qapi/error.h"
 #include "qapi/qapi-commands-migration.h"
-#include "qemu-file-channel.h"
 #include "migration.h"
 #include "qemu-file.h"
 #include "savevm.h"
@@ -559,7 +558,7 @@  static void colo_process_checkpoint(MigrationState *s)
         goto out;
     }
     bioc = qio_channel_buffer_new(COLO_BUFFER_BASE_SIZE);
-    fb = qemu_fopen_channel_output(QIO_CHANNEL(bioc));
+    fb = qemu_file_new_output(QIO_CHANNEL(bioc));
     object_unref(OBJECT(bioc));
 
     qemu_mutex_lock_iothread();
@@ -873,7 +872,7 @@  void *colo_process_incoming_thread(void *opaque)
     colo_incoming_start_dirty_log();
 
     bioc = qio_channel_buffer_new(COLO_BUFFER_BASE_SIZE);
-    fb = qemu_fopen_channel_input(QIO_CHANNEL(bioc));
+    fb = qemu_file_new_input(QIO_CHANNEL(bioc));
     object_unref(OBJECT(bioc));
 
     qemu_mutex_lock_iothread();
diff --git a/migration/meson.build b/migration/meson.build
index 8d309f5849..690487cf1a 100644
--- a/migration/meson.build
+++ b/migration/meson.build
@@ -4,7 +4,6 @@  migration_files = files(
   'xbzrle.c',
   'vmstate-types.c',
   'vmstate.c',
-  'qemu-file-channel.c',
   'qemu-file.c',
   'yank_functions.c',
 )
diff --git a/migration/migration.c b/migration/migration.c
index ab1e9610ef..8a30ef17d9 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -30,7 +30,6 @@ 
 #include "migration/misc.h"
 #include "migration.h"
 #include "savevm.h"
-#include "qemu-file-channel.h"
 #include "qemu-file.h"
 #include "migration/vmstate.h"
 #include "block/block.h"
@@ -722,7 +721,7 @@  void migration_ioc_process_incoming(QIOChannel *ioc, Error **errp)
 
     if (!mis->from_src_file) {
         /* The first connection (multifd may have multiple) */
-        QEMUFile *f = qemu_fopen_channel_input(ioc);
+        QEMUFile *f = qemu_file_new_input(ioc);
 
         if (!migration_incoming_setup(f, errp)) {
             return;
@@ -3081,7 +3080,7 @@  static int postcopy_start(MigrationState *ms)
      */
     bioc = qio_channel_buffer_new(4096);
     qio_channel_set_name(QIO_CHANNEL(bioc), "migration-postcopy-buffer");
-    fb = qemu_fopen_channel_output(QIO_CHANNEL(bioc));
+    fb = qemu_file_new_output(QIO_CHANNEL(bioc));
     object_unref(OBJECT(bioc));
 
     /*
@@ -3970,7 +3969,7 @@  static void *bg_migration_thread(void *opaque)
      */
     s->bioc = qio_channel_buffer_new(512 * 1024);
     qio_channel_set_name(QIO_CHANNEL(s->bioc), "vmstate-buffer");
-    fb = qemu_fopen_channel_output(QIO_CHANNEL(s->bioc));
+    fb = qemu_file_new_output(QIO_CHANNEL(s->bioc));
     object_unref(OBJECT(s->bioc));
 
     update_iteration_initial_status(s);
diff --git a/migration/qemu-file-channel.c b/migration/qemu-file-channel.c
deleted file mode 100644
index 51717c1137..0000000000
--- a/migration/qemu-file-channel.c
+++ /dev/null
@@ -1,53 +0,0 @@ 
-/*
- * QEMUFile backend for QIOChannel objects
- *
- * Copyright (c) 2015-2016 Red Hat, Inc
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#include "qemu/osdep.h"
-#include "qemu-file-channel.h"
-#include "qemu-file.h"
-#include "io/channel-socket.h"
-#include "io/channel-tls.h"
-#include "qemu/iov.h"
-#include "qemu/yank.h"
-#include "yank_functions.h"
-
-
-static const QEMUFileOps channel_input_ops = {
-};
-
-
-static const QEMUFileOps channel_output_ops = {
-};
-
-
-QEMUFile *qemu_fopen_channel_input(QIOChannel *ioc)
-{
-    object_ref(OBJECT(ioc));
-    return qemu_file_new_input(ioc, &channel_input_ops);
-}
-
-QEMUFile *qemu_fopen_channel_output(QIOChannel *ioc)
-{
-    object_ref(OBJECT(ioc));
-    return qemu_file_new_output(ioc, &channel_output_ops);
-}
diff --git a/migration/qemu-file-channel.h b/migration/qemu-file-channel.h
deleted file mode 100644
index 0028a09eb6..0000000000
--- a/migration/qemu-file-channel.h
+++ /dev/null
@@ -1,32 +0,0 @@ 
-/*
- * QEMUFile backend for QIOChannel objects
- *
- * Copyright (c) 2015-2016 Red Hat, Inc
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#ifndef QEMU_FILE_CHANNEL_H
-#define QEMU_FILE_CHANNEL_H
-
-#include "io/channel.h"
-
-QEMUFile *qemu_fopen_channel_input(QIOChannel *ioc);
-QEMUFile *qemu_fopen_channel_output(QIOChannel *ioc);
-#endif
diff --git a/migration/qemu-file.c b/migration/qemu-file.c
index dfee808924..81688b7a23 100644
--- a/migration/qemu-file.c
+++ b/migration/qemu-file.c
@@ -35,7 +35,6 @@ 
 #define MAX_IOV_SIZE MIN_CONST(IOV_MAX, 64)
 
 struct QEMUFile {
-    const QEMUFileOps *ops;
     const QEMUFileHooks *hooks;
     QIOChannel *ioc;
     bool is_writable;
@@ -104,16 +103,14 @@  bool qemu_file_mode_is_not_valid(const char *mode)
     return false;
 }
 
-static QEMUFile *qemu_file_new_impl(QIOChannel *ioc,
-                                    const QEMUFileOps *ops,
-                                    bool is_writable)
+static QEMUFile *qemu_file_new_impl(QIOChannel *ioc, bool is_writable)
 {
     QEMUFile *f;
 
     f = g_new0(QEMUFile, 1);
 
+    object_ref(ioc);
     f->ioc = ioc;
-    f->ops = ops;
     f->is_writable = is_writable;
 
     return f;
@@ -125,21 +122,19 @@  static QEMUFile *qemu_file_new_impl(QIOChannel *ioc,
  */
 QEMUFile *qemu_file_get_return_path(QEMUFile *f)
 {
-    object_ref(f->ioc);
-    return qemu_file_new_impl(f->ioc, f->ops, !f->is_writable);
+    return qemu_file_new_impl(f->ioc, !f->is_writable);
 }
 
-QEMUFile *qemu_file_new_output(QIOChannel *ioc, const QEMUFileOps *ops)
+QEMUFile *qemu_file_new_output(QIOChannel *ioc)
 {
-    return qemu_file_new_impl(ioc, ops, true);
+    return qemu_file_new_impl(ioc, true);
 }
 
-QEMUFile *qemu_file_new_input(QIOChannel *ioc, const QEMUFileOps *ops)
+QEMUFile *qemu_file_new_input(QIOChannel *ioc)
 {
-    return qemu_file_new_impl(ioc, ops, false);
+    return qemu_file_new_impl(ioc, false);
 }
 
-
 void qemu_file_set_hooks(QEMUFile *f, const QEMUFileHooks *hooks)
 {
     f->hooks = hooks;
@@ -235,6 +230,7 @@  static void qemu_iovec_release_ram(QEMUFile *f)
     memset(f->may_free, 0, sizeof(f->may_free));
 }
 
+
 /**
  * Flushes QEMUFile buffer
  *
diff --git a/migration/qemu-file.h b/migration/qemu-file.h
index 5370e4e5ec..12e625f96a 100644
--- a/migration/qemu-file.h
+++ b/migration/qemu-file.h
@@ -55,9 +55,6 @@  typedef size_t (QEMURamSaveFunc)(QEMUFile *f,
                                  size_t size,
                                  uint64_t *bytes_sent);
 
-typedef struct QEMUFileOps {
-} QEMUFileOps;
-
 typedef struct QEMUFileHooks {
     QEMURamHookFunc *before_ram_iterate;
     QEMURamHookFunc *after_ram_iterate;
@@ -65,10 +62,9 @@  typedef struct QEMUFileHooks {
     QEMURamSaveFunc *save_page;
 } QEMUFileHooks;
 
-QEMUFile *qemu_file_new_input(QIOChannel *ioc, const QEMUFileOps *ops);
-QEMUFile *qemu_file_new_output(QIOChannel *ioc, const QEMUFileOps *ops);
+QEMUFile *qemu_file_new_input(QIOChannel *ioc);
+QEMUFile *qemu_file_new_output(QIOChannel *ioc);
 void qemu_file_set_hooks(QEMUFile *f, const QEMUFileHooks *hooks);
-int qemu_get_fd(QEMUFile *f);
 int qemu_fclose(QEMUFile *f);
 
 /*
diff --git a/migration/ram.c b/migration/ram.c
index bf321e1e72..01f9cc1d72 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -38,7 +38,6 @@ 
 #include "migration.h"
 #include "migration/register.h"
 #include "migration/misc.h"
-#include "migration/qemu-file-channel.h"
 #include "qemu-file.h"
 #include "postcopy-ram.h"
 #include "page_cache.h"
@@ -569,7 +568,7 @@  static int compress_threads_save_setup(void)
         /* comp_param[i].file is just used as a dummy buffer to save data,
          * set its ops to empty.
          */
-        comp_param[i].file = qemu_fopen_channel_output(
+        comp_param[i].file = qemu_file_new_output(
             QIO_CHANNEL(qio_channel_null_new()));
         comp_param[i].done = true;
         comp_param[i].quit = false;
diff --git a/migration/rdma.c b/migration/rdma.c
index 83265513d9..49e6dba323 100644
--- a/migration/rdma.c
+++ b/migration/rdma.c
@@ -21,7 +21,6 @@ 
 #include "migration.h"
 #include "qemu-file.h"
 #include "ram.h"
-#include "qemu-file-channel.h"
 #include "qemu/error-report.h"
 #include "qemu/main-loop.h"
 #include "qemu/module.h"
@@ -4093,12 +4092,12 @@  static QEMUFile *qemu_fopen_rdma(RDMAContext *rdma, const char *mode)
     rioc = QIO_CHANNEL_RDMA(object_new(TYPE_QIO_CHANNEL_RDMA));
 
     if (mode[0] == 'w') {
-        rioc->file = qemu_fopen_channel_output(QIO_CHANNEL(rioc));
+        rioc->file = qemu_file_new_output(QIO_CHANNEL(rioc));
         rioc->rdmaout = rdma;
         rioc->rdmain = rdma->return_path;
         qemu_file_set_hooks(rioc->file, &rdma_write_hooks);
     } else {
-        rioc->file = qemu_fopen_channel_input(QIO_CHANNEL(rioc));
+        rioc->file = qemu_file_new_input(QIO_CHANNEL(rioc));
         rioc->rdmain = rdma;
         rioc->rdmaout = rdma->return_path;
         qemu_file_set_hooks(rioc->file, &rdma_read_hooks);
diff --git a/migration/savevm.c b/migration/savevm.c
index 24a50376dc..e8a1b96fcd 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -37,7 +37,6 @@ 
 #include "migration/global_state.h"
 #include "migration/channel-block.h"
 #include "ram.h"
-#include "qemu-file-channel.h"
 #include "qemu-file.h"
 #include "savevm.h"
 #include "postcopy-ram.h"
@@ -134,9 +133,9 @@  static struct mig_cmd_args {
 static QEMUFile *qemu_fopen_bdrv(BlockDriverState *bs, int is_writable)
 {
     if (is_writable) {
-        return qemu_fopen_channel_output(QIO_CHANNEL(qio_channel_block_new(bs)));
+        return qemu_file_new_output(QIO_CHANNEL(qio_channel_block_new(bs)));
     } else {
-        return qemu_fopen_channel_input(QIO_CHANNEL(qio_channel_block_new(bs)));
+        return qemu_file_new_input(QIO_CHANNEL(qio_channel_block_new(bs)));
     }
 }
 
@@ -2159,7 +2158,7 @@  static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis)
     bioc->usage += length;
     trace_loadvm_handle_cmd_packaged_received(ret);
 
-    QEMUFile *packf = qemu_fopen_channel_input(QIO_CHANNEL(bioc));
+    QEMUFile *packf = qemu_file_new_input(QIO_CHANNEL(bioc));
 
     ret = qemu_loadvm_state_main(packf, mis);
     trace_loadvm_handle_cmd_packaged_main(ret);
@@ -2917,7 +2916,7 @@  void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,
         goto the_end;
     }
     qio_channel_set_name(QIO_CHANNEL(ioc), "migration-xen-save-state");
-    f = qemu_fopen_channel_output(QIO_CHANNEL(ioc));
+    f = qemu_file_new_output(QIO_CHANNEL(ioc));
     object_unref(OBJECT(ioc));
     ret = qemu_save_device_state(f);
     if (ret < 0 || qemu_fclose(f) < 0) {
@@ -2964,7 +2963,7 @@  void qmp_xen_load_devices_state(const char *filename, Error **errp)
         return;
     }
     qio_channel_set_name(QIO_CHANNEL(ioc), "migration-xen-load-state");
-    f = qemu_fopen_channel_input(QIO_CHANNEL(ioc));
+    f = qemu_file_new_input(QIO_CHANNEL(ioc));
     object_unref(OBJECT(ioc));
 
     ret = qemu_loadvm_state(f);
diff --git a/tests/unit/test-vmstate.c b/tests/unit/test-vmstate.c
index 6a417bb102..72077b5780 100644
--- a/tests/unit/test-vmstate.c
+++ b/tests/unit/test-vmstate.c
@@ -28,7 +28,6 @@ 
 #include "migration/vmstate.h"
 #include "migration/qemu-file-types.h"
 #include "../migration/qemu-file.h"
-#include "../migration/qemu-file-channel.h"
 #include "../migration/savevm.h"
 #include "qemu/coroutine.h"
 #include "qemu/module.h"
@@ -52,9 +51,9 @@  static QEMUFile *open_test_file(bool write)
     }
     ioc = QIO_CHANNEL(qio_channel_file_new_fd(fd));
     if (write) {
-        f = qemu_fopen_channel_output(ioc);
+        f = qemu_file_new_output(ioc);
     } else {
-        f = qemu_fopen_channel_input(ioc);
+        f = qemu_file_new_input(ioc);
     }
     object_unref(OBJECT(ioc));
     return f;