From nobody Thu May 15 10:15:27 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1511198788435721.5159765083966; Mon, 20 Nov 2017 09:26:28 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 83F0549036; Mon, 20 Nov 2017 17:26:27 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5C4434FA28; Mon, 20 Nov 2017 17:26:27 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 1E2DE3D3D3; Mon, 20 Nov 2017 17:26:27 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id vAKHQP3t025225 for ; Mon, 20 Nov 2017 12:26:25 -0500 Received: by smtp.corp.redhat.com (Postfix) id 7BB9F6A82C; Mon, 20 Nov 2017 17:26:25 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2B56B649A2; Mon, 20 Nov 2017 17:26:20 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Mon, 20 Nov 2017 18:25:28 +0100 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-loop: libvir-list@redhat.com Cc: Peter Krempa Subject: [libvirt] [PATCH 11/12] qemu: command: Move formatting of 'boot' attribute to -device X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Mon, 20 Nov 2017 17:26:27 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" bootable flag is a property of the frontend thus should be formatted with -device. Note: The combination of capability flags basically mandates qemu 0.12.3 - 1.0.0, which I did not test. --- src/qemu/qemu_command.c | 21 +++++++++++------= ---- .../qemuxml2argvdata/qemuxml2argv-boot-complex.args | 4 ++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 89bc41e468..08d96ef562 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1687,6 +1687,7 @@ qemuBuildDiskFrontendAttributeErrorPolicy(virDomainDi= skDefPtr disk, static void qemuBuildDiskFrontendAttributes(virDomainDiskDefPtr disk, virQEMUCapsPtr qemuCaps, + int bootindex, virBufferPtr buf) { /* generate geometry command string */ @@ -1709,6 +1710,14 @@ qemuBuildDiskFrontendAttributes(virDomainDiskDefPtr = disk, virBufferEscape(buf, '\\', " ", "%s", disk->serial); } + if (bootindex && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_BOOTINDEX) && + virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_BOOT) && + (disk->device =3D=3D VIR_DOMAIN_DISK_DEVICE_DISK || + disk->device =3D=3D VIR_DOMAIN_DISK_DEVICE_LUN) && + disk->bus !=3D VIR_DOMAIN_DISK_BUS_IDE) + virBufferAddLit(buf, ",boot=3Don"); + qemuBuildDiskFrontendAttributeErrorPolicy(disk, qemuCaps, buf); } @@ -1749,7 +1758,7 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk, virBufferAsprintf(&opt, "if=3D%s", virDomainDiskQEMUBusTypeToString(disk->bus)); virBufferAsprintf(&opt, ",index=3D%d", idx); - qemuBuildDiskFrontendAttributes(disk, qemuCaps, &opt); + qemuBuildDiskFrontendAttributes(disk, qemuCaps, bootindex, &opt); } if (disk->device =3D=3D VIR_DOMAIN_DISK_DEVICE_CDROM) { @@ -1764,14 +1773,6 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk, } } - if (bootindex && - !virQEMUCapsGet(qemuCaps, QEMU_CAPS_BOOTINDEX) && - virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_BOOT) && - (disk->device =3D=3D VIR_DOMAIN_DISK_DEVICE_DISK || - disk->device =3D=3D VIR_DOMAIN_DISK_DEVICE_LUN) && - disk->bus !=3D VIR_DOMAIN_DISK_BUS_IDE) - virBufferAddLit(&opt, ",boot=3Don"); - if (disk->src->readonly) virBufferAddLit(&opt, ",readonly=3Don"); @@ -2144,7 +2145,7 @@ qemuBuildDriveDevStr(const virDomainDef *def, disk->blockio.physical_block_size); } - qemuBuildDiskFrontendAttributes(disk, qemuCaps, &opt); + qemuBuildDiskFrontendAttributes(disk, qemuCaps, bootindex, &opt); if (disk->wwn) { if (STRPREFIX(disk->wwn, "0x")) diff --git a/tests/qemuxml2argvdata/qemuxml2argv-boot-complex.args b/tests/= qemuxml2argvdata/qemuxml2argv-boot-complex.args index b7a2fc119a..78d6d2745a 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-boot-complex.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-boot-complex.args @@ -19,9 +19,9 @@ server,nowait \ -no-acpi \ -boot dnca \ -usb \ --drive file=3D/tmp/vda.img,format=3Draw,if=3Dnone,id=3Ddrive-virtio-disk0,= boot=3Don \ +-drive file=3D/tmp/vda.img,format=3Draw,if=3Dnone,id=3Ddrive-virtio-disk0 \ -device virtio-blk-pci,scsi=3Doff,bus=3Dpci.0,addr=3D0x5,drive=3Ddrive-vir= tio-disk0,\ -id=3Dvirtio-disk0 \ +id=3Dvirtio-disk0,boot=3Don \ -drive file=3D/tmp/vdb.img,format=3Draw,if=3Dnone,id=3Ddrive-virtio-disk1 \ -device virtio-blk-pci,scsi=3Doff,bus=3Dpci.0,addr=3D0x6,drive=3Ddrive-vir= tio-disk1,\ id=3Dvirtio-disk1 \ --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list