qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH V2] migration/colo.c: Fix compilation issue when


From: Thomas Huth
Subject: Re: [Qemu-devel] [PATCH V2] migration/colo.c: Fix compilation issue when disable replication
Date: Wed, 14 Nov 2018 12:06:14 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1

On 2018-11-14 11:47, Peter Xu wrote:
> On Thu, Nov 01, 2018 at 10:12:26AM +0800, Zhang Chen wrote:
>> This compilation issue will occur when user use --disable-replication
>> to config Qemu.
>>
>> Reported-by: Thomas Huth <address@hidden>
>> Signed-off-by: Zhang Chen <address@hidden>
> 
> Hi,
> 
> How's the status of this patch?  Are we gonna merge it for 3.1?
> 
> I just posted a similar one without knowing this (until Dave pointed
> it out).  IMHO it can be a good candidate for 3.1.

Maybe Peter Maydell could apply this directly to the repo as a built fix?

And maybe one of our docker wizards could add a test to check
compilation with everything disabled a la:

./configure --enable-werror --disable-tcg --disable-slirp \
  --disable-libxml2 --disable-capstone --disable-live-block-migration \
  --disable-glusterfs --disable-replication --disable-coroutine-pool \
  --disable-smartcard --disable-guest-agent --disable-curses \
  --disable-curl --disable-tpm --disable-qom-cast-debug \
  --disable-spice --disable-vhost-vsock  --disable-vhost-net \
  --disable-vhost-crypto --disable-vhost-user

?

I don't use docker (yet), but I've had this in my gitlab ci patch,
that's how I noticed this problem (see
https://www.mail-archive.com/address@hidden/msg559990.html)

 Thomas


> 
>> ---
>>  migration/colo.c | 28 +++++++++++++++++++++++++++-
>>  1 file changed, 27 insertions(+), 1 deletion(-)
>>
>> diff --git a/migration/colo.c b/migration/colo.c
>> index 956ac236b7..fcff04c78c 100644
>> --- a/migration/colo.c
>> +++ b/migration/colo.c
>> @@ -59,6 +59,8 @@ static bool colo_runstate_is_stopped(void)
>>  
>>  static void secondary_vm_do_failover(void)
>>  {
>> +/* COLO needs enable block-replication */
>> +#ifdef CONFIG_REPLICATION
>>      int old_state;
>>      MigrationIncomingState *mis = migration_incoming_get_current();
>>      Error *local_err = NULL;
>> @@ -121,10 +123,14 @@ static void secondary_vm_do_failover(void)
>>      if (mis->migration_incoming_co) {
>>          qemu_coroutine_enter(mis->migration_incoming_co);
>>      }
>> +#else
>> +    abort();
>> +#endif
>>  }
>>  
>>  static void primary_vm_do_failover(void)
>>  {
>> +#ifdef CONFIG_REPLICATION
>>      MigrationState *s = migrate_get_current();
>>      int old_state;
>>      Error *local_err = NULL;
>> @@ -165,6 +171,9 @@ static void primary_vm_do_failover(void)
>>  
>>      /* Notify COLO thread that failover work is finished */
>>      qemu_sem_post(&s->colo_exit_sem);
>> +#else
>> +    abort();
>> +#endif
>>  }
>>  
>>  COLOMode get_colo_mode(void)
>> @@ -415,11 +424,16 @@ static int 
>> colo_do_checkpoint_transaction(MigrationState *s,
>>      /* Disable block migration */
>>      migrate_set_block_enabled(false, &local_err);
>>      qemu_mutex_lock_iothread();
>> +
>> +#ifdef CONFIG_REPLICATION
>>      replication_do_checkpoint_all(&local_err);
>>      if (local_err) {
>>          qemu_mutex_unlock_iothread();
>>          goto out;
>>      }
>> +#else
>> +        abort();
>> +#endif
>>  
>>      colo_send_message(s->to_dst_file, COLO_MESSAGE_VMSTATE_SEND, 
>> &local_err);
>>      if (local_err) {
>> @@ -523,11 +537,15 @@ static void colo_process_checkpoint(MigrationState *s)
>>      object_unref(OBJECT(bioc));
>>  
>>      qemu_mutex_lock_iothread();
>> +#ifdef CONFIG_REPLICATION
>>      replication_start_all(REPLICATION_MODE_PRIMARY, &local_err);
>>      if (local_err) {
>>          qemu_mutex_unlock_iothread();
>>          goto out;
>>      }
>> +#else
>> +        abort();
>> +#endif
>>  
>>      vm_start();
>>      qemu_mutex_unlock_iothread();
>> @@ -690,11 +708,15 @@ void *colo_process_incoming_thread(void *opaque)
>>      object_unref(OBJECT(bioc));
>>  
>>      qemu_mutex_lock_iothread();
>> +#ifdef CONFIG_REPLICATION
>>      replication_start_all(REPLICATION_MODE_SECONDARY, &local_err);
>>      if (local_err) {
>>          qemu_mutex_unlock_iothread();
>>          goto out;
>>      }
>> +#else
>> +        abort();
>> +#endif
>>      vm_start();
>>      trace_colo_vm_state_change("stop", "run");
>>      qemu_mutex_unlock_iothread();
>> @@ -785,18 +807,22 @@ void *colo_process_incoming_thread(void *opaque)
>>              goto out;
>>          }
>>  
>> +#ifdef CONFIG_REPLICATION
>>          replication_get_error_all(&local_err);
>>          if (local_err) {
>>              qemu_mutex_unlock_iothread();
>>              goto out;
>>          }
>> +
>>          /* discard colo disk buffer */
>>          replication_do_checkpoint_all(&local_err);
>>          if (local_err) {
>>              qemu_mutex_unlock_iothread();
>>              goto out;
>>          }
>> -
>> +#else
>> +        abort();
>> +#endif
>>          /* Notify all filters of all NIC to do checkpoint */
>>          colo_notify_filters_event(COLO_EVENT_CHECKPOINT, &local_err);
>>  
>> -- 
>> 2.17.1
>>
>>
> 
> Regards,
> 




reply via email to

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