Description of problem: The block size detection for file based storage is not safe for use with multiple connections, even when downloading an image, since the block size detection assume single thread access to the image. When trying to download empty image, block size detection may fail when one connection is truncating the image back to the original size while another connection is reading from the image. This is unlikely to happen since we don't have empty images - the minimum images size is 196K - new qcow2 volume. When uploading images in qcow2 format, block size detection may corrupt the first block of image by truncating data written by one connection by another connection trying to restore the original image size. Note that multiple connections for upload is not supported yet and is unsafe anyway because of zeroing code, and will be available in oVirt 4.4 only when using the NBD backend, which does use block size detection. However having block size detection that can modify the image is too risky and it was fixed upstream in: commit 7141efb4c93959b59fa3af1cca1819b925295150 Author: Nir Soffer <nsoffer> Date: Mon Dec 23 18:49:48 2019 +0200 file: Fix unsafe block size detection Version-Release number of selected component (if applicable): 1.5.2 How reproducible: Random failure are possible. Steps to Reproduce: 1. Upload qcow2 image with multiple connections, each connection uploads different portion of the image. Actual results: Upload fails or image is corrupted after the upload Expected results: Upload succeeds, image is valid after the upload Additional info: imageio client library will use multiple connections in oVirt 4.4, but it does not use multiple connections when using the file backend so it is not affected by this issue.
Checked all tierX automation test cases from last 7 days on 4.3. All passed without any regressions. Moving to VERIFIED
This bugzilla is included in oVirt 4.3.8 release, published on January 27th 2020. Since the problem described in this bug report should be resolved in oVirt 4.3.8 release, it has been closed with a resolution of CURRENT RELEASE. If the solution does not work for you, please open a new bug report.
Removing stale need infos.