On 2017-11-10 23:15, Eric Blake wrote: > On 11/10/2017 04:00 PM, Max Reitz wrote: >>> Trying to understand this: we have a double corruption, because we >>> encountered a refblock that points outside of the image, but fixing the >>> refblock in turn encounters a second refblock that points within the >>> image but to an unaligned area. >> >> No, it's the very same. As far as I've seen it, the repair function >> tries to fix the "refblock is outside image" error by resizing the image >> so the refblock is inside the image. However, the subsequent >> bdrv_truncate() detects the alignment corruption, too, and thus marks >> the image corrupt. > > Is resizing the image to be larger always a wise thing compared to just > rebuilding the refcount? If I stick a large enough out-of-image value > in the table, can I cause a denial-of-service by making qemu try to > allocate petabytes of storage just to bring it into range? But it's just a qcow2 resize (with no preallocation), so nothing will be allocated. Max