From 2862cc500c4605d6a3e3288c2d4cc045a2fa1719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20=C4=8Cajka?= Date: Tue, 26 May 2020 16:24:38 +0200 Subject: [PATCH] kola/qemu: Pass ignition via blk device on non-fw_cfg platforms by default Move from injecting ingnition directly in to the VM image on non-fw_cfg architectures to passing it via virtio-blk device. It should be more performant and should be more robust going forward. See: https://github.com/coreos/ignition/pull/905 --- mantle/platform/qemu.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mantle/platform/qemu.go b/mantle/platform/qemu.go index 7a657e9d9a..6dfcb31c0e 100644 --- a/mantle/platform/qemu.go +++ b/mantle/platform/qemu.go @@ -638,7 +638,7 @@ func (builder *QemuBuilder) addDiskImpl(disk *Disk, primary bool) error { if err := builder.renderIgnition(); err != nil { return errors.Wrapf(err, "rendering ignition") } - requiresInjection := builder.ConfigFile != "" && (builder.ForceConfigInjection || !builder.supportsFwCfg()) + requiresInjection := builder.ConfigFile != "" && builder.ForceConfigInjection if requiresInjection || builder.IgnitionNetworkKargs != "" || builder.AppendKernelArguments != "" { if err := setupPreboot(builder.ConfigFile, builder.IgnitionNetworkKargs, builder.AppendKernelArguments, disk.dstFileName, disk.SectorSize); err != nil { @@ -1028,9 +1028,11 @@ func (builder *QemuBuilder) Exec() (*QemuInstance, error) { if builder.ConfigFile != "" && !builder.configInjected { if builder.supportsFwCfg() { builder.Append("-fw_cfg", "name=opt/com.coreos/config,file="+builder.ConfigFile) - } else if builder.primaryDisk == nil { - // Otherwise, we should have handled it in builder.AddPrimaryDisk - panic("Ignition specified but no primary disk") + } else { + // Alternative to fw_cfg, should be generally usable on all arches, + // especially those without fw_cfg support. + // See https://github.com/coreos/ignition/pull/905 + builder.Append("-drive", fmt.Sprintf("if=none,id=ignition,format=raw,file=%s,readonly=on", builder.ConfigFile), "-device", "virtio-blk,serial=ignition,drive=ignition") } }