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
signature.asc
Description: OpenPGP digital signature