All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Juan Quintela <quintela@redhat.com>
Cc: qemu-devel@nongnu.org, lvivier@redhat.com, peterx@redhat.com
Subject: Re: [Qemu-devel] [PATCH v10 01/14] migration: Make migrate_fd_error() the owner of the Error
Date: Fri, 12 Jan 2018 18:50:20 +0000	[thread overview]
Message-ID: <20180112185019.GC2309@work-vm> (raw)
In-Reply-To: <20180110124723.11879-2-quintela@redhat.com>

* Juan Quintela (quintela@redhat.com) wrote:
> So far, we had to free the error after each caller, so just do it
> here.  Once there, tls.c was leaking the error.
> 
> Signed-off-by: Juan Quintela <quintela@redhat.com>

This clashes a bit with my
'Route errors down through migration_channel_connect'
'Allow migrate_fd_connect to take an Error *'

pair; I think they also clean up the leak and actually end up displaying
the error.

Dave

> ---
>  migration/channel.c   |  1 -
>  migration/migration.c | 10 ++++------
>  migration/migration.h |  4 ++--
>  migration/socket.c    |  1 -
>  4 files changed, 6 insertions(+), 10 deletions(-)
> 
> diff --git a/migration/channel.c b/migration/channel.c
> index 70ec7ea3b7..1dd2ae1530 100644
> --- a/migration/channel.c
> +++ b/migration/channel.c
> @@ -71,7 +71,6 @@ void migration_channel_connect(MigrationState *s,
>          migration_tls_channel_connect(s, ioc, hostname, &local_err);
>          if (local_err) {
>              migrate_fd_error(s, local_err);
> -            error_free(local_err);
>          }
>      } else {
>          QEMUFile *f = qemu_fopen_channel_output(ioc);
> diff --git a/migration/migration.c b/migration/migration.c
> index a5be4592a6..085e88c625 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -1159,16 +1159,14 @@ static void migrate_fd_cleanup(void *opaque)
>      block_cleanup_parameters(s);
>  }
>  
> -void migrate_set_error(MigrationState *s, const Error *error)
> +void migrate_set_error(MigrationState *s, Error *error)
>  {
>      qemu_mutex_lock(&s->error_mutex);
> -    if (!s->error) {
> -        s->error = error_copy(error);
> -    }
> +    error_propagate(&s->error, error);
>      qemu_mutex_unlock(&s->error_mutex);
>  }
>  
> -void migrate_fd_error(MigrationState *s, const Error *error)
> +void migrate_fd_error(MigrationState *s, Error *error)
>  {
>      trace_migrate_fd_error(error_get_pretty(error));
>      assert(s->to_dst_file == NULL);
> @@ -1448,7 +1446,7 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
>      }
>  
>      if (local_err) {
> -        migrate_fd_error(s, local_err);
> +        migrate_fd_error(s, error_copy(local_err));
>          error_propagate(errp, local_err);
>          return;
>      }
> diff --git a/migration/migration.h b/migration/migration.h
> index 2c8c53847a..29a7b79a39 100644
> --- a/migration/migration.h
> +++ b/migration/migration.h
> @@ -177,8 +177,8 @@ bool  migration_has_all_channels(void);
>  
>  uint64_t migrate_max_downtime(void);
>  
> -void migrate_set_error(MigrationState *s, const Error *error);
> -void migrate_fd_error(MigrationState *s, const Error *error);
> +void migrate_set_error(MigrationState *s, Error *error);
> +void migrate_fd_error(MigrationState *s, Error *error);
>  
>  void migrate_fd_connect(MigrationState *s);
>  
> diff --git a/migration/socket.c b/migration/socket.c
> index 248a798543..6d49903978 100644
> --- a/migration/socket.c
> +++ b/migration/socket.c
> @@ -81,7 +81,6 @@ static void socket_outgoing_migration(QIOTask *task,
>      if (qio_task_propagate_error(task, &err)) {
>          trace_migration_socket_outgoing_error(error_get_pretty(err));
>          migrate_fd_error(data->s, err);
> -        error_free(err);
>      } else {
>          trace_migration_socket_outgoing_connected(data->hostname);
>          migration_channel_connect(data->s, sioc, data->hostname);
> -- 
> 2.14.3
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

  reply	other threads:[~2018-01-12 18:50 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-10 12:47 [Qemu-devel] [RFC 00/14] Multifd Juan Quintela
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 01/14] migration: Make migrate_fd_error() the owner of the Error Juan Quintela
2018-01-12 18:50   ` Dr. David Alan Gilbert [this message]
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 02/14] migration: Rename initial_bytes Juan Quintela
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 03/14] migration: Drop current address parameter from save_zero_page() Juan Quintela
2018-01-12 18:56   ` Dr. David Alan Gilbert
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 04/14] migration: Start of multiple fd work Juan Quintela
2018-01-22  7:00   ` Peter Xu
2018-01-23 19:52   ` Dr. David Alan Gilbert
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 05/14] migration: Create ram_multifd_page Juan Quintela
2018-01-23 20:16   ` Dr. David Alan Gilbert
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 06/14] migration: Send the fd number which we are going to use for this page Juan Quintela
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 07/14] migration: Create thread infrastructure for multifd recv side Juan Quintela
2018-01-24 13:34   ` Dr. David Alan Gilbert
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 08/14] migration: Transfer pages over new channels Juan Quintela
2018-01-24 13:46   ` Dr. David Alan Gilbert
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 09/14] migration: Flush receive queue Juan Quintela
2018-01-24 14:12   ` Dr. David Alan Gilbert
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 10/14] migration: Add multifd test Juan Quintela
2018-01-24 14:23   ` Dr. David Alan Gilbert
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 11/14] LOCAL: use trace events for migration-test Juan Quintela
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 12/14] migration: Sent the page list over the normal thread Juan Quintela
2018-01-24 14:29   ` Dr. David Alan Gilbert
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 13/14] migration: Add multifd_send_packet trace Juan Quintela
2018-01-10 12:47 ` [Qemu-devel] [PATCH v10 14/14] all works Juan Quintela
2018-01-10 15:01 ` [Qemu-devel] [RFC 00/14] Multifd Juan Quintela

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=20180112185019.GC2309@work-vm \
    --to=dgilbert@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=peterx@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.