Woops wrong upstream link, should be https://opendev.org/openstack/glance_store/commit/55cefedd169b84d713a8ff080d909483ea51c913
Edited. This was requested for Jammy-Carracal. ** Description changed: [ Impact ] * When Glance is configured to use Cinder as a store backend and the Cinder volume backend uses the Dell PowerFlex (ScaleIO) driver, images can be created/uploaded into the store, but every subsequent read of the image data fails and returns no data. * The ScaleIO brick connector in glance_store determines the device size by seeking to the end of the attached volume device (os.fstat/stat report st_size=0 for block devices exported by the ScaleIO/PowerFlex protocol, so seek/tell is the only working method). This size probe is part of the device-resize wait mechanism that runs on every volume attach -- including image download -- and the file pointer is left at end-of-file afterwards, so the download reads 0 bytes. * This regression was introduced upstream with the generalized device-resize wait mechanism in glance_store (reviews 826290, 843103) and is present since glance_store 4.5.0 (2023.1 Antelope); both the Ubuntu archive (noble, python-glance-store 4.7.0-0ubuntu1) and the UCA jammy-caracal pocket (python-glance-store 4.7.0-0ubuntu1~cloud0) carry it. * Backporting this fix restores correct image download by saving the device file pointer before the size probe and restoring it afterwards, so reads start at the correct offset. The uploaded fix comes from the upstream patch that was already backported to glance_store stable/2024.1 and incorporated in the 4.7.1 (Caracal) point release. [ Test Plan ] * [0] The following versions of Ubuntu-OpenStack will be tested: - Ubuntu archive: noble - UCA: jammy-caracal * [1] Deploy an OpenStack environment with Glance configured to use the cinder store (e.g. enabled_backends including cinder) and a Cinder volume backend using the Dell PowerFlex (ScaleIO) driver (a volume type with volume_backend_name pointing to the PowerFlex backend). * [2] Upload an image into the cinder store: openstack image create --file <img> --store cinder ... this works before and after the patch. * [3] Download the image data back from the cinder store: openstack image save --file downloaded.img <image> create a bootable volume from the image: openstack volume create --size <n> --type powerflex --image <image> \ --bootable <vol> * [4] Verify the behavior -- Before the patch, the downloaded image file is empty/fails its checksum and the volume-create-from-image flow fails with Corrupt image download. Hash was <hash>... expected <image os_hash_value> with volume goes to error. After the patch, openstack image save returns the full image with matching SHA-512 and volumes created from the image become available and bootable. [ Where problems could occur ] - * The change is confined to _get_device_size in the ScaleIO brick connector - (glance_store/_drivers/cinder/scaleio.py), which is only called when - glance's cinder store attaches a volume with driver_volume_type scaleio. - Other glance store backends (file, http, swift, rbd) and cinder deployments - using other drivers (NFS, RBD, iSCSI, etc.) are untouched. - * The fix only saves and restores the file pointer around the pre-existing size - probe; the device file object already had to support seek()/tell() for the - wait mechanism, so no new capability is assumed of any backend. + * The change is confined to _get_device_size in the ScaleIO brick connector + (glance_store/_drivers/cinder/scaleio.py), which is only called when + glance's cinder store attaches a volume with driver_volume_type scaleio. + Other glance store backends (file, http, swift, rbd) and cinder deployments + using other drivers (NFS, RBD, iSCSI, etc.) are untouched. + * The fix only saves and restores the file pointer around the pre-existing size + probe; the device file object already had to support seek()/tell() for the + wait mechanism, so no new capability is assumed of any backend. [ Other Info ] - * Upstream fix to glance_store (master): https://review.opendev.org/c/openstack/glance_store/+/826290 + * Upstream fix to glance_store (master): https://opendev.org/openstack/glance_store/commit/55cefedd169b84d713a8ff080d909483ea51c913 * Upstream commit to glance_store (2024.1): https://opendev.org/openstack/glance_store/commit/8fbdf992296a7dad9fcf5fc7564e59f9c60da034 -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2166537 Title: [SRU] python-glance-store 2024.1 fix Cinder Dell PowerFlex To manage notifications about this bug go to: https://bugs.launchpad.net/cloud-archive/+bug/2166537/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
