[libvirt] [PATCH v2 06/25] src/xenxs:Refactor code parsing disk config
Jim Fehlig
jfehlig at suse.com
Mon Aug 4 20:02:39 UTC 2014
David Kiarie wrote:
> From: Kiarie Kahurani <davidkiarie4 at gmail.com>
>
> Introduce function
> xenParseXMDisk(virConfPtr conf,......);
> which parses XM disk config instead
>
> signed-off-by: David Kiarie<davidkiarie4 at gmail.com>
> ---
> src/xenxs/xen_xm.c | 302 ++++++++++++++++++++++++++++-------------------------
> 1 file changed, 157 insertions(+), 145 deletions(-)
>
> diff --git a/src/xenxs/xen_xm.c b/src/xenxs/xen_xm.c
> index 66d7b44..2c36c1b 100644
> --- a/src/xenxs/xen_xm.c
> +++ b/src/xenxs/xen_xm.c
> @@ -507,126 +507,15 @@ int xenParseXMCPUFeatures(virConfPtr conf, virDomainDefPtr def)
> }
>
>
> -virDomainDefPtr
> -xenParseXM(virConfPtr conf, int xendConfigVersion,
> - virCapsPtr caps)
> +static
> +int xenParseXMDisk(virConfPtr conf, virDomainDefPtr def,
> + int xendConfigVersion)
>
libvirt style is to have function return type and name on separate
lines, e.g.
static int
xenParseXMDisk(...)
> {
> - const char *str;
> - int hvm = 0;
> - int val;
> - virConfValuePtr list;
> - virDomainDefPtr def = NULL;
> + const char *str = NULL;
> virDomainDiskDefPtr disk = NULL;
> - virDomainNetDefPtr net = NULL;
> - virDomainGraphicsDefPtr graphics = NULL;
> - size_t i;
> - const char *defaultMachine;
> - char *script = NULL;
> - char *listenAddr = NULL;
> -
> - if (VIR_ALLOC(def) < 0)
> - return NULL;
> -
> - def->virtType = VIR_DOMAIN_VIRT_XEN;
> - def->id = -1;
> -
> - if (xenXMConfigCopyString(conf, "name", &def->name) < 0)
> - goto cleanup;
> - if (xenXMConfigGetUUID(conf, "uuid", def->uuid) < 0)
> - goto cleanup;
> -
> -
> - if ((xenXMConfigGetString(conf, "builder", &str, "linux") == 0) &&
> - STREQ(str, "hvm"))
> - hvm = 1;
> -
> - if (VIR_STRDUP(def->os.type, hvm ? "hvm" : "xen") < 0)
> - goto cleanup;
> -
> - def->os.arch =
> - virCapabilitiesDefaultGuestArch(caps,
> - def->os.type,
> - virDomainVirtTypeToString(def->virtType));
> - if (!def->os.arch) {
> - virReportError(VIR_ERR_INTERNAL_ERROR,
> - _("no supported architecture for os type '%s'"),
> - def->os.type);
> - goto cleanup;
> - }
> -
> - defaultMachine = virCapabilitiesDefaultGuestMachine(caps,
> - def->os.type,
> - def->os.arch,
> - virDomainVirtTypeToString(def->virtType));
> - if (defaultMachine != NULL) {
> - if (VIR_STRDUP(def->os.machine, defaultMachine) < 0)
> - goto cleanup;
> - }
> -
> - if (hvm) {
> - const char *boot;
> - if (xenXMConfigCopyString(conf, "kernel", &def->os.loader) < 0)
> - goto cleanup;
> -
> - if (xenXMConfigGetString(conf, "boot", &boot, "c") < 0)
> - goto cleanup;
> -
> - for (i = 0; i < VIR_DOMAIN_BOOT_LAST && boot[i]; i++) {
> - switch (*boot) {
> - case 'a':
> - def->os.bootDevs[i] = VIR_DOMAIN_BOOT_FLOPPY;
> - break;
> - case 'd':
> - def->os.bootDevs[i] = VIR_DOMAIN_BOOT_CDROM;
> - break;
> - case 'n':
> - def->os.bootDevs[i] = VIR_DOMAIN_BOOT_NET;
> - break;
> - case 'c':
> - default:
> - def->os.bootDevs[i] = VIR_DOMAIN_BOOT_DISK;
> - break;
> - }
> - def->os.nBootDevs++;
> - }
> - } else {
> - const char *extra, *root;
> -
> - if (xenXMConfigCopyStringOpt(conf, "bootloader", &def->os.bootloader) < 0)
> - goto cleanup;
> - if (xenXMConfigCopyStringOpt(conf, "bootargs", &def->os.bootloaderArgs) < 0)
> - goto cleanup;
> -
> - if (xenXMConfigCopyStringOpt(conf, "kernel", &def->os.kernel) < 0)
> - goto cleanup;
> - if (xenXMConfigCopyStringOpt(conf, "ramdisk", &def->os.initrd) < 0)
> - goto cleanup;
> - if (xenXMConfigGetString(conf, "extra", &extra, NULL) < 0)
> - goto cleanup;
> - if (xenXMConfigGetString(conf, "root", &root, NULL) < 0)
> - goto cleanup;
> -
> - if (root) {
> - if (virAsprintf(&def->os.cmdline, "root=%s %s", root, extra) < 0)
> - goto cleanup;
> - } else {
> - if (VIR_STRDUP(def->os.cmdline, extra) < 0)
> - goto cleanup;
> - }
> - }
> -
> - if (xenParseXMMem(conf, def) < 0)
> - goto cleanup;
> - if (xenParseXMEventsActions(conf, def) < 0)
> - goto cleanup;
> - if (xenParseXMTimeOffset(conf, def, xendConfigVersion) < 0)
> - goto cleanup;
> - if (xenParseXMCPUFeatures(conf, def) < 0)
> - goto cleanup;
> - if (xenXMConfigCopyStringOpt(conf, "device_model", &def->emulator) < 0)
> - goto cleanup;
> + int hvm = STREQ(def->os.type, "hvm");
> + virConfValuePtr list = virConfGetValue(conf, "disk");
>
> - list = virConfGetValue(conf, "disk");
> if (list && list->type == VIR_CONF_LIST) {
> list = list->list;
> while (list) {
> @@ -638,9 +527,8 @@ xenParseXM(virConfPtr conf, int xendConfigVersion,
> if ((list->type != VIR_CONF_STRING) || (list->str == NULL))
> goto skipdisk;
> head = list->str;
> -
>
Spurious whitespace change.
> if (!(disk = virDomainDiskDefNew()))
> - goto cleanup;
> + return -1;
>
> /*
> * Disks have 3 components, SOURCE,DEST-DEVICE,MODE
> @@ -653,38 +541,39 @@ xenParseXM(virConfPtr conf, int xendConfigVersion,
> /* Extract the source file path*/
> if (!(offset = strchr(head, ',')))
> goto skipdisk;
> -
>
More whitespace change, again removing a blank line.
> if (offset == head) {
> /* No source file given, eg CDROM with no media */
> ignore_value(virDomainDiskSetSource(disk, NULL));
> } else {
> if (VIR_STRNDUP(tmp, head, offset - head) < 0)
> - goto cleanup;
> + return -1;
> +
>
But here you are adding a blank line. I think these types of changes
are fine as long as you are consistent and in the end the code is more
readable.
Regards,
Jim
More information about the libvir-list
mailing list