← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1497293] [NEW] Nova misuses qemu-img for kernel and initrd

 

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


Follow ups