[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
- [Qemu-devel] [PATCH COLO-Frame v18 24/34] COLO: Update the global runstate after going into colo state, (continued)
- [Qemu-devel] [PATCH COLO-Frame v18 24/34] COLO: Update the global runstate after going into colo state, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 20/34] qmp event: Add COLO_EXIT event to notify users while exited from COLO, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 05/34] migration: Integrate COLO checkpoint process into loadvm, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 11/34] ram/COLO: Record the dirty pages that SVM received, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 02/34] migration: Introduce capability 'x-colo' to migration, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 32/34] COLO/filter: Add each netdev a buffer filter, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 31/34] net: Add notifier/callback for netdev init, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 06/34] COLO/migration: Create a new communication path from destination to source, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 03/34] COLO: migrate colo related info to secondary node, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 17/34] COLO failover: Introduce state to record failover process, zhanghailiang, 2016/08/03
- Re: [Qemu-devel] [PATCH COLO-Frame v18 17/34] COLO failover: Introduce state to record failover process,
Dr. David Alan Gilbert <=
- [Qemu-devel] [PATCH COLO-Frame v18 25/34] savevm: Introduce two helper functions for save/find loadvm_handlers entry, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 27/34] migration/savevm: Export two helper functions for savevm process, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 34/34] COLO: Add block replication into colo process, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 04/34] migration: Integrate COLO checkpoint process into migration, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 29/34] COLO: Split qemu_savevm_state_begin out of checkpoint process, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 15/34] COLO: Synchronize PVM's state to SVM periodically, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 30/34] filter-buffer: Accept zero interval, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 16/34] COLO failover: Introduce a new command to trigger a failover, zhanghailiang, 2016/08/03
- [Qemu-devel] [PATCH COLO-Frame v18 23/34] COLO: Process shutdown command for VM in COLO state, zhanghailiang, 2016/08/03