From 1c24cfe9d8016f7561af7b295835f4d1973243b2 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Mon, 8 Jun 2015 14:05:25 +0200 Subject: [PATCH] virNumaSetPagePoolSize: Produce friendlier error message 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 --- src/util/virnuma.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/util/virnuma.c b/src/util/virnuma.c index 669192a27..1a62d62d7 100644 --- a/src/util/virnuma.c +++ b/src/util/virnuma.c @@ -849,9 +849,22 @@ 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)) { + virReportError(VIR_ERR_OPERATION_FAILED, "%s", + _("page size or NUMA node not available")); + goto cleanup; + } + /* Firstly check, if there's anything for us to do */ if (virFileReadAll(nr_path, 1024, &nr_buf) < 0) goto cleanup; -- 2.39.5