[libvirt] [PATCH v2] virsh: Don't break loop of domblkinfo for disks

John Ferlan jferlan at redhat.com
Fri Sep 21 12:36:34 UTC 2018



On 09/21/2018 08:32 AM, Michal Privoznik wrote:
> On 08/22/2018 11:46 AM, Han Han wrote:
>> https://bugzilla.redhat.com/show_bug.cgi?id=1619625
>>
>> --all option is added to cmdDomblkinfo since commit 62c39193 allowing to
>> show all block devices info. Reset error when empty source in case error
>> breaks the loop of domblkinfo for disks.
>>
>> Signed-off-by: Han Han <hhan at redhat.com>
>> ---
>>  tools/virsh-domain-monitor.c | 13 +++++++++----
>>  1 file changed, 9 insertions(+), 4 deletions(-)
>>
>> diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c
>> index b9b4f9739b..576610f005 100644
>> --- a/tools/virsh-domain-monitor.c
>> +++ b/tools/virsh-domain-monitor.c
>> @@ -475,6 +475,7 @@ cmdDomblkinfo(vshControl *ctl, const vshCmd *cmd)
>>      int ndisks;
>>      size_t i;
>>      xmlNodePtr *disks = NULL;
>> +    char *source = NULL;
>>      char *target = NULL;
>>      char *protocol = NULL;
>>  
>> @@ -505,16 +506,18 @@ cmdDomblkinfo(vshControl *ctl, const vshCmd *cmd)
>>  
>>          for (i = 0; i < ndisks; i++) {
>>              ctxt->node = disks[i];
>> +            source = virXPathString("string(./source)", ctxt);
>>              protocol = virXPathString("string(./source/@protocol)", ctxt);
>>              target = virXPathString("string(./target/@dev)", ctxt);
>>  
>>              rc = virDomainGetBlockInfo(dom, target, &info, 0);
>>  
>>              if (rc < 0) {
>> -                /* If protocol is present that's an indication of a networked
>> -                 * storage device which cannot provide statistics, so generate
>> -                 * 0 based data and get the next disk. */
>> -                if (protocol && !active &&
>> +                /* For the case of empty cdrom, networked disk which cannot
>> +                 * provide statistics, generate 0 based data and get the next
>> +                 * disk.
>> +                 */
>> +                if (!source && protocol && !active &&
> 
> Shouldn't this look like:
> 
> if ((!source || protocol) && !active &&
> 
> I guess we want this to be:
> 
>   - either source is missing, or
>   - disk is a network one
> 
> Michal
> 

There's a v3 already:

https://www.redhat.com/archives/libvir-list/2018-August/msg01418.html

John




More information about the libvir-list mailing list