Il 16/09/2014 16:32, Markus Armbruster ha scritto:
> Paolo Bonzini <pbonz...@redhat.com> writes:
> 
>> Il 16/09/2014 11:16, Markus Armbruster ha scritto:
>>>> I think both "str" and "link<block-backend>" actually are a small 
>>>> degradation
>>>> compared to "drive", and this is why I kept the legacy_name.  But overall I
>>>> think it's not really worth the layering violation that patches 2 and 3 
>>>> are;
>>>> and it's definitely not stable material.
>>>
>>> "str" is clearly a degradation for me.  I breaks usage like
>>>
>>>     for i in `qemu -device help 2>&1 | sed -n 's/^name "\([^"]*\)".*/\1/p'`
>>>     do qemu -device $i,help 2>&1
>>>     done | grep =drive
>>>
>>> Finds all block device models.  I've done such things many times.
>>
>> Just replace "grep =drive" with "fgrep .drive".  Similarly:
>>
>>   =chr     -> .chardev  (bonus: matches the command line option)
>>   =netdev  -> .netdev
>>   =vlan    -> .vlan
>>   =macaddr -> .mac
> 
> Unlike =drive, this isn't guaranteed to work.

If it doesn't, when we've been consistent so far, it's a bug.

>> It is, but we're suprisingly consistent in the naming of such
>> special-typed properties.  So it's actually a good thing that
>> legacy_name provides redundant information.
> 
> Given our overall consistency track record: yes, it's surprising, and no,
> I'm not comfortable relying on us being consistent :)

The point of stuff like QOM is exactly to force us to be consistent.
No, it doesn't always work.  But patches 2 and 3 really are a layering
violation.  I have no idea how to bring back "drive" without introducing
a layering violation somewhere, but this one is really too much...

Paolo

Reply via email to