qemu-ppc
[Top][All Lists]
Advanced

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

Re: [Qemu-ppc] [Qemu-devel] [QEMU PATCH v5 4/6] migration: migrate QTAIL


From: Jianjun Duan
Subject: Re: [Qemu-ppc] [Qemu-devel] [QEMU PATCH v5 4/6] migration: migrate QTAILQ
Date: Fri, 7 Oct 2016 10:43:41 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0


On 10/07/2016 10:34 AM, Dr. David Alan Gilbert wrote:
> * Jianjun Duan (address@hidden) wrote:
>>
>>
>> On 10/07/2016 09:32 AM, Paolo Bonzini wrote:
>>>
>>>
>>> On 07/10/2016 18:31, Jianjun Duan wrote:
>>>>
>>>>
>>>> On 10/07/2016 07:34 AM, Dr. David Alan Gilbert wrote:
>>>>> * Paolo Bonzini (address@hidden) wrote:
>>>>>>
>>>>>>
>>>>>> On 06/10/2016 21:01, Dr. David Alan Gilbert wrote:
>>>>>>>>>> +                } else if (field->flags & VMS_LINKED) {
>>>>>>>>>> +                    ret = field->info->get(f, addr, size, field);
>>>>>>>>>>                  } else {
>>>>>>>>>>                      ret = field->info->get(f, addr, size, NULL);
>>>>>>>>>>  
>>>>>>>>>> @@ -193,6 +197,8 @@ static const char 
>>>>>>>>>> *vmfield_get_type_name(VMStateField *field)
>>>>>>>>>>  
>>>>>>>>>>      if (field->flags & VMS_STRUCT) {
>>>>>>>>>>          type = "struct";
>>>>>>>>>> +    } else if (field->flags & VMS_LINKED) {
>>>>>>>>>> +        type = "linked";
>>>>>>>>>>      } else if (field->info->name) {
>>>>>>>>>>          type = field->info->name;
>>>>>>>>>>      }
>>>>>>>>>> @@ -327,6 +333,8 @@ void vmstate_save_state(QEMUFile *f, const 
>>>>>>>>>> VMStateDescription *vmsd,
>>>>>>>>>>                  }
>>>>>>>>>>                  if (field->flags & VMS_STRUCT) {
>>>>>>>>>>                      vmstate_save_state(f, field->vmsd, addr, 
>>>>>>>>>> vmdesc_loop);
>>>>>>>>>> +                } else if  (field->flags & VMS_LINKED) {
>>>>>>>>>> +                    field->info->put(f, addr, size, field, 
>>>>>>>>>> vmdesc_loop);
>>>>>>>>>>                  } else {
>>>>>>>>>>                      field->info->put(f, addr, size, NULL, NULL);
>>>>>>>>>>                  }
>>>>>>
>>>>>> Is VMS_LINKED needed at all, since the fields are unused for every
>>>>>> VMStateInfo except qtailq?
>>>>>
>>>>> No, I think you could easily drop the VMS_LINKED and just always pass 
>>>>> them in.
>>>>
>>>> It is needed if we want to use vmdesc_loop.
>>>
>>> Just always pass it in, can't you?
>>>
>> Could that lead to repetition of array elements? I know it depends on
>> individual put details.
> 
> I don't think so; Paolo is just suggesting replacing:
> 
>  +                } else if  (field->flags & VMS_LINKED) {
>  +                    field->info->put(f, addr, size, field, vmdesc_loop);
>                   } else {
>                       field->info->put(f, addr, size, NULL, NULL);
>                   }
> 
> by:
> 
>                   } else {
>  -                    field->info->put(f, addr, size, NULL, NULL);
>  +                    field->info->put(f, addr, size, field, vmdesc_loop);
>                   }
> 
> most get/put won't use the field/vmdesc_loop so it wont matter.
> 
> Dave
> 

Even though most put/get have no issues now, when somebody writes a new
put, he or she could run into issues if only checking the type
signature. It makes the code more readable.

I am OK either way.

Thanks,
Jianjun
>>
>> Thanks,
>> Jianjun
>>> Paolo
>>>
>>
> --
> Dr. David Alan Gilbert / address@hidden / Manchester, UK
> 




reply via email to

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