[libvirt] [PATCH 0/2] A pair of build fixes.

Even though these fix a broken build, I'm sending them up for review. Michal Prívozník (2): qemu_firmware: Accept int in qemuFirmwareOSInterfaceTypeFromOsDefFirmware() vz: Don't try to jump on a non-existent label in prlsdkRemoveBootDevices() src/conf/domain_conf.h | 4 ++-- src/qemu/qemu_firmware.c | 2 +- src/vz/vz_sdk.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) -- 2.24.1

The point of this function is to translate virDomainOsDefFirmware enum to qemuFirmwareOSInterface enum. However, with my commit of v5.10.0-507-g8e1804f9f6 we are passing a variable type of virDomainLoader enum. Make the function accept both enums and make the enum members correspond to each other. This fixes clang build. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/conf/domain_conf.h | 4 ++-- src/qemu/qemu_firmware.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index e6b06a8eba..6a61c9603f 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1927,8 +1927,8 @@ struct _virDomainOSEnv { typedef enum { VIR_DOMAIN_OS_DEF_FIRMWARE_NONE = 0, - VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS, - VIR_DOMAIN_OS_DEF_FIRMWARE_EFI, + VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS = VIR_DOMAIN_LOADER_TYPE_ROM, + VIR_DOMAIN_OS_DEF_FIRMWARE_EFI = VIR_DOMAIN_LOADER_TYPE_PFLASH, VIR_DOMAIN_OS_DEF_FIRMWARE_LAST } virDomainOsDefFirmware; diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index a835fe6b4a..7fb57913e8 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -929,7 +929,7 @@ qemuFirmwareMatchesMachineArch(const qemuFirmware *fw, static qemuFirmwareOSInterface -qemuFirmwareOSInterfaceTypeFromOsDefFirmware(virDomainOsDefFirmware fw) +qemuFirmwareOSInterfaceTypeFromOsDefFirmware(int fw) { switch (fw) { case VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS: -- 2.24.1

On Wed, Jan 08, 2020 at 09:52:11AM +0100, Michal Privoznik wrote:
The point of this function is to translate virDomainOsDefFirmware enum to qemuFirmwareOSInterface enum. However, with my commit of
d/of /
v5.10.0-507-g8e1804f9f6 we are passing a variable type of virDomainLoader enum. Make the function accept both enums and make the enum members correspond to each other.
This fixes clang build.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/conf/domain_conf.h | 4 ++-- src/qemu/qemu_firmware.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index e6b06a8eba..6a61c9603f 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1927,8 +1927,8 @@ struct _virDomainOSEnv {
typedef enum { VIR_DOMAIN_OS_DEF_FIRMWARE_NONE = 0, - VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS, - VIR_DOMAIN_OS_DEF_FIRMWARE_EFI, + VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS = VIR_DOMAIN_LOADER_TYPE_ROM, + VIR_DOMAIN_OS_DEF_FIRMWARE_EFI = VIR_DOMAIN_LOADER_TYPE_PFLASH,
VIR_DOMAIN_OS_DEF_FIRMWARE_LAST
Please also add: G_STATIC_ASSERT(VIR_DOMAIN_OS_DEF_FIRMWARE_LAST == VIR_DOMAIN_LOADER_TYPE_LAST); to match the verify() assertion we've done for qemuBlockjobState
} virDomainOsDefFirmware; diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index a835fe6b4a..7fb57913e8 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -929,7 +929,7 @@ qemuFirmwareMatchesMachineArch(const qemuFirmware *fw,
static qemuFirmwareOSInterface -qemuFirmwareOSInterfaceTypeFromOsDefFirmware(virDomainOsDefFirmware fw) +qemuFirmwareOSInterfaceTypeFromOsDefFirmware(int fw) { switch (fw) { case VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS:
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

Commit v5.10.0-522-g9000b2f298 was too aggressive and removed the 'error' label from prlsdkRemoveBootDevices() even though it's used. Luckily, it's used only from one place and we have an alternative for it that doesn't require the label. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/vz/vz_sdk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c index 71ca1a9148..f820634cd2 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -2725,7 +2725,7 @@ prlsdkRemoveBootDevices(PRL_HANDLE sdkdom) PRL_DEVICE_TYPE devType; pret = PrlVmCfg_GetBootDevCount(sdkdom, &devCount); - prlsdkCheckRetGoto(pret, error); + prlsdkCheckRetExit(pret, -1); for (i = 0; i < devCount; i++) { -- 2.24.1

On Wed, Jan 08, 2020 at 09:52:12AM +0100, Michal Privoznik wrote:
Commit v5.10.0-522-g9000b2f298 was too aggressive and removed the 'error' label from prlsdkRemoveBootDevices() even though it's used. Luckily, it's used only from one place and we have an alternative for it that doesn't require the label.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/vz/vz_sdk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Ah, the dangers of changing code without compile-testing it.
diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c index 71ca1a9148..f820634cd2 100644 --- a/src/vz/vz_sdk.c +++ b/src/vz/vz_sdk.c @@ -2725,7 +2725,7 @@ prlsdkRemoveBootDevices(PRL_HANDLE sdkdom) PRL_DEVICE_TYPE devType;
pret = PrlVmCfg_GetBootDevCount(sdkdom, &devCount); - prlsdkCheckRetGoto(pret, error); + prlsdkCheckRetExit(pret, -1);
for (i = 0; i < devCount; i++) {
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano
participants (2)
-
Ján Tomko
-
Michal Privoznik