
On 09/03/2014 09:55 AM, Hongbin Lu wrote:
The OpenVZ driver reported an error on parsing some OpenVZ config parameters (e.g. diskspace). This issue is due to the driver made two incorrect assumptions about the value of the parameters: 1. Assume paramaeter is just a number (e.g. 1024). 2. Assume the number is an integer. Actually, an OpenVZ config parameter may consists of a scalar and a unit, and the scalar is not necessary an integer (e.g. 2.2G). This patch is for fixing this issue. ---
+static int +openvzParseParamUnit(char* str, openvzParamUnit *unit) +{ + int len = strlen(str); + if (len == 0) + return -1; + + switch (str[len - 1]) { + case 'G': + case 'g': + str[len - 1] = '\0'; + if (unit != NULL) + *unit = OPENVZ_PARAM_UNIT_GIGABYTE; + break;
This looks similar to the existing virScaleInteger (src/util/virutil.c) and its wrapper vshCommandOptScaledInt (tools/virsh.c); any chance you can reuse that code (maybe by making it more generic) instead of reimplementing it from scratch? -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org