[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PULL 15/21] migration/rdma: Remove all uses of RAM_CONTROL_HOOK
From: |
Daniel P . Berrangé |
Subject: |
Re: [PULL 15/21] migration/rdma: Remove all uses of RAM_CONTROL_HOOK |
Date: |
Thu, 1 Jun 2023 10:01:44 +0100 |
User-agent: |
Mutt/2.2.9 (2022-11-12) |
On Tue, May 30, 2023 at 08:25:25PM +0200, Juan Quintela wrote:
> Instead of going trhough ram_control_load_hook(), call
> qemu_rdma_registration_handle() directly.
>
> Reviewed-by: Peter Xu <peterx@redhat.com>
> Signed-off-by: Juan Quintela <quintela@redhat.com>
> Message-Id: <20230509120700.78359-5-quintela@redhat.com>
> ---
> migration/qemu-file.h | 1 -
> migration/rdma.h | 3 +++
> migration/ram.c | 5 ++++-
> migration/rdma.c | 9 +++++----
> 4 files changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/migration/qemu-file.h b/migration/qemu-file.h
> index 323af5682f..7cfc20825e 100644
> --- a/migration/qemu-file.h
> +++ b/migration/qemu-file.h
> @@ -41,7 +41,6 @@ typedef int (QEMURamHookFunc)(QEMUFile *f, uint64_t flags,
> void *data);
> */
> #define RAM_CONTROL_SETUP 0
> #define RAM_CONTROL_ROUND 1
> -#define RAM_CONTROL_HOOK 2
> #define RAM_CONTROL_FINISH 3
> #define RAM_CONTROL_BLOCK_REG 4
>
> diff --git a/migration/rdma.h b/migration/rdma.h
> index c13b94c782..8bd277efb9 100644
> --- a/migration/rdma.h
> +++ b/migration/rdma.h
> @@ -24,10 +24,13 @@ void rdma_start_incoming_migration(const char *host_port,
> Error **errp);
>
>
> #ifdef CONFIG_RDMA
> +int qemu_rdma_registration_handle(QEMUFile *f);
> int qemu_rdma_registration_start(QEMUFile *f, uint64_t flags);
> int qemu_rdma_registration_stop(QEMUFile *f, uint64_t flags);
> #else
> static inline
> +int qemu_rdma_registration_handle(QEMUFile *f) { return 0; }
> +static inline
> int qemu_rdma_registration_start(QEMUFile *f, uint64_t flags) { return 0; }
> static inline
> int qemu_rdma_registration_stop(QEMUFile *f, uint64_t flags) { return 0; }
> diff --git a/migration/ram.c b/migration/ram.c
> index c6fad7b0b3..6f0597814c 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -4024,7 +4024,10 @@ static int ram_load_precopy(QEMUFile *f)
> }
> break;
> case RAM_SAVE_FLAG_HOOK:
> - ram_control_load_hook(f, RAM_CONTROL_HOOK, NULL);
> + ret = qemu_rdma_registration_handle(f);
> + if (ret < 0) {
> + qemu_file_set_error(f, ret);
> + }
> break;
> default:
> error_report("Unknown combination of migration flags: 0x%x",
> flags);
> diff --git a/migration/rdma.c b/migration/rdma.c
> index 8001dcb960..a477985c6d 100644
> --- a/migration/rdma.c
> +++ b/migration/rdma.c
> @@ -3530,7 +3530,7 @@ static int dest_ram_sort_func(const void *a, const void
> *b)
> *
> * Keep doing this until the source tells us to stop.
> */
> -static int qemu_rdma_registration_handle(QEMUFile *f)
> +int qemu_rdma_registration_handle(QEMUFile *f)
> {
> RDMAControlHeader reg_resp = { .len = sizeof(RDMARegisterResult),
> .type = RDMA_CONTROL_REGISTER_RESULT,
> @@ -3557,6 +3557,10 @@ static int qemu_rdma_registration_handle(QEMUFile *f)
A few lines above this diff contxt there is a call to
QIOChannelRDMA *rioc = QIO_CHANNEL_RDMA(qemu_file_get_ioc(f));
which is likely unsafe given that....
> int count = 0;
> int i = 0;
>
> + if (!migrate_rdma()) {
....we're only checking if this is RDMA here.
> + return 0;
> + }
> +
> RCU_READ_LOCK_GUARD();
> rdma = qatomic_rcu_read(&rioc->rdmain);
>
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PULL 15/21] migration/rdma: Remove all uses of RAM_CONTROL_HOOK,
Daniel P . Berrangé <=