The attached patch changes the qemu driver blockStats command to not log
qemu monitor output. virt-manager offers an option to continually poll
VM disk stats, and if the app is left running for a while with many VMs,
this can make the logs huge, for little benefit (a user reported 100 MB
with virt-manager left running overnight).
The output from the command is still printed with a DEBUG call, so the
info isn't completely lost.
Thanks,
Cole
diff --git a/src/qemu_driver.c b/src/qemu_driver.c
index 3b9b08a..b3bfd51 100644
--- a/src/qemu_driver.c
+++ b/src/qemu_driver.c
@@ -115,11 +115,15 @@ static int qemudDomainGetMaxVcpus(virDomainPtr dom);
static int qemudMonitorCommand(const virDomainObjPtr vm,
const char *cmd,
char **reply);
+static int qemudMonitorCommandNoLog(const virDomainObjPtr vm,
+ const char *cmd,
+ char **reply);
static int qemudMonitorCommandExtra(const virDomainObjPtr vm,
const char *cmd,
const char *extra,
const char *extraPrompt,
- char **reply);
+ char **reply,
+ int doLog);
static struct qemud_driver *qemu_driver = NULL;
@@ -1083,7 +1087,8 @@ qemudInitPasswords(virConnectPtr conn,
vm->def->graphics->data.vnc.passwd :
driver->vncPassword,
QEMU_PASSWD_PROMPT,
- &info) < 0) {
+ &info,
+ 1) < 0) {
qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
"%s", _("setting VNC password failed"));
return -1;
@@ -1428,7 +1433,8 @@ qemudMonitorCommandExtra(const virDomainObjPtr vm,
const char *cmd,
const char *extra,
const char *extraPrompt,
- char **reply) {
+ char **reply,
+ int doLog) {
int size = 0;
char *buf = NULL;
size_t cmdlen = strlen(cmd);
@@ -1507,7 +1513,7 @@ qemudMonitorCommandExtra(const virDomainObjPtr vm,
}
/* Log, but ignore failures to write logfile for VM */
- if (safewrite(vm->logfile, buf, strlen(buf)) < 0) {
+ if (doLog && safewrite(vm->logfile, buf, strlen(buf)) < 0) {
char ebuf[1024];
qemudLog(QEMUD_WARN, _("Unable to log VM console data: %s\n"),
virStrerror(errno, ebuf, sizeof ebuf));
@@ -1533,9 +1539,15 @@ static int
qemudMonitorCommand(const virDomainObjPtr vm,
const char *cmd,
char **reply) {
- return qemudMonitorCommandExtra(vm, cmd, NULL, NULL, reply);
+ return qemudMonitorCommandExtra(vm, cmd, NULL, NULL, reply, 1);
}
+static int
+qemudMonitorCommandNoLog(const virDomainObjPtr vm,
+ const char *cmd,
+ char **reply) {
+ return qemudMonitorCommandExtra(vm, cmd, NULL, NULL, reply, 0);
+}
/**
* qemudProbe:
@@ -3774,7 +3786,10 @@ qemudDomainBlockStats (virDomainPtr dom,
goto cleanup;
len = strlen (qemu_dev_name);
- if (qemudMonitorCommand (vm, "info blockstats", &info) < 0) {
+ /* Specifically don't log the command output, since regular polling
+ * will create huuuuge logs.
+ */
+ if (qemudMonitorCommandNoLog (vm, "info blockstats", &info) < 0) {
qemudReportError (dom->conn, dom, NULL, VIR_ERR_OPERATION_FAILED,
"%s", _("'info blockstats' command failed"));
goto cleanup;
--
Libvir-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list