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