On 1/15/19 8:23 AM, Ján Tomko wrote:
Split out parts of the config parsing code to make
the parent function easier to read.
Signed-off-by: Ján Tomko <jtomko(a)redhat.com>
---
src/qemu/qemu_conf.c | 162 ++++++++++++++++++++++++-------------------
1 file changed, 90 insertions(+), 72 deletions(-)
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
index 776ba3f3ad..8bc653fa9e 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
@@ -423,6 +423,95 @@ virQEMUDriverConfigHugeTLBFSInit(virHugeTLBFSPtr hugetlbfs,
}
+static int
+virQEMUDriverConfigLoadProcessEntry(virQEMUDriverConfigPtr cfg,
+ virConfPtr conf)
+{
+ char *stdioHandler = NULL;
+ char **hugetlbfs = NULL;
+ char *corestr = NULL;
VIR_AUTOPTR for each
+ int ret = -1;
+ size_t i;
+
+ if (virConfGetValueStringList(conf, "hugetlbfs_mount", true,
+ &hugetlbfs) < 0)
+ goto cleanup;
+ if (hugetlbfs) {
+ /* There already might be something autodetected. Avoid leaking it. */
+ while (cfg->nhugetlbfs) {
+ cfg->nhugetlbfs--;
+ VIR_FREE(cfg->hugetlbfs[cfg->nhugetlbfs].mnt_dir);
+ }
+ VIR_FREE(cfg->hugetlbfs);
+
+ cfg->nhugetlbfs = virStringListLength((const char *const *)hugetlbfs);
+ if (hugetlbfs[0] &&
+ VIR_ALLOC_N(cfg->hugetlbfs, cfg->nhugetlbfs) < 0)
+ goto cleanup;
+
+ for (i = 0; hugetlbfs[i] != NULL; i++) {
+ if (virQEMUDriverConfigHugeTLBFSInit(&cfg->hugetlbfs[i],
+ hugetlbfs[i], i != 0) < 0)
+ goto cleanup;
+ }
+ }
+
+ if (virConfGetValueBool(conf, "clear_emulator_capabilities",
&cfg->clearEmulatorCapabilities) < 0)
+ goto cleanup;
+ if (virConfGetValueString(conf, "bridge_helper",
&cfg->bridgeHelperName) < 0)
+ goto cleanup;
+
+ if (virConfGetValueString(conf, "pr_helper", &cfg->prHelperName)
< 0)
+ goto cleanup;
+
+ if (virConfGetValueBool(conf, "set_process_name",
&cfg->setProcessName) < 0)
+ goto cleanup;
+ if (virConfGetValueUInt(conf, "max_processes", &cfg->maxProcesses)
< 0)
+ goto cleanup;
+ if (virConfGetValueUInt(conf, "max_files", &cfg->maxFiles) < 0)
+ goto cleanup;
+
+ if (virConfGetValueType(conf, "max_core") == VIR_CONF_STRING) {
+ if (virConfGetValueString(conf, "max_core", &corestr) < 0)
+ goto cleanup;
+ if (STREQ(corestr, "unlimited")) {
+ cfg->maxCore = ULLONG_MAX;
+ } else {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("Unknown core size '%s'"),
+ corestr);
+ goto cleanup;
+ }
+ } else if (virConfGetValueULLong(conf, "max_core", &cfg->maxCore)
< 0) {
+ goto cleanup;
+ }
+
+ if (virConfGetValueBool(conf, "dump_guest_core",
&cfg->dumpGuestCore) < 0)
+ goto cleanup;
+ if (virConfGetValueString(conf, "stdio_handler", &stdioHandler) <
0)
+ goto cleanup;
+ if (stdioHandler) {
+ if (STREQ(stdioHandler, "logd")) {
+ cfg->stdioLogD = true;
+ } else if (STREQ(stdioHandler, "file")) {
+ cfg->stdioLogD = false;
+ } else {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("Unknown stdio handler %s"),
+ stdioHandler);
+ VIR_FREE(stdioHandler);
+ goto cleanup;
+ }
+ VIR_FREE(stdioHandler);
+ }
+
+ ret = 0;
+ cleanup:
+ virStringListFree(hugetlbfs);
+ VIR_FREE(corestr);
+ return ret;
+}
+
blank line
Reviewed-by: John Ferlan <jferlan(a)redhat.com>
John