qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH COLO-Frame v18 17/34] COLO failover: Introduce s


From: Dr. David Alan Gilbert
Subject: Re: [Qemu-devel] [PATCH COLO-Frame v18 17/34] COLO failover: Introduce state to record failover process
Date: Tue, 9 Aug 2016 10:17:13 +0100
User-agent: Mutt/1.6.2 (2016-07-01)

* zhanghailiang (address@hidden) wrote:

> +        error_report("Unkown error for failover, old_state=%d", old_state);

 Tiny typo; 'Unknown'.
Don't bother reposting just for that, we can fix it later; or fix it if
you have to repost anyway.

Dave

> +        return;
> +    }
>      /*TODO: Do failover work */
>  }
>  
>  void failover_request_active(Error **errp)
>  {
> +   if (failover_set_state(FAILOVER_STATUS_NONE, FAILOVER_STATUS_REQUEST)
> +         != FAILOVER_STATUS_NONE) {
> +        error_setg(errp, "COLO failover is already actived");
> +        return;
> +    }
>      failover_bh = qemu_bh_new(colo_failover_bh, NULL);
>      qemu_bh_schedule(failover_bh);
>  }
>  
> +void failover_init_state(void)
> +{
> +    failover_state = FAILOVER_STATUS_NONE;
> +}
> +
> +int failover_set_state(int old_state, int new_state)
> +{
> +    int old;
> +
> +    old = atomic_cmpxchg(&failover_state, old_state, new_state);
> +    if (old == old_state) {
> +        trace_colo_failover_set_state(new_state);
> +    }
> +    return old;
> +}
> +
> +int failover_get_state(void)
> +{
> +    return atomic_read(&failover_state);
> +}
> +
>  void qmp_x_colo_lost_heartbeat(Error **errp)
>  {
>      if (get_colo_mode() == COLO_MODE_UNKNOWN) {
> diff --git a/migration/colo.c b/migration/colo.c
> index b445279..9afc527 100644
> --- a/migration/colo.c
> +++ b/migration/colo.c
> @@ -232,6 +232,8 @@ static void colo_process_checkpoint(MigrationState *s)
>      Error *local_err = NULL;
>      int ret;
>  
> +    failover_init_state();
> +
>      s->rp_state.from_dst_file = qemu_file_get_return_path(s->to_dst_file);
>      if (!s->rp_state.from_dst_file) {
>          error_report("Open QEMUFile from_dst_file failed");
> @@ -331,6 +333,8 @@ void *colo_process_incoming_thread(void *opaque)
>      migrate_set_state(&mis->state, MIGRATION_STATUS_ACTIVE,
>                        MIGRATION_STATUS_COLO);
>  
> +    failover_init_state();
> +
>      mis->to_src_file = qemu_file_get_return_path(mis->from_src_file);
>      if (!mis->to_src_file) {
>          error_report("colo incoming thread: Open QEMUFile to_src_file 
> failed");
> diff --git a/migration/trace-events b/migration/trace-events
> index 82dc7a0..d9f44ba 100644
> --- a/migration/trace-events
> +++ b/migration/trace-events
> @@ -214,3 +214,4 @@ migration_tls_incoming_handshake_complete(void) ""
>  colo_vm_state_change(const char *old, const char *new) "Change '%s' => '%s'"
>  colo_send_message(const char *msg) "Send '%s' message"
>  colo_receive_message(const char *msg) "Receive '%s' message"
> +colo_failover_set_state(int new_state) "new state %d"
> -- 
> 1.8.3.1
> 
> 
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK



reply via email to

[Prev in Thread] Current Thread [Next in Thread]