From: James Le Cuirot <jlecui...@microsoft.com> Distros may provide compatibility symlinks after moving firmware files around, but they won't work for existing VMs when doing a straight string comparison.
I tried to compare inodes instead, but even glib doesn't provide a straightforward cross-platform method to do this. Resolves: https://bugs.gentoo.org/960591 Signed-off-by: James Le Cuirot <jlecui...@microsoft.com> --- src/qemu/qemu_firmware.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 2d0ec0b..b13b4f9 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -33,6 +33,7 @@ #include "viralloc.h" #include "virenum.h" #include "virstring.h" +#include "virfile.h" #define VIR_FROM_THIS VIR_FROM_QEMU @@ -937,23 +938,23 @@ qemuFirmwareMatchesPaths(const qemuFirmware *fw, switch (fw->mapping.device) { case QEMU_FIRMWARE_DEVICE_FLASH: if (loader && loader->path && - STRNEQ(loader->path, flash->executable.filename)) + !virFileComparePaths(loader->path, flash->executable.filename)) return false; if (loader && loader->nvramTemplate) { if (flash->mode != QEMU_FIRMWARE_FLASH_MODE_SPLIT) return false; - if (STRNEQ(loader->nvramTemplate, flash->nvram_template.filename)) + if (!virFileComparePaths(loader->nvramTemplate, flash->nvram_template.filename)) return false; } break; case QEMU_FIRMWARE_DEVICE_MEMORY: if (loader && loader->path && - STRNEQ(loader->path, memory->filename)) + !virFileComparePaths(loader->path, memory->filename)) return false; break; case QEMU_FIRMWARE_DEVICE_KERNEL: if (kernelPath && - STRNEQ(kernelPath, kernel->filename)) + !virFileComparePaths(kernelPath, kernel->filename)) return false; break; case QEMU_FIRMWARE_DEVICE_NONE: @@ -1657,7 +1658,7 @@ qemuFirmwareFillDomainLegacy(virQEMUDriver *driver, for (i = 0; i < cfg->nfirmwares; i++) { virFirmware *fw = cfg->firmwares[i]; - if (STRNEQ(fw->name, loader->path)) { + if (!virFileComparePaths(fw->name, loader->path)) { VIR_DEBUG("Not matching loader path '%s' for user provided path '%s'", fw->name, loader->path); continue; -- 2.49.0