On 02/15/2017 06:25 AM, Kevin Wolf wrote:
> Am 14.02.2017 um 20:25 hat Eric Blake geschrieben:
>> qcow2_discard_clusters() is set up to silently ignore sub-cluster
>> head or tail on unaligned requests.  However, it is easy to audit
>> the various callers: qcow2_snapshot_create() has always passed
>> aligned data since the call was introduced in 1ebf561;
>> qcow2_co_pdiscard() has passed aligned clusters since commit
>> ecdbead taught the block layer the preferred discard alignment (the
>> block layer can still pass sub-cluster values, but those are
>> handled directly in qcow2_co_pdiscard()); and qcow2_make_empty()
>> was fixed to pass aligned clusters in commit a3e1505.
> 
> I don't think this is true for the very part in the image if the image
> size isn't cluster aligned:
> 
>     ret = qcow2_discard_clusters(bs, start_sector * BDRV_SECTOR_SIZE,
>                                  MIN(sector_step,
>                                      bs->total_sectors - start_sector),
>                                  QCOW2_DISCARD_SNAPSHOT, true);
> 
> sector_step is alright after commit a3e1505, but bs->total_sectors can
> be unaligned.

Indeed; a slight tweak to qemu-iotests/097 exposes the problem.  I'll
include that in my next spin (although I note that Dan has patches on
the list to split 097 into two tests, in order to give qcow coverage
rather than just qcow2).

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to