tools/xl: fix autoballoon regex

This regex is used for auto-balloon mode detection based on Xen command line.

The case of specifying a negative size was handled incorrectly.
>From misc/xen-command-line documentation:

    dom0_mem (x86)
    = List of ( min:<sz> | max:<sz> | <sz> )

    If a size is positive, it represents an absolute value.
    If a size is negative, it is subtracted from the total available memory.

Also add support for [tT] granularity suffix.
Also add support for memory fractions (i.e. '50%' or '1G+25%').

Signed-off-by: Dmitry Isaykin <isaikin-dmitry@yandex.ru>
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
This commit is contained in:
Dmitry Isaykin authored and Ian Jackson committed 2021-10-12 14:40:14 +01:00
1 parent d3b05f9b16
commit 2faeb4213d
1 file changed
+7 -1
+7 -1
View File
@@ -80,14 +80,20 @@ static int auto_autoballoon(void)
if (!info)
return 1; /* default to on */
#define SIZE_PATTERN "-?[0-9]+[bBkKmMgGtT]?"
ret = regcomp(&regex,
"(^| )dom0_mem=((|min:|max:)[0-9]+[bBkKmMgG]?,?)+($| )",
"(^| )dom0_mem=((|min:|max:)(" SIZE_PATTERN "|(" SIZE_PATTERN "\\+)?[0-9]{1,2}%),?)+($| )",
REG_NOSUB | REG_EXTENDED);
#undef SIZE_PATTERN
if (ret)
return 1;
ret = regexec(&regex, info->commandline, 0, NULL, 0);
regfree(&regex);
return ret == REG_NOMATCH;
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.