[libvirt] [PATCH RFC 4/7] libxl: implement virDomainBlockStats

Joao Martins joao.m.martins at oracle.com
Wed Sep 9 15:19:48 UTC 2015



On 09/09/2015 02:53 PM, Daniel P. Berrange wrote:
> On Tue, Sep 08, 2015 at 09:27:27AM +0100, Joao Martins wrote:
>> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
>> index dc83083..fd952a3 100644
>> --- a/src/libxl/libxl_driver.c
>> +++ b/src/libxl/libxl_driver.c
>>  static int
>> +libxlDiskPathMatches(const char *virtpath, const char *devtype,
>> +                     int *index_r, int max_index,
>> +                     int *partition_r, int max_partition)
>> +{
>> +    const char *p;
>> +    char *ep;
>> +    int tl, c;
>> +    long pl;
>> +
>> +    tl = strlen(devtype);
>> +    if (memcmp(virtpath, devtype, tl))
>> +        return 0;
> 
> Nit-pick, we prefer use of STREQLEN / STRNEQLEN instead
> of memcmp, whenever comparing strings.
OK, I will change that.

>> +
>> +    /* We decode the drive letter as if it were in base 52
>> +     * with digits a-zA-Z, more or less */
>> +    *index_r = -1;
>> +    p = virtpath + tl;
>> +    for (;;) {
>> +        c = *p++;
>> +        if (c >= 'a' && c <= 'z') {
>> +            c -= 'a';
>> +        } else {
>> +            --p;
>> +            break;
>> +        }
>> +        (*index_r)++;
>> +        (*index_r) *= 26;
>> +        (*index_r) += c;
>> +
>> +        if (*index_r > max_index)
>> +            return 0;
>> +    }
>> +
>> +    if (!*p) {
>> +        *partition_r = 0;
>> +        return 1;
>> +    }
>> +
>> +    if (*p == '0')
>> +        return 0; /* leading zeroes not permitted in partition number */
>> +
>> +    if (virStrToLong_l(p, &ep, 10, &pl) < 0)
>> +        return 0;
>> +
>> +    if (pl > max_partition || *ep)
>> +        return 0;
>> +
>> +    *partition_r = pl;
>> +    return 1;
>> +}
> 
> IIUC, the virDiskNameToIndex() method could do the disk part
> of this, but doesn't provide the partition info. I think it
> would be desirable to extend that common method to provide
> partition info too, as it is conceptually useful elsewhere.
> 
Makes sense, Perhaps adding virDiskNameToIndexPartition helper to virutil.c (and
correspondent test) and extend it there with the partition info.

> Regards,
> Daniel
> 




More information about the libvir-list mailing list