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

Reply via email to