[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