diff --git a/.gitignore b/.gitignore index 0583968..869264c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1 @@ vhostmd-0.4.tar.bz2 -/vhostmd-0.5.tar.bz2 -/vhostmd-1.0.tar.gz -/vhostmd-1.1.tar.gz diff --git a/0001-Relax-virtio-requirement-in-config-file.patch b/0001-Relax-virtio-requirement-in-config-file.patch deleted file mode 100644 index f14d062..0000000 --- a/0001-Relax-virtio-requirement-in-config-file.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 83cc269f6892852be94467cea771b3ad1da8a369 Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Tue, 8 Oct 2019 20:56:18 -0600 -Subject: [PATCH 01/19] Relax virtio requirement in config file - -When the virtio transport was introduced the schema was changed to -require a transport in vhostmd.conf. When updating existing -deployments without a virtio transport specified in vhostmd.conf, -vhostmd fails to start - -/usr/sbin/vhostmd -d -/etc/vhostmd/vhostmd.conf:41: element globals: validity error : Element -globals content does not follow the DTD, expecting (disk , virtio , -update_period , path , transport+), got (disk update_period path transport ) -validate_config_file(): Failed to validate :/etc/vhostmd/vhostmd.conf -Config file: /etc/vhostmd/vhostmd.conf, fails DTD validation - -Relax the requirement for virtio transport in the schema. With the -introduction of multiple transports perhaps the others shoud be optional -as well, but requiring virtio is clearly a regression. - -Signed-off-by: Jim Fehlig ---- - vhostmd.dtd | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/vhostmd.dtd b/vhostmd.dtd -index db417fd..888270e 100644 ---- a/vhostmd.dtd -+++ b/vhostmd.dtd -@@ -9,7 +9,7 @@ Virtual Host Metrics Daemon (vhostmd). Configuration file DTD - --> - - -- -+ - - - --- -2.32.0 - diff --git a/0002-libmetrics-Set-pointer-NULL-after-free.patch b/0002-libmetrics-Set-pointer-NULL-after-free.patch deleted file mode 100644 index 5a1297a..0000000 --- a/0002-libmetrics-Set-pointer-NULL-after-free.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 06e73264b2338d20aa6e3f17b9820be3768439bf Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Mon, 6 Jan 2020 16:14:18 -0700 -Subject: [PATCH 02/19] libmetrics: Set pointer NULL after free - -From a coverity scan - -vhostmd-1.1/libmetrics/libmetrics.c:185:10: warning: Attempt to free released memory - free(mdisk->buffer); - -Some error conditions will call mdisk_content_free(), which could result -in a double-free when the entire mdisk is freed and mdisk_content_free() -is called again. Protect agains these potential double-frees by setting -the mdisk contents NULL after freeing them. - -Signed-off-by: Jim Fehlig ---- - libmetrics/libmetrics.c | 24 ++++++++++++++++-------- - 1 file changed, 16 insertions(+), 8 deletions(-) - -diff --git a/libmetrics/libmetrics.c b/libmetrics/libmetrics.c -index 6c80681..a5582e7 100644 ---- a/libmetrics/libmetrics.c -+++ b/libmetrics/libmetrics.c -@@ -177,14 +177,22 @@ static metric_disk * mdisk_alloc() - static void mdisk_content_free() - { - if (mdisk) { -- if (mdisk->doc) -- xmlFreeDoc(mdisk->doc); -- if (mdisk->pctxt) -- xmlFreeParserCtxt(mdisk->pctxt); -- if (mdisk->buffer) -- free(mdisk->buffer); -- if (mdisk->disk_name) -- free(mdisk->disk_name); -+ if (mdisk->doc) { -+ xmlFreeDoc(mdisk->doc); -+ mdisk->doc = NULL; -+ } -+ if (mdisk->pctxt) { -+ xmlFreeParserCtxt(mdisk->pctxt); -+ mdisk->pctxt = NULL; -+ } -+ if (mdisk->buffer) { -+ free(mdisk->buffer); -+ mdisk->buffer = NULL; -+ } -+ if (mdisk->disk_name) { -+ free(mdisk->disk_name); -+ mdisk->disk_name = NULL; -+ } - } - } - --- -2.32.0 - diff --git a/0003-libmetrics-Initialize-local-variable-ret-to-failure.patch b/0003-libmetrics-Initialize-local-variable-ret-to-failure.patch deleted file mode 100644 index 290ead0..0000000 --- a/0003-libmetrics-Initialize-local-variable-ret-to-failure.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 9db959c9e3f83cb2a4fc07534462e769990d9631 Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Mon, 6 Jan 2020 16:33:24 -0700 -Subject: [PATCH 03/19] libmetrics: Initialize local variable 'ret' to failure - -The get_mdef() and dump_xenstore_metrics() functions have local variables -named 'ret' that are initialized to zero, meaning success. In failure paths -'ret' is set to -1 before jumping to the 'out' label. Invert this logic by -initializing 'ret' to -1 and only setting it to success after the function -bodies have successfully executed. - -Signed-off-by: Jim Fehlig ---- - libmetrics/libmetrics.c | 16 ++++------------ - 1 file changed, 4 insertions(+), 12 deletions(-) - -diff --git a/libmetrics/libmetrics.c b/libmetrics/libmetrics.c -index a5582e7..49b38ea 100644 ---- a/libmetrics/libmetrics.c -+++ b/libmetrics/libmetrics.c -@@ -228,7 +228,7 @@ static int get_mdef(metric_disk *mdisk, private_metric *pmdef) - xmlNodePtr node; - char *str; - char *xpath; -- int ret = 0; -+ int ret = -1; - - ctxt = xmlXPathNewContext(mdisk->doc); - if (!ctxt) { -@@ -242,19 +242,16 @@ static int get_mdef(metric_disk *mdisk, private_metric *pmdef) - if ((obj == NULL) || (obj->type != XPATH_NODESET)) { - libmsg("%s(): No metrics found that matches %s in context:%s or malformed definition\n", - __func__, pmdef->name, pmdef->context); -- ret = -1; - goto out; - } - if (xmlXPathNodeSetGetLength(obj->nodesetval) != 1) { - libmsg("%s(): No metrics found that matches %s in context:%s or malformed definition\n", - __func__, pmdef->name, pmdef->context); -- ret = -1; - goto out; - } - node = obj->nodesetval->nodeTab[0]; - if ((str = (char *)xmlGetProp(node, BAD_CAST "type")) == NULL) { - libmsg("%s(): Metric type not specified\n", __func__); -- ret = -1; - goto out; - } - metric_type_from_str((char *)str, &(pmdef->type)); -@@ -267,7 +264,6 @@ static int get_mdef(metric_disk *mdisk, private_metric *pmdef) - free(xpath); - if ((obj == NULL) || (obj->type != XPATH_NODESET)) { - libmsg("%s(): No metrics value found!\n", __func__); -- ret = -1; - goto out; - } - -@@ -276,6 +272,7 @@ static int get_mdef(metric_disk *mdisk, private_metric *pmdef) - str = (char *)xmlNodeListGetString(mdisk->doc, node, 1); - pmdef->value = strdup(str); - free(str); -+ ret = 0; - - out: - if (obj) -@@ -707,7 +704,7 @@ int dump_xenstore_metrics(const char *dest_file) - char *buf = NULL, *path = NULL, *metrics = NULL; - struct xs_handle *xsh = NULL; - unsigned int len; -- int ret = 0; -+ int ret = -1; - xmlParserCtxtPtr pctxt = NULL; - xmlDocPtr doc = NULL; - int domid; -@@ -726,35 +723,30 @@ int dump_xenstore_metrics(const char *dest_file) - - if ((domid = get_dom_id()) == -1) { - libmsg("Unable to derive domID.\n" ); -- ret = -1; - goto out; - } - - xsh = xs_domain_open(); - if (xsh == NULL) { - libmsg("xs_domain_open() error. errno: %d.\n", errno); -- ret = -1; - goto out; - } - - path = xs_get_domain_path(xsh, domid); - if (path == NULL) { - libmsg("xs_get_domain_path() error. domid %d.\n", 0); -- ret = -1; - goto out; - } - asprintf(&buf, "%s/metrics", path); - metrics = xs_read(xsh, XBT_NULL, buf, &len); - if (metrics == NULL) { - libmsg("xs_read(): uuid get error. %s.\n", buf); -- ret = -1; - goto out; - } - - pctxt = xmlNewParserCtxt(); - if (!pctxt || !pctxt->sax) { - libmsg("%s(): failed to create parser \n", __func__); -- ret = -1; - goto out; - } - -@@ -764,10 +756,10 @@ int dump_xenstore_metrics(const char *dest_file) - XML_PARSE_NOWARNING); - if (!doc) { - libmsg("%s(): libxml failed to xenstore metrics attribute\n", __func__); -- ret = -1; - goto out; - } - xmlDocFormatDump(fp, doc, 1); -+ ret = 0; - - out: - if (fp && fp != stdout) --- -2.32.0 - diff --git a/0004-libmetrics-Check-return-value-of-asprintf.patch b/0004-libmetrics-Check-return-value-of-asprintf.patch deleted file mode 100644 index 967b012..0000000 --- a/0004-libmetrics-Check-return-value-of-asprintf.patch +++ /dev/null @@ -1,67 +0,0 @@ -From f659ec774221532cc5452a07418e2ab1385f162c Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Mon, 6 Jan 2020 16:43:21 -0700 -Subject: [PATCH 04/19] libmetrics: Check return value of asprintf - -Exmaple from coverity scan - -vhostmd-1.1/libmetrics/libmetrics.c: scope_hint: In function 'get_mdef' -vhostmd-1.1/libmetrics/libmetrics.c:231:4: warning: ignoring return value of 'asprintf', declared with attribute warn_unused_result [-Wunused-result] - asprintf(&xpath, "//metrics/metric[name='%s'][@context='%s']", pmdef->name, pmdef->context); - ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Signed-off-by: Jim Fehlig ---- - libmetrics/libmetrics.c | 15 +++++++++++---- - 1 file changed, 11 insertions(+), 4 deletions(-) - -diff --git a/libmetrics/libmetrics.c b/libmetrics/libmetrics.c -index 49b38ea..4b2369a 100644 ---- a/libmetrics/libmetrics.c -+++ b/libmetrics/libmetrics.c -@@ -236,7 +236,9 @@ static int get_mdef(metric_disk *mdisk, private_metric *pmdef) - } - - /* Get the matching metric node type */ -- asprintf(&xpath, "//metrics/metric[name='%s'][@context='%s']", pmdef->name, pmdef->context); -+ if (asprintf(&xpath, "//metrics/metric[name='%s'][@context='%s']", pmdef->name, pmdef->context) < 0) -+ goto out; -+ - obj = xmlXPathEval(BAD_CAST xpath, ctxt); - free(xpath); - if ((obj == NULL) || (obj->type != XPATH_NODESET)) { -@@ -259,7 +261,9 @@ static int get_mdef(metric_disk *mdisk, private_metric *pmdef) - xmlXPathFreeObject(obj); - - /* Get the matching metric node value */ -- asprintf(&xpath, "//metrics/metric[name='%s'][@context='%s']/value/text()", pmdef->name, pmdef->context); -+ if (asprintf(&xpath, "//metrics/metric[name='%s'][@context='%s']/value/text()", pmdef->name, pmdef->context) < 0) -+ goto out; -+ - obj = xmlXPathEval( BAD_CAST xpath, ctxt); /* worked but no nodes */ - free(xpath); - if ((obj == NULL) || (obj->type != XPATH_NODESET)) { -@@ -349,7 +353,8 @@ retry: - strcmp(entry->d_name, "..") == 0) - continue; - -- asprintf(&path, "/dev/%s", entry->d_name); -+ if (asprintf(&path, "/dev/%s", entry->d_name) < 0) -+ goto error; - #else - path = strdup("/dev/shm/vhostmd0"); - #endif -@@ -737,7 +742,9 @@ int dump_xenstore_metrics(const char *dest_file) - libmsg("xs_get_domain_path() error. domid %d.\n", 0); - goto out; - } -- asprintf(&buf, "%s/metrics", path); -+ if (asprintf(&buf, "%s/metrics", path) , 0) -+ goto out; -+ - metrics = xs_read(xsh, XBT_NULL, buf, &len); - if (metrics == NULL) { - libmsg("xs_read(): uuid get error. %s.\n", buf); --- -2.32.0 - diff --git a/0005-libmetrics-Remove-unsafe-XML_PARSE_NOENT-option.patch b/0005-libmetrics-Remove-unsafe-XML_PARSE_NOENT-option.patch deleted file mode 100644 index 8b64921..0000000 --- a/0005-libmetrics-Remove-unsafe-XML_PARSE_NOENT-option.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 3d4f3acdfc9f937bea946bb1c7dfad1f3516a6ce Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Mon, 6 Jan 2020 17:42:39 -0700 -Subject: [PATCH 05/19] libmetrics: Remove unsafe XML_PARSE_NOENT option - -From coverity scan - -Error: UNSAFE_XML_PARSE_CONFIG: -vhostmd-1.1/libmetrics/libmetrics.c:412: unsafe_xml_parse_config: XML parse option should not have flag "XML_PARSE_NOENT" set, which is vulnerable to XML external entity attack. - 410| mdisk->doc = xmlCtxtReadMemory(mdisk->pctxt, mdisk->buffer, - 411| mdisk->length, "mdisk.xml", NULL, - 412|-> XML_PARSE_NOENT | XML_PARSE_NONET | - 413| XML_PARSE_NOWARNING); - 414| if (!mdisk->doc) { - -It should be safe to remove the option. - -Signed-off-by: Jim Fehlig ---- - libmetrics/libmetrics.c | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git a/libmetrics/libmetrics.c b/libmetrics/libmetrics.c -index 4b2369a..2819f80 100644 ---- a/libmetrics/libmetrics.c -+++ b/libmetrics/libmetrics.c -@@ -418,9 +418,8 @@ retry: - } - - mdisk->doc = xmlCtxtReadMemory(mdisk->pctxt, mdisk->buffer, -- mdisk->length, "mdisk.xml", NULL, -- XML_PARSE_NOENT | XML_PARSE_NONET | -- XML_PARSE_NOWARNING); -+ mdisk->length, "mdisk.xml", NULL, -+ XML_PARSE_NONET | XML_PARSE_NOWARNING); - if (!mdisk->doc) { - libmsg("%s(): libxml failed to parse mdisk.xml buffer\n", __func__); - goto error; --- -2.32.0 - diff --git a/0006-libmetrics-Ensure-libmetrics-mutex-is-unlocked-in-er.patch b/0006-libmetrics-Ensure-libmetrics-mutex-is-unlocked-in-er.patch deleted file mode 100644 index f23d4af..0000000 --- a/0006-libmetrics-Ensure-libmetrics-mutex-is-unlocked-in-er.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 855326a8c9ec1a599354f743fb5391a2766a2a9c Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Mon, 6 Jan 2020 17:47:10 -0700 -Subject: [PATCH 06/19] libmetrics: Ensure libmetrics mutex is unlocked in - error paths - -From coverity scan - -vhostmd-1.1/libmetrics/libmetrics.c:595: missing_unlock: Returning without unlocking "libmetrics_mutex". - 593| if (mdisk_alloc() == NULL) { - 594| errno = ENOMEM; - 595|-> return -1; - 596| } - 597| read_mdisk(mdisk); - -Signed-off-by: Jim Fehlig ---- - libmetrics/libmetrics.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/libmetrics/libmetrics.c b/libmetrics/libmetrics.c -index 2819f80..756645c 100644 ---- a/libmetrics/libmetrics.c -+++ b/libmetrics/libmetrics.c -@@ -601,7 +601,7 @@ int get_metric(const char *metric_name, metric **mdef, metric_context context) - mdisk_free(); - if (mdisk_alloc() == NULL) { - errno = ENOMEM; -- return -1; -+ goto out; - } - read_mdisk(mdisk); - } -@@ -620,7 +620,7 @@ int get_metric(const char *metric_name, metric **mdef, metric_context context) - - if ((lmdef = metric_alloc_padded(extra_len)) == NULL) { - errno = ENOMEM; -- return -1; -+ goto out; - } - - lmdef->type = pmdef.type; -@@ -635,6 +635,7 @@ int get_metric(const char *metric_name, metric **mdef, metric_context context) - if (pmdef.context) - free(pmdef.context); - -+out: - /* unlock library data */ - pthread_mutex_unlock(&libmetrics_mutex); - return ret; --- -2.32.0 - diff --git a/0007-libmetrics-Fix-potential-memory-leak.patch b/0007-libmetrics-Fix-potential-memory-leak.patch deleted file mode 100644 index 4f20b0b..0000000 --- a/0007-libmetrics-Fix-potential-memory-leak.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 2cbce5fcb652226bf159f9cd9649f5869d76f6b7 Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Mon, 6 Jan 2020 18:40:33 -0700 -Subject: [PATCH 07/19] libmetrics: Fix potential memory leak - -From coverity scan - -vhostmd-1.1/libmetrics/libmetrics.c:613:18: warning: Potential leak of memory pointed to by 'pmdef.context' - errno = ENOMEM; - -Signed-off-by: Jim Fehlig ---- - libmetrics/libmetrics.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/libmetrics/libmetrics.c b/libmetrics/libmetrics.c -index 756645c..6817df9 100644 ---- a/libmetrics/libmetrics.c -+++ b/libmetrics/libmetrics.c -@@ -586,7 +586,8 @@ int get_metric(const char *metric_name, metric **mdef, metric_context context) - int ret = -1; - - *mdef = NULL; -- -+ memset(&pmdef, 0, sizeof(private_metric)); -+ - if (mdisk == NULL) { - errno = ENODEV; - return -1; -@@ -628,6 +629,8 @@ int get_metric(const char *metric_name, metric **mdef, metric_context context) - *mdef = lmdef; - ret = 0; - } -+ -+out: - if (pmdef.name) - free(pmdef.name); - if (pmdef.value) -@@ -635,7 +638,6 @@ int get_metric(const char *metric_name, metric **mdef, metric_context context) - if (pmdef.context) - free(pmdef.context); - --out: - /* unlock library data */ - pthread_mutex_unlock(&libmetrics_mutex); - return ret; --- -2.32.0 - diff --git a/0008-libmetrics-Use-proper-conversion-specifier-when-call.patch b/0008-libmetrics-Use-proper-conversion-specifier-when-call.patch deleted file mode 100644 index 5200180..0000000 --- a/0008-libmetrics-Use-proper-conversion-specifier-when-call.patch +++ /dev/null @@ -1,40 +0,0 @@ -From bc5da0b99699bbeb653b86398a7112bc0885c31e Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Mon, 6 Jan 2020 18:51:40 -0700 -Subject: [PATCH 08/19] libmetrics: Use proper conversion specifier when - calling log function - -From coverity scan - -vhostmd-1.1/libmetrics/libmetrics.c:817: invalid_type: Argument "5L" to format specifier "%u" was expected to have type "unsigned int" but has type "long". - -Signed-off-by: Jim Fehlig ---- - libmetrics/libmetrics.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/libmetrics/libmetrics.c b/libmetrics/libmetrics.c -index 6817df9..0f4cf70 100644 ---- a/libmetrics/libmetrics.c -+++ b/libmetrics/libmetrics.c -@@ -823,7 +823,7 @@ static char *get_virtio_metrics(void) - usleep(10000); - if (time(NULL) > end_time) { - libmsg("%s(): Unable to send metrics request" -- " - timeout after %us\n", __func__, timeout); -+ " - timeout after %lis\n", __func__, timeout); - goto error; - } - } -@@ -856,7 +856,7 @@ static char *get_virtio_metrics(void) - usleep(10000); - if (time(NULL) > end_time) { - libmsg("%s(): Unable to read metrics" -- " - timeout after %us\n", __func__, timeout); -+ " - timeout after %lis\n", __func__, timeout); - goto error; - } - } else --- -2.32.0 - diff --git a/0009-libmetrics-Fix-potential-leak-of-FILE-pointer.patch b/0009-libmetrics-Fix-potential-leak-of-FILE-pointer.patch deleted file mode 100644 index 8206fd2..0000000 --- a/0009-libmetrics-Fix-potential-leak-of-FILE-pointer.patch +++ /dev/null @@ -1,75 +0,0 @@ -From cba4dddebc56886034038f907085da3c6b50baab Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Mon, 6 Jan 2020 18:59:18 -0700 -Subject: [PATCH 09/19] libmetrics: Fix potential leak of FILE pointer - -From coverity scan - -vhostmd-1.1/libmetrics/libmetrics.c:892: alloc_fn: Storage is returned from allocation function "fopen". -vhostmd-1.1/libmetrics/libmetrics.c:892: var_assign: Assigning: "fp" = storage returned from "fopen(dest_file, "w")". -vhostmd-1.1/libmetrics/libmetrics.c:900: noescape: Resource "fp" is not freed or pointed-to in "fwrite". -vhostmd-1.1/libmetrics/libmetrics.c:909: leaked_storage: Variable "fp" going out of scope leaks the storage it points to. - 907| free(response); - 908| - 909|-> return 0; - 910| - 911| error: - -Signed-off-by: Jim Fehlig ---- - libmetrics/libmetrics.c | 16 +++++++--------- - 1 file changed, 7 insertions(+), 9 deletions(-) - -diff --git a/libmetrics/libmetrics.c b/libmetrics/libmetrics.c -index 0f4cf70..8819074 100644 ---- a/libmetrics/libmetrics.c -+++ b/libmetrics/libmetrics.c -@@ -890,10 +890,11 @@ int dump_virtio_metrics(const char *dest_file) - FILE *fp = stdout; - char *response = NULL; - size_t len; -+ int ret = -1; - - response = get_virtio_metrics(); - if (response == NULL) -- goto error; -+ return -1; - - len = strlen(response); - -@@ -902,27 +903,24 @@ int dump_virtio_metrics(const char *dest_file) - if (fp == NULL) { - libmsg("%s(), unable to dump metrics: fopen(%s) %s\n", - __func__, dest_file, strerror(errno)); -- goto error; -+ goto out; - } - } - - if (fwrite(response, 1UL, len, fp) != len) { - libmsg("%s(), unable to export metrics to file:%s %s\n", - __func__, dest_file ? dest_file : "stdout", strerror(errno)); -- goto error; -+ goto out; - } - -- if (response) -- free(response); -+ ret = 0; - -- return 0; -- -- error: -+out: - if (dest_file && fp) - fclose(fp); - - if (response) - free(response); - -- return -1; -+ return ret; - } --- -2.32.0 - diff --git a/0010-util-Add-missing-call-to-va_end.patch b/0010-util-Add-missing-call-to-va_end.patch deleted file mode 100644 index dfe25fd..0000000 --- a/0010-util-Add-missing-call-to-va_end.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 69fcc2075d7cb1f16eb7d27ae3559fa3c77f5514 Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Tue, 7 Jan 2020 11:36:56 -0700 -Subject: [PATCH 10/19] util: Add missing call to va_end - -From coverity scan - -Error: VARARGS (CWE-237): -vhostmd-1.1/vhostmd/util.c:209: va_init: Initializing va_list "argptr". -vhostmd-1.1/vhostmd/util.c:218: missing_va_end: va_end was not called for "argptr". - 216| grow_size = (count > 1000) ? count : 1000; - 217| if (buffer_grow(buf, grow_size) < 0) - 218|-> return; - 219| - 220| size = buf->size - buf->use - 1; - -Error: VARARGS (CWE-237): -vhostmd-1.1/vhostmd/util.c:209: va_init: Initializing va_list "argptr". -vhostmd-1.1/vhostmd/util.c:226: missing_va_end: va_end was not called for "argptr". - 224| buf->use += count; - 225| buf->content[buf->use] = '\0'; - 226|-> } - 227| - 228| /* - -Signed-off-by: Jim Fehlig ---- - vhostmd/util.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/vhostmd/util.c b/vhostmd/util.c -index 5747f16..1f9545b 100644 ---- a/vhostmd/util.c -+++ b/vhostmd/util.c -@@ -214,13 +214,16 @@ void vu_buffer_vsprintf(vu_buffer *buf, const char *format, ...) - va_end(locarg); - - grow_size = (count > 1000) ? count : 1000; -- if (buffer_grow(buf, grow_size) < 0) -+ if (buffer_grow(buf, grow_size) < 0) { -+ va_end(argptr); - return; -+ } - - size = buf->size - buf->use - 1; - va_copy(locarg, argptr); - } - va_end(locarg); -+ va_end(argptr); - buf->use += count; - buf->content[buf->use] = '\0'; - } --- -2.32.0 - diff --git a/0011-util-Fix-potential-memory-leak.patch b/0011-util-Fix-potential-memory-leak.patch deleted file mode 100644 index 418b678..0000000 --- a/0011-util-Fix-potential-memory-leak.patch +++ /dev/null @@ -1,40 +0,0 @@ -From b39f7cc778903e9cda8aa46d170b9efe80efda89 Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Tue, 7 Jan 2020 11:41:11 -0700 -Subject: [PATCH 11/19] util: Fix potential memory leak - -From coverity scan - -vhostmd-1.1/vhostmd/util.c:415:14: warning: Potential leak of memory pointed to by 'cp' - return(NULL); - -Signed-off-by: Jim Fehlig ---- - vhostmd/util.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/vhostmd/util.c b/vhostmd/util.c -index 1f9545b..599c5c7 100644 ---- a/vhostmd/util.c -+++ b/vhostmd/util.c -@@ -415,7 +415,7 @@ char *vu_str_replace(const char *haystack, const char *origstr, const char *news - - dest = malloc(strlen(haystack) - (origlen * cnt) + (newlen * cnt) + 1); - if (dest == NULL) { -- return(NULL); -+ goto out; - } - *dest = '\0'; - -@@ -428,6 +428,8 @@ char *vu_str_replace(const char *haystack, const char *origstr, const char *news - cp = p + origlen; - } - strcat(dest, cp); -+ -+out: - free(tempstr); - - return dest; --- -2.32.0 - diff --git a/0012-util-Check-return-value-of-strstr.patch b/0012-util-Check-return-value-of-strstr.patch deleted file mode 100644 index 0f4219a..0000000 --- a/0012-util-Check-return-value-of-strstr.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 4350fcf7a5c4cb7d803db1a0df2b757230b90e25 Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Tue, 7 Jan 2020 11:47:33 -0700 -Subject: [PATCH 12/19] util: Check return value of strstr - -From coverity scan - -vhostmd-1.1/vhostmd/util.c:421: returned_null: "strstr" returns "NULL" (checked 6 out of 7 times). - -Signed-off-by: Jim Fehlig ---- - vhostmd/util.c | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - -diff --git a/vhostmd/util.c b/vhostmd/util.c -index 599c5c7..317dbc6 100644 ---- a/vhostmd/util.c -+++ b/vhostmd/util.c -@@ -422,10 +422,12 @@ char *vu_str_replace(const char *haystack, const char *origstr, const char *news - cp = tempstr; - for (i=0; i -Date: Tue, 7 Jan 2020 11:52:23 -0700 -Subject: [PATCH 13/19] Check return value of asprintf - -Example from coverity scan - -vhostmd-1.1/vhostmd/util.c: scope_hint: In function 'vu_append_string' -vhostmd-1.1/vhostmd/util.c:484:7: warning: ignoring return value of 'asprintf', declared with attribute warn_unused_result [-Wunused-result] - asprintf(&cp, "%s,%s", *dest, str); - -Signed-off-by: Jim Fehlig ---- - vhostmd/util.c | 3 ++- - vhostmd/vhostmd.c | 3 ++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/vhostmd/util.c b/vhostmd/util.c -index 317dbc6..d7ce3fc 100644 ---- a/vhostmd/util.c -+++ b/vhostmd/util.c -@@ -488,7 +488,8 @@ int vu_append_string(char **dest, xmlChar * str) - char *cp; - - if (*dest) { -- asprintf(&cp, "%s,%s", *dest, str); -+ if (asprintf(&cp, "%s,%s", *dest, str) < 0) -+ return -1; - free(*dest); - *dest = cp; - } -diff --git a/vhostmd/vhostmd.c b/vhostmd/vhostmd.c -index 7e29e6f..7374ec9 100644 ---- a/vhostmd/vhostmd.c -+++ b/vhostmd/vhostmd.c -@@ -259,7 +259,8 @@ static int parse_group_metric(xmlDocPtr xml ATTRIBUTE_UNUSED, - vu_log(VHOSTMD_WARN, "parse_group_metric: node path not found"); - return -1; - } -- asprintf(&cp, "%s/variable", path); -+ if (asprintf(&cp, "%s/variable", path) < 0) -+ goto error; - - obj = xmlXPathEval( BAD_CAST cp, ctxt); - if ((obj == NULL) || (obj->type != XPATH_NODESET)) { --- -2.32.0 - diff --git a/0014-vhostmd-Fix-memory-leak-in-parse_transports.patch b/0014-vhostmd-Fix-memory-leak-in-parse_transports.patch deleted file mode 100644 index 3b838e5..0000000 --- a/0014-vhostmd-Fix-memory-leak-in-parse_transports.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 71a94a18c470ebbd870253b8aedbb7b3b24a274b Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Tue, 14 Jan 2020 15:08:54 -0700 -Subject: [PATCH 14/19] vhostmd: Fix memory leak in parse_transports - -From coverity scan - -vhostmd-1.1/vhostmd/vhostmd.c:455: alloc_fn: Storage is returned from allocation function "xmlXPathEval". -vhostmd-1.1/vhostmd/vhostmd.c:455: var_assign: Assigning: "obj" = storage returned from "xmlXPathEval((xmlChar *)"//vhostmd/globals/transport", ctxt)". -vhostmd-1.1/vhostmd/vhostmd.c:474: leaked_storage: Variable "obj" going out of scope leaks the storage it points to. - 472| #else - 473| vu_log (VHOSTMD_ERR, "No support for xenstore transport in this vhostmd"); - 474|-> return -1; - 475| #endif - 476| } - -Signed-off-by: Jim Fehlig ---- - vhostmd/vhostmd.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/vhostmd/vhostmd.c b/vhostmd/vhostmd.c -index 7374ec9..3d1d53e 100644 ---- a/vhostmd/vhostmd.c -+++ b/vhostmd/vhostmd.c -@@ -472,6 +472,7 @@ static int parse_transports(xmlDocPtr xml, - transports |= XENSTORE; - #else - vu_log (VHOSTMD_ERR, "No support for xenstore transport in this vhostmd"); -+ xmlXPathFreeObject(obj); - return -1; - #endif - } --- -2.32.0 - diff --git a/0015-vhostmd-Remove-unsafe-XML_PARSE_NOENT-option.patch b/0015-vhostmd-Remove-unsafe-XML_PARSE_NOENT-option.patch deleted file mode 100644 index 9872d7d..0000000 --- a/0015-vhostmd-Remove-unsafe-XML_PARSE_NOENT-option.patch +++ /dev/null @@ -1,36 +0,0 @@ -From d9eeede678521776d327784d0307de6c98920bb8 Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Tue, 14 Jan 2020 15:12:28 -0700 -Subject: [PATCH 15/19] vhostmd: Remove unsafe XML_PARSE_NOENT option - -From coverity scan - -vhostmd-1.1/vhostmd/vhostmd.c:553: unsafe_xml_parse_config: XML parse option should not have flag "XML_PARSE_NOENT" set, which is vulnerable to XML external entty attack. - 551| - 552| xml = xmlCtxtReadFile(pctxt, filename, NULL, - 553|-> XML_PARSE_NOENT | XML_PARSE_NONET | - 554| XML_PARSE_NOWARNING); - 555| if (!xml) { - -Signed-off-by: Jim Fehlig ---- - vhostmd/vhostmd.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/vhostmd/vhostmd.c b/vhostmd/vhostmd.c -index 3d1d53e..4d04989 100644 ---- a/vhostmd/vhostmd.c -+++ b/vhostmd/vhostmd.c -@@ -552,8 +552,7 @@ static int parse_config_file(const char *filename) - goto out; - - xml = xmlCtxtReadFile(pctxt, filename, NULL, -- XML_PARSE_NOENT | XML_PARSE_NONET | -- XML_PARSE_NOWARNING); -+ XML_PARSE_NONET | XML_PARSE_NOWARNING); - if (!xml) { - vu_log(VHOSTMD_ERR, "libxml failed to parse config file %s", - filename); --- -2.32.0 - diff --git a/0016-vhostmd-Check-return-value-of-file-functions.patch b/0016-vhostmd-Check-return-value-of-file-functions.patch deleted file mode 100644 index 2597209..0000000 --- a/0016-vhostmd-Check-return-value-of-file-functions.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 4f7b23e19c88c92d834d5f975c846b47eaa03c79 Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Tue, 14 Jan 2020 15:33:39 -0700 -Subject: [PATCH 16/19] vhostmd: Check return value of file functions - -Check return value of ftruncate, lseek, and write functions as -reported by coverity. Example from coverity scan - -vhostmd-1.1/vhostmd/vhostmd.c: scope_hint: In function 'metrics_disk_create' -vhostmd-1.1/vhostmd/vhostmd.c:821:4: warning: ignoring return value of 'ftruncate', declared with attribute warn_unused_result [-Wunused-result] - ftruncate(fd, mdisk_size); - ^~~~~~~~~~~~~~~~~~~~~~~~~ - 819| - 820| /* truncate to a possible new size */ - 821|-> ftruncate(fd, mdisk_size); - 822| - 823| /* zero fill metrics data */ - -Signed-off-by: Jim Fehlig ---- - vhostmd/vhostmd.c | 33 +++++++++++++++++++++++++-------- - 1 file changed, 25 insertions(+), 8 deletions(-) - -diff --git a/vhostmd/vhostmd.c b/vhostmd/vhostmd.c -index 4d04989..1600a87 100644 ---- a/vhostmd/vhostmd.c -+++ b/vhostmd/vhostmd.c -@@ -675,8 +675,12 @@ static int metrics_disk_busy(int fd, int busy) - { - md_header.busy = (uint32_t)(htonl(busy)); - -- lseek(fd, offsetof(mdisk_header, busy), SEEK_SET); -- write(fd, &(md_header.busy), sizeof(uint32_t)); -+ if (lseek(fd, offsetof(mdisk_header, busy), SEEK_SET) == -1) -+ return -1; -+ -+ if (write(fd, &(md_header.busy), sizeof(uint32_t)) == -1) -+ return -1; -+ - return 0; - } - -@@ -724,6 +728,8 @@ error: - - static int metrics_disk_update(int fd, vu_buffer *buf) - { -+ int ret = -1; -+ - if (buf->use > MDISK_SIZE) { - vu_log(VHOSTMD_ERR, "Metrics data is larger than metrics disk"); - return -1; -@@ -731,11 +737,17 @@ static int metrics_disk_update(int fd, vu_buffer *buf) - - metrics_disk_busy(fd, 1); - metrics_disk_header_update(fd, buf); -- lseek(fd, MDISK_HEADER_SIZE, SEEK_SET); -- write(fd, buf->content, buf->use); -+ if (lseek(fd, MDISK_HEADER_SIZE, SEEK_SET) == -1) -+ goto out; -+ -+ if (write(fd, buf->content, buf->use) == -1) -+ goto out; -+ -+ ret = 0; -+ -+out: - metrics_disk_busy(fd, 0); -- -- return 0; -+ return ret; - } - - static int metrics_free() -@@ -819,10 +831,15 @@ static int metrics_disk_create(void) - } - - /* truncate to a possible new size */ -- ftruncate(fd, mdisk_size); -+ if (ftruncate(fd, mdisk_size) == -1){ -+ vu_log(VHOSTMD_ERR, "Failed to truncate metrics disk: %s", -+ strerror(errno)); -+ goto error; -+ } - - /* zero fill metrics data */ -- lseek(fd, MDISK_HEADER_SIZE, SEEK_SET); -+ if (lseek(fd, MDISK_HEADER_SIZE, SEEK_SET) == -1) -+ goto error; - for (i = 0; i < size / MDISK_SIZE_MIN; i++) - if (write(fd, buf, MDISK_SIZE_MIN) != MDISK_SIZE_MIN) { - vu_log(VHOSTMD_ERR, "Error creating disk of requested " --- -2.32.0 - diff --git a/0017-vhostmd-Check-for-valide-file-handle-before-calling-.patch b/0017-vhostmd-Check-for-valide-file-handle-before-calling-.patch deleted file mode 100644 index 5222522..0000000 --- a/0017-vhostmd-Check-for-valide-file-handle-before-calling-.patch +++ /dev/null @@ -1,38 +0,0 @@ -From d86c51d98ce8b891f3948f8aa54fc9634e6a8c67 Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Tue, 14 Jan 2020 16:04:09 -0700 -Subject: [PATCH 17/19] vhostmd: Check for valide file handle before calling - close - -From coverity scan - -vhostmd-1.1/vhostmd/vhostmd.c:778: var_tested_neg: Assigning: "fd" = a negative value. -vhostmd-1.1/vhostmd/vhostmd.c:845: negative_returns: "fd" is passed to a parameter that cannot be negative. - 843| free(dir); - 844| free(buf); - 845|-> close(fd); - 846| return -1; - 847| } - -Signed-off-by: Jim Fehlig ---- - vhostmd/vhostmd.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/vhostmd/vhostmd.c b/vhostmd/vhostmd.c -index 1600a87..1395bc5 100644 ---- a/vhostmd/vhostmd.c -+++ b/vhostmd/vhostmd.c -@@ -860,7 +860,8 @@ static int metrics_disk_create(void) - error: - free(dir); - free(buf); -- close(fd); -+ if (fd != -1) -+ close(fd); - return -1; - } - --- -2.32.0 - diff --git a/0018-vhostmd-Fix-memory-leak-in-vhostmd_run.patch b/0018-vhostmd-Fix-memory-leak-in-vhostmd_run.patch deleted file mode 100644 index 1480307..0000000 --- a/0018-vhostmd-Fix-memory-leak-in-vhostmd_run.patch +++ /dev/null @@ -1,46 +0,0 @@ -From ff6959fd9203c667f6b4c95fa812621cc91dc42e Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Tue, 14 Jan 2020 16:08:42 -0700 -Subject: [PATCH 18/19] vhostmd: Fix memory leak in vhostmd_run - -Example from coverity scan - -vhostmd-1.1/vhostmd/vhostmd.c:940: alloc_arg: "vu_buffer_create" allocates memory that is stored into "buf". -vhostmd-1.1/vhostmd/vhostmd.c:959: leaked_storage: Variable "buf" going out of scope leaks the storage it points to. - 957| vu_log(VHOSTMD_ERR, "Failed to start virtio thread '%s'\n", - 958| strerror(rc)); - 959|-> return -1; - 960| } - 961| } - -Signed-off-by: Jim Fehlig ---- - vhostmd/vhostmd.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/vhostmd/vhostmd.c b/vhostmd/vhostmd.c -index 1395bc5..6f3709b 100644 ---- a/vhostmd/vhostmd.c -+++ b/vhostmd/vhostmd.c -@@ -967,14 +967,17 @@ static int vhostmd_run(int diskfd) - if (virtio_expiration_time < (update_period * 3)) - virtio_expiration_time = update_period * 3; - -- if (virtio_init(virtio_max_channels, virtio_expiration_time)) -+ if (virtio_init(virtio_max_channels, virtio_expiration_time)) { -+ vu_buffer_delete(buf); - return -1; -+ } - - rc = pthread_create(&virtio_tid, NULL, virtio_run, NULL); - - if (rc != 0) { - vu_log(VHOSTMD_ERR, "Failed to start virtio thread '%s'\n", - strerror(rc)); -+ vu_buffer_delete(buf); - return -1; - } - } --- -2.32.0 - diff --git a/0019-virtio-Fix-strncpy-length-parameter.patch b/0019-virtio-Fix-strncpy-length-parameter.patch deleted file mode 100644 index 97c6a57..0000000 --- a/0019-virtio-Fix-strncpy-length-parameter.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 99995e4ba138f43b277620bd43a096c72f354548 Mon Sep 17 00:00:00 2001 -From: Jim Fehlig -Date: Tue, 14 Jan 2020 16:22:48 -0700 -Subject: [PATCH 19/19] virtio: Fix strncpy length parameter - -Leave an extra byte for null-terminator in call to strncpy. From -coverity scan - -vhostmd-1.1/vhostmd/virtio.c:194: buffer_size_warning: Calling "strncpy" with a maximum size argument of 108 bytes on destination array "address.sun_path" of size 108 bytes might leave the destination string unterminated. - 192| address.sun_family = AF_LOCAL; - 193| - 194|-> strncpy(address.sun_path, c->uds_name, SUN_PATH_LEN); - 195| - 196| if ((c->fd = socket(AF_LOCAL, SOCK_STREAM, 0)) == -1) - -Signed-off-by: Jim Fehlig ---- - vhostmd/virtio.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/vhostmd/virtio.c b/vhostmd/virtio.c -index f227b45..a6c2515 100644 ---- a/vhostmd/virtio.c -+++ b/vhostmd/virtio.c -@@ -191,7 +191,7 @@ static int vio_channel_open(channel_t * c) - bzero(&address, sizeof(address)); - address.sun_family = AF_LOCAL; - -- strncpy(address.sun_path, c->uds_name, SUN_PATH_LEN); -+ strncpy(address.sun_path, c->uds_name, SUN_PATH_LEN - 1); - - if ((c->fd = socket(AF_LOCAL, SOCK_STREAM, 0)) == -1) - goto error; --- -2.32.0 - diff --git a/0020-implicit-function-declarations.patch b/0020-implicit-function-declarations.patch deleted file mode 100644 index 37d0272..0000000 --- a/0020-implicit-function-declarations.patch +++ /dev/null @@ -1,74 +0,0 @@ -From cf555d3bf079ff60b363dba4dc48a349dce5d3b4 Mon Sep 17 00:00:00 2001 -From: Yaakov Selkowitz -Date: Sun, 24 Dec 2023 14:54:09 -0500 -Subject: [PATCH] Fix implicit declarations -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Errors raised in Fedora rawhide and ELN which have added the --Werror=implicit-function-declaration flag for C: - -virt-util.c:96:9: error: implicit declaration of function ‘calloc’ -virt-util.c:129:10: error: implicit declaration of function ‘free’ - -virtio.c:160:9: error: implicit declaration of function ‘free’ -virtio.c:254:31: error: implicit declaration of function ‘bsearch’ -virtio.c:259:13: error: implicit declaration of function ‘qsort’ -virtio.c:586:33: error: implicit declaration of function ‘calloc’ - -libmetrics.c:136:28: error: implicit declaration of function 'atoi' -libmetrics.c:142:29: error: implicit declaration of function 'atoll' -libmetrics.c:148:28: error: implicit declaration of function 'atof' -libmetrics.c:170:12: error: implicit declaration of function 'calloc' -libmetrics.c:189:12: error: implicit declaration of function 'free' -libmetrics.c:311:7: error: implicit declaration of function 'posix_memalign' -libmetrics.c:385:26: error: implicit declaration of function 'malloc' -libmetrics.c:848:28: error: implicit declaration of function 'realloc' - -Signed-off-by: Yaakov Selkowitz ---- - libmetrics/libmetrics.c | 1 + - vhostmd/virt-util.c | 1 + - vhostmd/virtio.c | 1 + - 3 files changed, 3 insertions(+) - -diff --git a/libmetrics/libmetrics.c b/libmetrics/libmetrics.c -index 8819074..c83fd03 100644 ---- a/libmetrics/libmetrics.c -+++ b/libmetrics/libmetrics.c -@@ -21,6 +21,7 @@ - #include - - #include -+#include - #include - #include - #include -diff --git a/vhostmd/virt-util.c b/vhostmd/virt-util.c -index a94cccd..40765c3 100644 ---- a/vhostmd/virt-util.c -+++ b/vhostmd/virt-util.c -@@ -21,6 +21,7 @@ - #include - - #include -+#include - #include - #include - -diff --git a/vhostmd/virtio.c b/vhostmd/virtio.c -index a6c2515..98340ce 100644 ---- a/vhostmd/virtio.c -+++ b/vhostmd/virtio.c -@@ -30,6 +30,7 @@ - #include - #include - #include -+#include - #include - - #include "util.h" --- -2.43.0 - diff --git a/gating.yaml b/gating.yaml deleted file mode 100644 index 1bef654..0000000 --- a/gating.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- !Policy -product_versions: - - rhel-* -decision_context: osci_compose_gate -rules: - - !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional} - - !PassingTestCaseRule {test_case_name: manual.sst_virtualization.vhostmd.manual-test} diff --git a/rpminspect.yaml b/rpminspect.yaml deleted file mode 100644 index 4347770..0000000 --- a/rpminspect.yaml +++ /dev/null @@ -1,5 +0,0 @@ -xml: - # Regular expression (man 7 regex) matching directories to ignore - # during the xml inspection. Skip DTD files, which - # contain a mix of XML and code. - exclude_path: .*(\.dtd)$ diff --git a/sources b/sources index 0c0aaef..29cbdd2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (vhostmd-1.1.tar.gz) = 9fad55c96c504b59345fb670d9ae9b83c892d82f05784253c8826436a1a75419bb73d6be48a8f8d956f89c77ab4f54a85200e92078c22c8f156954ca8f434d49 +139650528c154da52a65adedfb8e83cf vhostmd-0.4.tar.bz2 diff --git a/tests/basic-test.sh b/tests/basic-test.sh deleted file mode 100755 index 962990e..0000000 --- a/tests/basic-test.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -set -e -set -x - -# Setting up vhostmd is basically impossible, so: -LANG=C vm-dump-metrics |& grep "Unable to read metrics disk" diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index a93bdf6..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,11 +0,0 @@ -- hosts: localhost - roles: - - role: standard-test-basic - tags: - - classic - required_packages: - - vm-dump-metrics-devel - tests: - - simple: - dir: . - run: ./basic-test.sh diff --git a/vhostmd.conf b/vhostmd.conf old mode 100755 new mode 100644 index 955dd2f..271e821 --- a/vhostmd.conf +++ b/vhostmd.conf @@ -19,59 +19,6 @@ within the vm element. --> - - - - - - - - @@ -80,15 +27,10 @@ way. 256 - - 1024 - 15 - 60 /bin:/sbin:/usr/bin:/usr/sbin:/usr/share/vhostmd/scripts vbd - virtio @@ -101,331 +43,112 @@ way. VirtualizationVendor - - rpm -q --queryformat "%{VENDOR}\n" libvirt | sort -u - + rpm -qi libvirt| grep Vendor: |awk '{print substr($0, index($0,$5)) }' VirtProductInfo - - virsh -r CONNECT version \ - |awk -F ':' ' - function mkvarnam(s) { # UPPER_CASE_UNDERSCORE - sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim - gsub("[[:space:]]+", "_", s); s = toupper(s); - return s; - } - function filt_phys(s, sep, num, unit) { # 42.0 KM - sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim - if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ ) - { - num = s; unit = s; - sub("[[:space:]]*[[:alpha:]]+$", "", num); - sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit); - return num sep toupper(unit); - } - else - { - return s; - } - } - /:/ { - d1 = substr($0, 1, index($0, ":") - 1); - rest = substr($0, index($0, ":") + 1); - printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":")); - }' \ - | awk -F: '$1 == "USING_API" { print $2; }' - + virsh -r CONNECT version | grep API | gawk -F': ' '{print $2}' HostSystemInfo hostname -s - + - NumberOfPhysicalCPUs - - - - - - - - virsh -r CONNECT nodeinfo \ - |awk -F ':' ' - function mkvarnam(s) { # UPPER_CASE_UNDERSCORE - sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim - gsub("[[:space:]]+", "_", s); s = toupper(s); - return s; - } - function filt_phys(s, sep, num, unit) { # 42.0 KM - sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim - if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ ) - { - num = s; unit = s; - sub("[[:space:]]*[[:alpha:]]+$", "", num); - sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit); - return num sep toupper(unit); - } - else - { - return s; - } - } - /:/ { - d1 = substr($0, 1, index($0, ":") - 1); - rest = substr($0, index($0, ":") + 1); - printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":")); - }' \ - | awk -F: '$1 == "CPU(S)" { print $2; }' - + NumberOfPhysicalCPUsUtilized + virsh -r CONNECT nodeinfo | grep 'CPU(s):' | gawk -F': +' '{print $2}' MemoryAllocatedToVirtualServers - - - - - free|egrep -i '^[[:space:]]*(Mem:)' \ - | awk 'BEGIN { sum = 0; } - { sum += $3; } - END { printf "%d\n", sum/1024; }' - + virsh -r CONNECT nodeinfo | grep 'Memory size:' | gawk -F' +' '{ printf "%d\n", $3/1024 }' FreePhysicalMemory - free|egrep -i '^[[:space:]]*(Mem:)' \ - | awk 'BEGIN { sum = 0; } + free|egrep -i '^[[:space:]]*(Mem:)' \ + |awk 'BEGIN { sum = 0; } { sum += $4; } - END { printf "%d\n", sum/1024; }' + END { printf "%10d\n", sum/1024; }' + + + + UsedPhysicalMemory + + free|egrep -i '^[[:space:]]*(Mem:)' \ + |awk 'BEGIN { sum = 0; } + { sum += $3; } + END { printf "%10d\n", sum/1024; }' FreeVirtualMemory - free|egrep -i '^[[:space:]]*(Mem:|Swap:)' \ - | awk 'BEGIN { sum = 0; } + free|egrep -i '^[[:space:]]*(Mem:|Swap:)' \ + |awk 'BEGIN { sum = 0; } { sum += $4; } - END { printf "%d\n", sum/1024; }' + END { printf "%10d\n", sum/1024; }' UsedVirtualMemory - free|egrep -i '^[[:space:]]*(Mem:|Swap:)' \ - | awk 'BEGIN { sum = 0; } + free|egrep -i '^[[:space:]]*(Mem:|Swap:)' \ + |awk 'BEGIN { sum = 0; } { sum += $3; } - END { printf "%d\n", sum/1024; }' + END { printf "%10d\n", sum/1024; }' - PagedInMemory - - vmstat -s | awk 'BEGIN { - cmd = "getconf PAGESIZE"; - cmd | getline pagesize; - close(cmd); - } - /pages swapped in/ { - printf "%d\n", $1 / 1024 * pagesize / 1024; - }' - + echo "$((`vmstat -s | gawk '/pages paged in/ {print $1}'` / 1024))" + PagedOutMemory - - vmstat -s | awk 'BEGIN { - cmd = "getconf PAGESIZE"; - cmd | getline pagesize; - close(cmd); - } - /pages swapped out/ { - printf "%d\n", $1 / 1024 * pagesize / 1024; - }' - + echo "$((`vmstat -s | gawk '/pages paged out/ {print $1}'` / 1024))" - - + + PageRates + pagerate.pl + + + + + TotalCPUTime - - virsh -r CONNECT dominfo NAME \ - |awk -F ':' ' - function mkvarnam(s) { # UPPER_CASE_UNDERSCORE - sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim - gsub("[[:space:]]+", "_", s); s = toupper(s); - return s; - } - function filt_phys(s, sep, num, unit) { # 42.0 KM - sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim - if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ ) - { - num = s; unit = s; - sub("[[:space:]]*[[:alpha:]]+$", "", num); - sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit); - return num sep toupper(unit); - } - else - { - return s; - } - } - /:/ { - d1 = substr($0, 1, index($0, ":") - 1); - rest = substr($0, index($0, ":") + 1); - printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":")); - }' \ - | awk -F: '$1 == "CPU_TIME" { print $2; }' - + virsh -r CONNECT dominfo NAME | sed 's/: */:/' | \ + gawk -F: '/CPU time/ {print $2;}' - - ResourceProcessorLimit - - virsh -r CONNECT dominfo NAME \ - |awk -F ':' ' - function mkvarnam(s) { # UPPER_CASE_UNDERSCORE - sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim - gsub("[[:space:]]+", "_", s); s = toupper(s); - return s; - } - function filt_phys(s, sep, num, unit) { # 42.0 KM - sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim - if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ ) - { - num = s; unit = s; - sub("[[:space:]]*[[:alpha:]]+$", "", num); - sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit); - return num sep toupper(unit); - } - else - { - return s; - } - } - /:/ { - d1 = substr($0, 1, index($0, ":") - 1); - rest = substr($0, index($0, ":") + 1); - printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":")); - }' \ - | awk -F: '$1 == "CPU(S)" { print $2; }' - - - - - ResourceMemoryLimit - - virsh -r CONNECT dominfo NAME \ - |awk -F ':' ' - function mkvarnam(s) { # UPPER_CASE_UNDERSCORE - sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim - gsub("[[:space:]]+", "_", s); s = toupper(s); - return s; - } - function filt_phys(s, sep, num, unit) { # 42.0 KM - sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim - if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ ) - { - num = s; unit = s; - sub("[[:space:]]*[[:alpha:]]+$", "", num); - sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit); - return num sep toupper(unit); - } - else - { - return s; - } - } - /:/ { - d1 = substr($0, 1, index($0, ":") - 1); - rest = substr($0, index($0, ":") + 1); - printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":")); - }' \ - | awk -F: '$1 == "MAX_MEMORY" { print int($2/1024); }' - + NumberOfAssignedPhysicalCPUs + virsh -r CONNECT dominfo NAME | grep 'CPU(s):' | gawk -F': +' '{print $2}' PhysicalMemoryAllocatedToVirtualSystem - - virsh -r CONNECT dominfo NAME \ - |awk -F ':' ' - function mkvarnam(s) { # UPPER_CASE_UNDERSCORE - sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim - gsub("[[:space:]]+", "_", s); s = toupper(s); - return s; - } - function filt_phys(s, sep, num, unit) { # 42.0 KM - sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim - if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ ) - { - num = s; unit = s; - sub("[[:space:]]*[[:alpha:]]+$", "", num); - sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit); - return num sep toupper(unit); - } - else - { - return s; - } - } - /:/ { - d1 = substr($0, 1, index($0, ":") - 1); - rest = substr($0, index($0, ":") + 1); - printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":")); - }' \ - | awk -F: '$1 == "USED_MEMORY" { print int($2/1024); }' - + virsh -r CONNECT dominfo NAME | grep 'Max memory:' | gawk -F' +' '{printf "%d\n", $3/1024}' + + diff --git a/vhostmd.init b/vhostmd.init new file mode 100644 index 0000000..ca3c587 --- /dev/null +++ b/vhostmd.init @@ -0,0 +1,118 @@ +#!/bin/sh +# +# vhostmd: Virtualization host metrics daemon +# +# chkconfig: - 98 02 +# description: This daemon allows access to host information from guests. + +### BEGIN INIT INFO +# Provides: vhostmd +# Required-Start: libvirtd +# Required-Stop: libvirtd +# Default-Stop: +# Short-Description: Virtualization host metrics daemon +# Description: This daemon allows access to host information from guests. +### END INIT INFO + +# Source function library. +. /etc/rc.d/init.d/functions + +exec=/usr/sbin/vhostmd +prog=vhostmd +config=/etc/vhostmd/vhostmd.conf + +[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog + +ARGS= +if [ -n "$VHOSTMD_VERBOSE" ]; then + ARGS="$ARGS --verbose" +fi +if [ -n "$VHOSTMD_CONFIG" ]; then + ARGS="$ARGS --config $VHOSTMD_CONFIG" +fi +if [ -n "$VHOSTMD_USER" ]; then + ARGS="$ARGS --user $VHOSTMD_USER" +fi +if [ -n "$VHOSTMD_URI" ]; then + ARGS="$ARGS --connect $VHOSTMD_URI" +elif virsh uri >/dev/null 2>&1; then + default_uri=$(virsh uri) + ARGS="$ARGS --connect '$default_uri'" +fi + +lockfile=/var/lock/subsys/$prog + +start() { + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + echo -n $"Starting $prog: " + daemon $exec $ARGS + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc $prog + rm -f /var/run/$prog.pid + retval=$? + echo + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + restart +} + +force_reload() { + restart +} + +rh_status() { + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? diff --git a/vhostmd.spec b/vhostmd.spec index 93a1476..e8e3718 100644 --- a/vhostmd.spec +++ b/vhostmd.spec @@ -1,63 +1,42 @@ +# Xen is only available on a limited number of architectures +%ifarch %{ix86} x86_64 ia64 +%global have_xen 1 +%else %global have_xen 0 +%endif Summary: Virtualization host metrics daemon Name: vhostmd -Version: 1.1 -Release: 19%{?dist} -License: LGPL-2.1-or-later +Version: 0.4 +Release: 0.6.gite9db007b%{?dist}.1 +License: GPLv2+ +Group: System Environment/Daemons +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root -URL: https://github.com/vhostmd/vhostmd +URL: http://gitorious.org/vhostmd -Source0: https://github.com/vhostmd/vhostmd/archive/v%{version}/%{name}-%{version}.tar.gz -Source1: vhostmd.conf +# Upstream tarball hosting is screwed at the moment. This release is +# a pre-release of 0.4, based on the git commit names in the Release +# tag above, with 'make dist' done by the packager. +Source0: vhostmd-%{version}.tar.bz2 +Source1: vhostmd.init +Source2: vhostmd.sysconfig +Source3: vhostmd.conf -# Prevents updates from previous versions with the old config file -# from breaking (RHBZ#1782897). -# https://github.com/vhostmd/vhostmd/commit/83cc269f6892852be94467cea771b3ad1da8a369 -Patch0001: 0001-Relax-virtio-requirement-in-config-file.patch -Patch0002: 0002-libmetrics-Set-pointer-NULL-after-free.patch -Patch0003: 0003-libmetrics-Initialize-local-variable-ret-to-failure.patch -Patch0004: 0004-libmetrics-Check-return-value-of-asprintf.patch -Patch0005: 0005-libmetrics-Remove-unsafe-XML_PARSE_NOENT-option.patch -Patch0006: 0006-libmetrics-Ensure-libmetrics-mutex-is-unlocked-in-er.patch -Patch0007: 0007-libmetrics-Fix-potential-memory-leak.patch -Patch0008: 0008-libmetrics-Use-proper-conversion-specifier-when-call.patch -Patch0009: 0009-libmetrics-Fix-potential-leak-of-FILE-pointer.patch -Patch0010: 0010-util-Add-missing-call-to-va_end.patch -Patch0011: 0011-util-Fix-potential-memory-leak.patch -Patch0012: 0012-util-Check-return-value-of-strstr.patch -Patch0013: 0013-Check-return-value-of-asprintf.patch -Patch0014: 0014-vhostmd-Fix-memory-leak-in-parse_transports.patch -Patch0015: 0015-vhostmd-Remove-unsafe-XML_PARSE_NOENT-option.patch -Patch0016: 0016-vhostmd-Check-return-value-of-file-functions.patch -Patch0017: 0017-vhostmd-Check-for-valide-file-handle-before-calling-.patch -Patch0018: 0018-vhostmd-Fix-memory-leak-in-vhostmd_run.patch -Patch0019: 0019-virtio-Fix-strncpy-length-parameter.patch -# https://github.com/vhostmd/vhostmd/pull/13 -Patch0020: 0020-implicit-function-declarations.patch - -ExcludeArch: %{ix86} - -BuildRequires: make -BuildRequires: gcc BuildRequires: chrpath -BuildRequires: perl-generators BuildRequires: pkgconfig BuildRequires: libxml2-devel BuildRequires: libvirt-devel -BuildRequires: autoconf, automake, libtool -BuildRequires: git -%{?systemd_requires} -BuildRequires: systemd %if %{have_xen} BuildRequires: xen-devel %endif -# This is hopefully temporary, but required to run vhostmd.xml as -# currently written. For more information see: -# https://bugzilla.redhat.com/show_bug.cgi?id=1897130 -Requires: libvirt +Requires(post): chkconfig +Requires(preun): chkconfig +Requires(preun): initscripts +Requires(postun): initscripts +Requires(pre): shadow-utils %description @@ -68,6 +47,7 @@ resource usage from within virtual machines. %package -n vm-dump-metrics Summary: Virtualization host metrics dump +Group: Applications/System %description -n vm-dump-metrics @@ -77,6 +57,7 @@ or a file. %package -n vm-dump-metrics-devel Summary: Virtualization host metrics dump development +Group: Development/Libraries Requires: vm-dump-metrics = %{version}-%{release} Requires: pkgconfig @@ -86,16 +67,14 @@ Header and libraries necessary for metrics gathering development %prep -%autosetup -S git +%setup -q %build -autoreconf -i %configure \ %if %{have_xen} == 0 --without-xenstore \ %endif - --with-init-script=systemd \ --enable-shared --disable-static make %{_smp_mflags} @@ -105,6 +84,13 @@ rm -rf $RPM_BUILD_ROOT make DESTDIR=$RPM_BUILD_ROOT install +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/init.d +install -m 0755 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/init.d/%{name} + +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig +install -m 0644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name} + +#rm $RPM_BUILD_ROOT%{_libdir}/libmetrics.a rm $RPM_BUILD_ROOT%{_libdir}/libmetrics.la chrpath --delete $RPM_BUILD_ROOT%{_sbindir}/vm-dump-metrics @@ -118,33 +104,49 @@ rm $RPM_BUILD_ROOT%{_sysconfdir}/vhostmd/metric.dtd # The default configuration file is great for Xen, not so great # for anyone else. Replace it with one which is better for libvirt # users. -rm $RPM_BUILD_ROOT%{_sysconfdir}/vhostmd/vhostmd.conf -cp %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/vhostmd/vhostmd.conf +mv $RPM_BUILD_ROOT%{_sysconfdir}/vhostmd/vhostmd.conf \ + $RPM_BUILD_ROOT%{_sysconfdir}/vhostmd/vhostmd.conf.for.xen +cp %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/vhostmd/vhostmd.conf -%if 0%{?rhel} -# Remove Perl script (https://bugzilla.redhat.com/show_bug.cgi?id=749875) -rm $RPM_BUILD_ROOT%{_datadir}/vhostmd/scripts/pagerate.pl -%endif + +%clean +rm -rf $RPM_BUILD_ROOT + + +%post +/sbin/chkconfig --add vhostmd + + +%preun +if [ $1 = 0 ] ; then + /sbin/service vhostmd stop >/dev/null 2>&1 + /sbin/chkconfig --del vhostmd +fi + + +%postun +if [ "$1" -ge "1" ] ; then + /sbin/service vhostmd condrestart >/dev/null 2>&1 || : +fi + + +%post -n vm-dump-metrics -p /sbin/ldconfig + + +%postun -n vm-dump-metrics -p /sbin/ldconfig %pre # UID:GID 112:112 reserved, see RHBZ#534109. -%sysusers_create_inline u vhostmd 112 "Virtual Host Metrics Daemon" %{_datadir}/vhostmd /sbin/nologin - - -%post -%systemd_post vhostmd.service - - -%preun -%systemd_preun vhostmd.service - - -%postun -%systemd_postun_with_restart vhostmd.service +getent group vhostmd >/dev/null || groupadd -g 112 -r vhostmd +getent passwd vhostmd >/dev/null || \ +useradd -u 112 -r -g vhostmd -d %{_datadir}/vhostmd -s /sbin/nologin \ +-c "Virtual Host Metrics Daemon" vhostmd +exit 0 %files +%defattr(-,root,root,-) %doc AUTHORS ChangeLog COPYING README %doc mdisk.xml metric.dtd vhostmd.dtd vhostmd.xml @@ -152,20 +154,20 @@ rm $RPM_BUILD_ROOT%{_datadir}/vhostmd/scripts/pagerate.pl %dir %{_sysconfdir}/vhostmd %config(noreplace) %{_sysconfdir}/vhostmd/vhostmd.conf +%config(noreplace) %{_sysconfdir}/vhostmd/vhostmd.conf.for.xen %config %{_sysconfdir}/vhostmd/vhostmd.dtd - -%{_unitdir}/vhostmd.service +%{_sysconfdir}/init.d/%{name} +%config(noreplace) %{_sysconfdir}/sysconfig/%{name} %dir %{_datadir}/vhostmd %dir %{_datadir}/vhostmd/scripts -%if !0%{?rhel} %{_datadir}/vhostmd/scripts/pagerate.pl -%endif %{_mandir}/man8/vhostmd.8.gz %files -n vm-dump-metrics +%defattr(-,root,root,-) %doc COPYING %{_sbindir}/vm-dump-metrics %{_libdir}/libmetrics.so.0 @@ -174,6 +176,7 @@ rm $RPM_BUILD_ROOT%{_datadir}/vhostmd/scripts/pagerate.pl %files -n vm-dump-metrics-devel +%defattr(-,root,root,-) %doc README %{_libdir}/libmetrics.so %dir %{_includedir}/vhostmd @@ -181,182 +184,16 @@ rm $RPM_BUILD_ROOT%{_datadir}/vhostmd/scripts/pagerate.pl %changelog -* Thu Oct 2 2025 Daniel P. Berrangé - 1.1-19 -- Disable build on i686 architecture - -* Fri Jul 25 2025 Fedora Release Engineering - 1.1-18 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Sun Jan 19 2025 Fedora Release Engineering - 1.1-17 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Sat Jul 20 2024 Fedora Release Engineering - 1.1-16 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Sat Jan 27 2024 Fedora Release Engineering - 1.1-15 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sat Jul 22 2023 Fedora Release Engineering - 1.1-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Sat Jan 21 2023 Fedora Release Engineering - 1.1-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Sat Jul 23 2022 Fedora Release Engineering - 1.1-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Sat Jan 22 2022 Fedora Release Engineering - 1.1-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Thu Jul 29 2021 Richard W.M. Jones - 1.1-10 -- Miscellaneous upstream fixes. - -* Fri Jul 23 2021 Fedora Release Engineering - 1.1-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 1.1-8 -- Rebuilt for updated systemd-rpm-macros - See https://pagure.io/fesco/issue/2583. - -* Tue Feb 09 2021 Richard W.M. Jones - 1.1-7 -- Unify vhostmd.conf with RHEL 8.4 (RHBZ#1924966). - -* Thu Feb 04 2021 Richard W.M. Jones - 1.1-6 -- Increase release so > RHEL 8 (RHBZ#1924966). -- Unify spec files between RHEL and Fedora. - -* Wed Jan 27 2021 Fedora Release Engineering - 1.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Wed Jul 29 2020 Fedora Release Engineering - 1.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Fri Jan 31 2020 Fedora Release Engineering - 1.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Thu Aug 29 2019 Richard W.M. Jones - 1.1-1 -- Upstream version 1.1. -- Remove patches, since all included 1.1. - -* Sat Jul 27 2019 Fedora Release Engineering - 1.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sun Feb 03 2019 Fedora Release Engineering - 1.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Fri Jan 18 2019 Richard W.M. Jones - 1.0-2 -- Upstream version 1.0. -- Remove patches, since all included 1.0. -- Add patches since 1.0. -- Fix Source0 URL, hosted on github. -- Remove old Source1 and Source2, not used. - -* Tue Oct 16 2018 Richard W.M. Jones - 0.5-19 -- Include all upstream patches since 0.5. -- Enable systemd init scripts (RHBZ#1592400). - -* Sat Jul 14 2018 Fedora Release Engineering - 0.5-18 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Thu Jul 05 2018 Richard W.M. Jones - 0.5-17 -- Remove ldconfig - https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/SU3LJVDZ7LUSJGZR5MS72BMRAFP3PQQL/ - -* Fri Feb 09 2018 Igor Gnatenko - 0.5-16 -- Escape macros in %%changelog - -* Thu Aug 03 2017 Fedora Release Engineering - 0.5-15 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 0.5-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sat Feb 11 2017 Fedora Release Engineering - 0.5-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Fri Feb 05 2016 Fedora Release Engineering - 0.5-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Tue Jan 26 2016 Richard Jones - 0.5-11 -- Remove useless defattr in files section. - -* Fri Jun 19 2015 Fedora Release Engineering - 0.5-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Mon Aug 18 2014 Fedora Release Engineering - 0.5-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Sun Jun 08 2014 Fedora Release Engineering - 0.5-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Sat Aug 03 2013 Petr Pisar - 0.5-7 -- Perl 5.18 rebuild - -* Mon Jul 29 2013 Richard W.M. Jones - 0.5-6 -- Completely disable Xen. APIs seem to have changed incompatibly. -- Add commits from upstream since 0.5. -- Remove pagerate.pl when building on RHEL. -- Modernize the spec file. - -* Wed Jul 17 2013 Petr Pisar - 0.5-5 -- Perl 5.18 rebuild - -* Thu May 23 2013 Richard W.M. Jones - 0.5-4 -- Disable Xen support on RHEL >= 6 (RHBZ#927853). - -* Fri Feb 15 2013 Fedora Release Engineering - 0.5-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Sun Jul 22 2012 Fedora Release Engineering - 0.5-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Mon Jan 16 2012 Richard W.M. Jones - 0.5-1 -- New upstream version 0.5. -- Remove -ldl patch which is now upstream. - -* Sat Jan 14 2012 Fedora Release Engineering - 0.4-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Mon Feb 07 2011 Fedora Release Engineering - 0.4-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Fri Jul 23 2010 Richard W.M. Jones - 0.4-11 -- /etc/sysconfig/vhostmd: Default to KVM. - -* Tue Jul 13 2010 Richard W.M. Jones - 0.4-10 -- Patch Makefile.in directly so we don't need to run autotools. - -* Tue Jul 6 2010 Richard W.M. Jones - 0.4-9 -- Updated vhostmd.conf from Dr. Joachim Schneider at SAP. -- Run aclocal. - -* Tue Apr 27 2010 Richard W.M. Jones - 0.4-6 -- Updated vhostmd.conf file which enables TotalCPUTime metric. - -* Tue Feb 16 2010 Richard W.M. Jones - 0.4-5 -- Add a patch to link tests explicitly with -ldl (RHBZ#565096). - -* Thu Dec 10 2009 Richard W.M. Jones - 0.4-2 -- Fix the PagedOutMemory and PagedInMemory stats to report MB instead - of pages (fixes supplied by Joachim Schneider). - -* Wed Dec 9 2009 Richard W.M. Jones - 0.4-1 -- vhostmd didn't chdir ("/") when daemonizing. Fixed in this 0.4 release. - -* Tue Nov 17 2009 Richard W.M. Jones - 0.4-0.9.gite9db007b +* Tue Nov 17 2009 Richard W.M. Jones - 0.4-0.6.gite9db007b.el5.1 - Add a timestamp to the metrics. - Fix a typo in MemoryAllocatedToVirtualServers metric (https://bugzilla.redhat.com/show_bug.cgi?id=532070#c7) -- %%{_sysconfdir}/sysconfig/vhostmd: Use libvirt default URI +- %{_sysconfdir}/sysconfig/vhostmd: Use libvirt default URI (https://bugzilla.redhat.com/show_bug.cgi?id=537828) -- %%{_sysconfdir}/init.d/vhostmd: If using libvirt's default URI, then pass +- %{_sysconfdir}/init.d/vhostmd: If using libvirt's default URI, then pass the root URI to vhostmd (the default URI changes in some circumstances when vhostmd switches to the non-root user). - -* Wed Nov 11 2009 Richard W.M. Jones - 0.4-0.8.gite9db007b - Use fixed UID:GID 112:112 (RHBZ#534109). - -* Tue Nov 10 2009 Richard W.M. Jones - 0.4-0.7.gite9db007b - vm-dump-metrics-devel package should require version and release of base package. @@ -369,6 +206,12 @@ rm $RPM_BUILD_ROOT%{_datadir}/vhostmd/scripts/pagerate.pl - Fix segfault in vm-dump-metrics (RHBZ#529348). - On error, vm-dump-metrics now exits with status code 1. +* Fri Oct 16 2009 Richard W.M. Jones - 0.4-0.4.gitea2f772d +- Re-add xen-devel dependency. This is a bug in EPEL builders. + +* Thu Oct 15 2009 Richard W.M. Jones - 0.4-0.3.gitea2f772d +- Remove xen-devel dependency on ALL architectures. + * Thu Oct 15 2009 Richard W.M. Jones - 0.4-0.2.gitea2f772d - New upstream based on git ea2f772d. - Update the configuration file based on upstream changes to how virsh diff --git a/vhostmd.sysconfig b/vhostmd.sysconfig new file mode 100644 index 0000000..f3d97c3 --- /dev/null +++ b/vhostmd.sysconfig @@ -0,0 +1,14 @@ +# Uncomment the following line to print verbose messages. +#VHOSTMD_VERBOSE=1 + +# Override the default configuration file path. +#VHOSTMD_CONFIG=/path/to/vhostmd.conf + +# Set the user that the daemon runs as after dropping root privs. +VHOSTMD_USER=vhostmd + +# Set the libvirt URI. +# Uncomment one of these to force KVM or Xen, otherwise libvirt +# will try to choose a suitable default. +#VHOSTMD_URI=qemu:///system +#VHOSTMD_URI=xen:///