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 > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list