Public bug reported: QEMU loads -kernel and -inird arguments as binary blobs, without processing them through its block layer - that is only done for disk images (i.e., -drive file=...). I.e., from QEMU's perspective, all kernels and all initrds are raw format. QEMU's modular block drivers allow to add format support, e.g., for gzip'ed images.
When a different format is reported in place of "raw", Nova will unnecessarily try to convert the initramfs to raw format, which will still report the same format as before, leading to an exception being raised. Therefore please do not run `qemu-img info` on files that are not disk images. The source of the problem seems to be that the same libvirt_utils.fetch_image function is used for disk_images['kernel_id'] and disk_images['ramdisk_id'] as for disk_images['image_id']: https://git.openstack.org/cgit/openstack/nova/tree/nova/virt/images.py?h=stable/kilo#n131 https://git.openstack.org/cgit/openstack/nova/tree/nova/virt/libvirt/utils.py?h=stable/kilo#n504 https://git.openstack.org/cgit/openstack/nova/tree/nova/virt/libvirt/driver.py?h=stable/kilo#n2741 ** Affects: nova Importance: Undecided Status: New -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to OpenStack Compute (nova). https://bugs.launchpad.net/bugs/1497293 Title: Nova misuses qemu-img for kernel and initrd Status in OpenStack Compute (nova): New Bug description: QEMU loads -kernel and -inird arguments as binary blobs, without processing them through its block layer - that is only done for disk images (i.e., -drive file=...). I.e., from QEMU's perspective, all kernels and all initrds are raw format. QEMU's modular block drivers allow to add format support, e.g., for gzip'ed images. When a different format is reported in place of "raw", Nova will unnecessarily try to convert the initramfs to raw format, which will still report the same format as before, leading to an exception being raised. Therefore please do not run `qemu-img info` on files that are not disk images. The source of the problem seems to be that the same libvirt_utils.fetch_image function is used for disk_images['kernel_id'] and disk_images['ramdisk_id'] as for disk_images['image_id']: https://git.openstack.org/cgit/openstack/nova/tree/nova/virt/images.py?h=stable/kilo#n131 https://git.openstack.org/cgit/openstack/nova/tree/nova/virt/libvirt/utils.py?h=stable/kilo#n504 https://git.openstack.org/cgit/openstack/nova/tree/nova/virt/libvirt/driver.py?h=stable/kilo#n2741 To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1497293/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

