From: Peter Xu <peterx@redhat.com>
To: Juan Quintela <quintela@redhat.com>
Cc: qemu-devel@nongnu.org, dgilbert@redhat.com, lvivier@redhat.com
Subject: Re: [Qemu-devel] [PATCH 03/11] migration: Split registration functions from vmstate.h
Date: Mon, 12 Jun 2017 17:29:34 +0800 [thread overview]
Message-ID: <20170612092934.GG12928@pxdev.xzpeter.org> (raw)
In-Reply-To: <20170601212921.30241-4-quintela@redhat.com>
On Thu, Jun 01, 2017 at 11:29:13PM +0200, Juan Quintela wrote:
> They are indpendent, and nowadays almost every device register things
> with qdev->vmsd.
>
> Signed-off-by: Juan Quintela <quintela@redhat.com>
> ---
> hw/net/vmxnet3.c | 1 +
> hw/ppc/spapr.c | 1 +
> hw/s390x/s390-skeys.c | 1 +
> hw/s390x/s390-virtio-ccw.c | 1 +
> include/migration/register.h | 64 ++++++++++++++++++++++++++++++++++++++++++++
> include/migration/vmstate.h | 45 -------------------------------
> migration/block.c | 1 +
> migration/ram.c | 1 +
> migration/savevm.c | 1 +
> slirp/slirp.c | 1 +
> 10 files changed, 72 insertions(+), 45 deletions(-)
> create mode 100644 include/migration/register.h
>
> diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
> index 8b1fab2..21ac646 100644
> --- a/hw/net/vmxnet3.c
> +++ b/hw/net/vmxnet3.c
> @@ -26,6 +26,7 @@
> #include "qemu/bswap.h"
> #include "hw/pci/msix.h"
> #include "hw/pci/msi.h"
> +#include "migration/register.h"
>
> #include "vmxnet3.h"
> #include "vmxnet_debug.h"
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index ab3aab1..a44efbf 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -39,6 +39,7 @@
> #include "sysemu/hw_accel.h"
> #include "kvm_ppc.h"
> #include "migration/migration.h"
> +#include "migration/register.h"
> #include "mmu-hash64.h"
> #include "mmu-book3s-v3.h"
> #include "qom/cpu.h"
> diff --git a/hw/s390x/s390-skeys.c b/hw/s390x/s390-skeys.c
> index 619152c..58f084a 100644
> --- a/hw/s390x/s390-skeys.c
> +++ b/hw/s390x/s390-skeys.c
> @@ -15,6 +15,7 @@
> #include "hw/s390x/storage-keys.h"
> #include "qemu/error-report.h"
> #include "sysemu/kvm.h"
> +#include "migration/register.h"
>
> #define S390_SKEYS_BUFFER_SIZE 131072 /* Room for 128k storage keys */
> #define S390_SKEYS_SAVE_FLAG_EOS 0x01
> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
> index c9021f2..51d14d3 100644
> --- a/hw/s390x/s390-virtio-ccw.c
> +++ b/hw/s390x/s390-virtio-ccw.c
> @@ -28,6 +28,7 @@
> #include "ipl.h"
> #include "hw/s390x/s390-virtio-ccw.h"
> #include "hw/s390x/css-bridge.h"
> +#include "migration/register.h"
>
> static const char *const reset_dev_types[] = {
> TYPE_VIRTUAL_CSS_BRIDGE,
> diff --git a/include/migration/register.h b/include/migration/register.h
> new file mode 100644
> index 0000000..844afaf
> --- /dev/null
> +++ b/include/migration/register.h
> @@ -0,0 +1,64 @@
> +/*
> + * QEMU migration vmstate registration
> + *
> + * Copyright IBM, Corp. 2008
> + *
> + * Authors:
> + * Anthony Liguori <aliguori@us.ibm.com>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2. See
> + * the COPYING file in the top-level directory.
> + *
> + */
> +
> +#ifndef MIGRATION_REGISTER_H
> +#define MIGRATION_REGISTER_H
> +
> +typedef void SaveStateHandler(QEMUFile *f, void *opaque);
> +typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
> +
> +typedef struct SaveVMHandlers {
> + /* This runs inside the iothread lock. */
> + SaveStateHandler *save_state;
> +
> + void (*cleanup)(void *opaque);
> + int (*save_live_complete_postcopy)(QEMUFile *f, void *opaque);
> + int (*save_live_complete_precopy)(QEMUFile *f, void *opaque);
> +
> + /* This runs both outside and inside the iothread lock. */
> + bool (*is_active)(void *opaque);
> +
> + /* This runs outside the iothread lock in the migration case, and
> + * within the lock in the savevm case. The callback had better only
> + * use data that is local to the migration thread or protected
> + * by other locks.
> + */
> + int (*save_live_iterate)(QEMUFile *f, void *opaque);
> +
> + /* This runs outside the iothread lock! */
> + int (*save_live_setup)(QEMUFile *f, void *opaque);
> + void (*save_live_pending)(QEMUFile *f, void *opaque,
> + uint64_t threshold_size,
> + uint64_t *non_postcopiable_pending,
> + uint64_t *postcopiable_pending);
> + LoadStateHandler *load_state;
> +} SaveVMHandlers;
> +
> +int register_savevm(DeviceState *dev,
> + const char *idstr,
> + int instance_id,
> + int version_id,
> + SaveStateHandler *save_state,
> + LoadStateHandler *load_state,
> + void *opaque);
Looks like this patch needs a rebasing since this function is already
remove...
> +
> +int register_savevm_live(DeviceState *dev,
> + const char *idstr,
> + int instance_id,
> + int version_id,
> + SaveVMHandlers *ops,
> + void *opaque);
> +
> +void unregister_savevm(DeviceState *dev, const char *idstr, void *opaque);
> +
> +#endif
> diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
> index b95c9bb..6de554d 100644
> --- a/include/migration/vmstate.h
> +++ b/include/migration/vmstate.h
> @@ -29,53 +29,8 @@
>
> #include "migration/qjson.h"
>
> -typedef void SaveStateHandler(QEMUFile *f, void *opaque);
> typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
Should be removed too?
Other than mentioned above:
Reviewed-by: Peter Xu <peterx@redhat.com>
Thanks,
>
> -typedef struct SaveVMHandlers {
> - /* This runs inside the iothread lock. */
> - SaveStateHandler *save_state;
> -
> - void (*cleanup)(void *opaque);
> - int (*save_live_complete_postcopy)(QEMUFile *f, void *opaque);
> - int (*save_live_complete_precopy)(QEMUFile *f, void *opaque);
> -
> - /* This runs both outside and inside the iothread lock. */
> - bool (*is_active)(void *opaque);
> -
> - /* This runs outside the iothread lock in the migration case, and
> - * within the lock in the savevm case. The callback had better only
> - * use data that is local to the migration thread or protected
> - * by other locks.
> - */
> - int (*save_live_iterate)(QEMUFile *f, void *opaque);
> -
> - /* This runs outside the iothread lock! */
> - int (*save_live_setup)(QEMUFile *f, void *opaque);
> - void (*save_live_pending)(QEMUFile *f, void *opaque,
> - uint64_t threshold_size,
> - uint64_t *non_postcopiable_pending,
> - uint64_t *postcopiable_pending);
> - LoadStateHandler *load_state;
> -} SaveVMHandlers;
--
Peter Xu
next prev parent reply other threads:[~2017-06-12 9:29 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-01 21:29 [Qemu-devel] [PATCH 00/11] Misc migration cleanups Juan Quintela
2017-06-01 21:29 ` [Qemu-devel] [PATCH 01/11] migration: Remove MigrationState from migration_channel_incomming() Juan Quintela
2017-06-12 9:19 ` Peter Xu
2017-06-12 10:03 ` Laurent Vivier
2017-06-01 21:29 ` [Qemu-devel] [PATCH 02/11] migration: Move self_announce_delay() to misc.h Juan Quintela
2017-06-12 9:22 ` Peter Xu
2017-06-12 10:31 ` Laurent Vivier
2017-06-12 10:35 ` Juan Quintela
2017-06-12 10:43 ` Laurent Vivier
2017-06-01 21:29 ` [Qemu-devel] [PATCH 03/11] migration: Split registration functions from vmstate.h Juan Quintela
2017-06-12 9:29 ` Peter Xu [this message]
2017-06-12 10:36 ` Juan Quintela
2017-06-01 21:29 ` [Qemu-devel] [PATCH 04/11] migration: Move dump_vmsate_json_to_file() to misc.h Juan Quintela
2017-06-12 9:33 ` Peter Xu
2017-06-12 10:42 ` Laurent Vivier
2017-06-01 21:29 ` [Qemu-devel] [PATCH 05/11] migration: Move constants to savevm.h Juan Quintela
2017-06-12 10:44 ` Laurent Vivier
2017-06-01 21:29 ` [Qemu-devel] [PATCH 06/11] migration: Commands are only used inside migration.c Juan Quintela
2017-06-12 11:34 ` Laurent Vivier
2017-06-01 21:29 ` [Qemu-devel] [PATCH 07/11] migration: ram_control_* are implemented in qemu_file Juan Quintela
2017-06-12 11:39 ` Laurent Vivier
2017-06-01 21:29 ` [Qemu-devel] [PATCH 08/11] migration: create global_state.c Juan Quintela
2017-06-12 11:45 ` Laurent Vivier
2017-06-01 21:29 ` [Qemu-devel] [PATCH 09/11] migration: Move remaining exported functions to migration/misc.h Juan Quintela
2017-06-12 9:51 ` Peter Xu
2017-06-01 21:29 ` [Qemu-devel] [PATCH 10/11] migration: Move migration.h to migration/ Juan Quintela
2017-06-12 9:51 ` Peter Xu
2017-06-12 11:51 ` Laurent Vivier
2017-06-01 21:29 ` [Qemu-devel] [PATCH 11/11] migration: Remove unneeded includes Juan Quintela
2017-06-02 5:00 ` [Qemu-devel] [PATCH 00/11] Misc migration cleanups Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170612092934.GG12928@pxdev.xzpeter.org \
--to=peterx@redhat.com \
--cc=dgilbert@redhat.com \
--cc=lvivier@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.