[libvirt] [PATCH] virNumaSetPagePoolSize: Produce friendlier error message
Michal Privoznik
mprivozn at redhat.com
Wed Jun 10 09:16:38 UTC 2015
On 09.06.2015 08:42, Martin Kletzander wrote:
> On Mon, Jun 08, 2015 at 02:41:05PM +0200, Michal Privoznik wrote:
>> https://bugzilla.redhat.com/show_bug.cgi?id=1224587
>>
>> The function takes two important arguments (among many others): @node
>> and @page_size. From these two a path under /sys is constructed. The
>> path is then used to read and write the desired size of huge pages
>> pool. However, if the path does not exists due to either @node or
>> @page_size having nonexistent value (e.g. there's no such NUMA node or
>> no page size like -2), an cryptic error message is produced:
>>
>> virsh # allocpages --pagesize 2049 --pagecount 8 --cellno -2
>> error: Failed to open file
>> '/sys/devices/system/node/node-2/hugepages/hugepages-2049kB/nr_hugepages':
>> No such file or directory
>>
>> Add two more checks to catch this and therefore produce much more
>> friendlier error messages.
>>
>> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
>> ---
>> src/util/virnuma.c | 18 ++++++++++++++++++
>> 1 file changed, 18 insertions(+)
>>
>> diff --git a/src/util/virnuma.c b/src/util/virnuma.c
>> index 669192a..5807d8f 100644
>> --- a/src/util/virnuma.c
>> +++ b/src/util/virnuma.c
>> @@ -849,9 +849,27 @@ virNumaSetPagePoolSize(int node,
>> goto cleanup;
>> }
>>
>> + if (node != -1 && !virNumaNodeIsAvailable(node)) {
>> + virReportError(VIR_ERR_OPERATION_FAILED,
>> + _("NUMA node %d is not available"),
>> + node);
>> + goto cleanup;
>> + }
>> +
>> if (virNumaGetHugePageInfoPath(&nr_path, node, page_size,
>> "nr_hugepages") < 0)
>> goto cleanup;
>>
>> + if (!virFileExists(nr_path)) {
>> + /* Strictly speaking, @nr_path contains both NUMA node and
>> page size.
>> + * So if it doesn't exist it can be due to any of those two
>> is wrong.
>> + * However, the existence of the node was checked a few lines
>> above, so
>> + * it can be only page size here. */
>
> Über-strictly speaking, unless you compile with both WITH_NUMACTL &&
> HAVE_NUMA_BITMASK_ISBITSET then virNumaNodeIsAvailable() can pass for
> invalid node in case of non-contiguous NUMA node numbers.
So what are you saying is that I should update the comment or the error
message or leave everything as-is and push it?
Michal
More information about the libvir-list
mailing list