On Tue, Jul 10, 2018 at 11:27:51 +0200, Ján Tomko wrote:
On Tue, Jul 10, 2018 at 10:44:48AM +0200, Peter Krempa wrote:
> Aggregate the code for the two separate formats used according to the
> machine type and add some supporting code so that the function is
> actually readable.
>
> Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
> ---
> src/qemu/qemu_command.c | 58 ++++++++++++++++++++++++-------------------------
> 1 file changed, 28 insertions(+), 30 deletions(-)
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index f756cc7112..2e5920e859 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -2148,55 +2148,53 @@ qemuBuildFloppyCommandLineOptions(virCommandPtr cmd,
>
> {
> virBuffer fdc_opts = VIR_BUFFER_INITIALIZER;
> - char *fdc_opts_str = NULL;
> - char *optstr;
> + char driveLetter;
> char *backendAlias = NULL;
> + char *backendStr = NULL;
> + char *bootindexStr = NULL;
> int ret = -1;
>
> + if (disk->info.addr.drive.unit)
> + driveLetter = 'B';
> + else
> + driveLetter = 'A';
> +
> if (!(backendAlias = qemuAliasDiskDriveFromDisk(disk)))
> return -1;
>
> - if (virAsprintf(&optstr, "drive%c=%s",
> - disk->info.addr.drive.unit ? 'B' : 'A',
> - backendAlias) < 0)
> + if (virAsprintf(&backendStr, "drive%c=%s", driveLetter,
backendAlias) < 0)
> goto cleanup;
>
> - if (!qemuDomainNeedsFDC(def)) {
> - virCommandAddArg(cmd, "-global");
> - virCommandAddArgFormat(cmd, "isa-fdc.%s", optstr);
> - } else {
> - virBufferAsprintf(&fdc_opts, "%s,", optstr);
> - }
> - VIR_FREE(optstr);
> -
> - if (bootindex) {
> - if (virAsprintf(&optstr, "bootindex%c=%u",
> - disk->info.addr.drive.unit
> - ? 'B' : 'A',
> - bootindex) < 0)
> - goto cleanup;
> + if (bootindex &&
> + virAsprintf(&bootindexStr, "bootindex%c=%u", driveLetter,
bootindex) < 0)
> + goto cleanup;
>
> - if (!qemuDomainNeedsFDC(def)) {
> + if (!qemuDomainNeedsFDC(def)) {
> + if (backendStr) {
backendStr is filled in unconditionally, this condition is not
necessary.
With -blockdev there is no backend for an empty drive so it. I can
remove it but it will need to be put back later.
> virCommandAddArg(cmd, "-global");
> - virCommandAddArgFormat(cmd, "isa-fdc.%s", optstr);
> - } else {
> - virBufferAsprintf(&fdc_opts, "%s,", optstr);
> + virCommandAddArgFormat(cmd, "isa-fdc.%s", backendStr);
Reviewed-by: Ján Tomko <jtomko(a)redhat.com>
Jano