xemu/block
Eric Blake 048c5fd1bf qcow2: Allow discard of final unaligned cluster
As mentioned in commit 0c1bd46, we ignored requests to
discard the trailing cluster of an unaligned image.  While
discard is an advisory operation from the guest standpoint,
(and we are therefore free to ignore any request), our
qcow2 implementation exploits the fact that a discarded
cluster reads back as 0.  As long as we discard on cluster
boundaries, we are fine; but that means we could observe
non-zero data leaked at the tail of an unaligned image.

Enhance iotest 66 to cover this case, and fix the implementation
to honor a discard request on the final partial cluster.

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-id: 20170407013709.18440-1-eblake@redhat.com
Signed-off-by: Max Reitz <mreitz@redhat.com>
2017-04-28 16:02:03 +02:00
..
accounting.c block: Clean up includes 2016-01-20 13:36:23 +01:00
backup.c backup: React to bdrv_is_allocated() errors 2017-03-13 12:49:33 +01:00
blkdebug.c block: Add errp to BD.bdrv_truncate() 2017-04-28 16:02:03 +02:00
blkreplay.c block: Do not unref bs->file on error in BD's open 2017-04-27 16:12:13 +02:00
blkverify.c block: Do not unref bs->file on error in BD's open 2017-04-27 16:12:13 +02:00
block-backend.c block: Add errp to b{lk,drv}_truncate() 2017-04-28 16:02:02 +02:00
bochs.c block: do not set BDS read_only if copy_on_read enabled 2017-04-24 15:09:33 -04:00
cloop.c block: do not set BDS read_only if copy_on_read enabled 2017-04-24 15:09:33 -04:00
commit.c block: Add errp to b{lk,drv}_truncate() 2017-04-28 16:02:02 +02:00
crypto.c block: Add errp to BD.bdrv_truncate() 2017-04-28 16:02:03 +02:00
curl.c block/curl: Check protocol prefix 2017-03-31 15:53:22 -04:00
dirty-bitmap.c block: More operations for meta dirty bitmap 2016-10-24 17:56:07 +02:00
dmg-bz2.c dmg: Move libbz2 code to dmg-bz2.so 2016-10-07 14:14:06 +02:00
dmg.c block: do not set BDS read_only if copy_on_read enabled 2017-04-24 15:09:33 -04:00
dmg.h dmg: Move libbz2 code to dmg-bz2.so 2016-10-07 14:14:06 +02:00
file-posix.c block: Add .bdrv_truncate() error messages 2017-04-28 16:02:03 +02:00
file-win32.c block: Add errp to BD.bdrv_truncate() 2017-04-28 16:02:03 +02:00
gluster.c block: Add .bdrv_truncate() error messages 2017-04-28 16:02:03 +02:00
io.c block: fix alignment calculations in bdrv_co_do_zero_pwritev 2017-04-27 16:24:01 +02:00
iscsi-opts.c block/iscsi: statically link qemu_iscsi_opts 2017-01-27 18:07:58 +01:00
iscsi.c block: Add .bdrv_truncate() error messages 2017-04-28 16:02:03 +02:00
linux-aio.c block: explicitly acquire aiocontext in aio callbacks that need it 2017-02-21 11:39:39 +00:00
Makefile.objs block/vxhs.c: Add support for a new block device type called "vxhs" 2017-04-24 15:08:42 -04:00
mirror.c block: Add errp to b{lk,drv}_truncate() 2017-04-28 16:02:02 +02:00
nbd-client.c nbd-client: fix handling of hungup connections 2017-03-27 16:50:36 +02:00
nbd-client.h nbd: drop unused NBDClientSession.is_unix field 2017-03-27 14:41:01 +02:00
nbd.c * MemoryRegionCache revert 2017-04-04 11:40:55 +01:00
nfs.c block: Add .bdrv_truncate() error messages 2017-04-28 16:02:03 +02:00
null.c block: explicitly acquire aiocontext in aio callbacks that need it 2017-02-21 11:39:39 +00:00
parallels.c block: Add errp to b{lk,drv}_truncate() 2017-04-28 16:02:02 +02:00
qapi.c block: Don't bother asserting type of output visitor's output 2017-02-22 19:52:20 +01:00
qcow2-cache.c qcow2: Remove stale comment 2016-11-25 13:51:30 +01:00
qcow2-cluster.c qcow2: Discard unaligned tail when wiping image 2017-04-03 17:11:40 +02:00
qcow2-refcount.c block: Add errp to b{lk,drv}_truncate() 2017-04-28 16:02:02 +02:00
qcow2-snapshot.c block: Convert bdrv_pwrite(v/_sync) to BdrvChild 2016-07-05 16:46:27 +02:00
qcow2.c qcow2: Allow discard of final unaligned cluster 2017-04-28 16:02:03 +02:00
qcow2.h qcow2: Optimize the refcount-block overlap check 2017-02-12 00:47:43 +01:00
qcow.c block: Add errp to b{lk,drv}_truncate() 2017-04-28 16:02:02 +02:00
qed-check.c qed: Use DIV_ROUND_UP 2016-06-07 18:19:24 +03:00
qed-cluster.c block: explicitly acquire aiocontext in aio callbacks that need it 2017-02-21 11:39:39 +00:00
qed-gencb.c block: Clean up includes 2016-01-20 13:36:23 +01:00
qed-l2-cache.c block: Clean up includes 2016-01-20 13:36:23 +01:00
qed-table.c block: explicitly acquire aiocontext in aio callbacks that need it 2017-02-21 11:39:39 +00:00
qed.c block: Add .bdrv_truncate() error messages 2017-04-28 16:02:03 +02:00
qed.h block: explicitly acquire aiocontext in timers that need it 2017-02-21 11:14:08 +00:00
quorum.c block: Request child permissions in filter drivers 2017-02-28 20:40:36 +01:00
raw-format.c block: Add .bdrv_truncate() error messages 2017-04-28 16:02:03 +02:00
rbd.c block: Add .bdrv_truncate() error messages 2017-04-28 16:02:03 +02:00
replication.c block: Make errp the last parameter of commit_active_start 2017-04-24 09:13:44 +02:00
sheepdog.c block: Add errp to BD.bdrv_truncate() 2017-04-28 16:02:03 +02:00
snapshot.c block: pass the right options for BlockDriver.bdrv_open() 2017-04-11 15:33:00 +02:00
ssh.c socket: Make errp the last parameter of inet_connect_saddr 2017-04-24 09:12:59 +02:00
stream.c block: Add Error parameter to bdrv_set_backing_hd() 2017-02-28 20:47:51 +01:00
throttle-groups.c coroutine-lock: add mutex argument to CoQueue APIs 2017-02-21 11:39:40 +00:00
trace-events block/vxhs.c: Add support for a new block device type called "vxhs" 2017-04-24 15:08:42 -04:00
vdi.c block: Add errp to b{lk,drv}_truncate() 2017-04-28 16:02:02 +02:00
vhdx-endian.c vhdx: Use QEMU UUID API 2016-09-23 11:42:52 +08:00
vhdx-log.c block: Add errp to b{lk,drv}_truncate() 2017-04-28 16:02:02 +02:00
vhdx.c block: Add errp to b{lk,drv}_truncate() 2017-04-28 16:02:02 +02:00
vhdx.h block: vhdx - update PAYLOAD_BLOCK_UNMAPPED value to match 1.00 spec 2014-12-12 15:42:22 +00:00
vmdk.c block: Add errp to b{lk,drv}_truncate() 2017-04-28 16:02:02 +02:00
vpc.c block: Add errp to b{lk,drv}_truncate() 2017-04-28 16:02:02 +02:00
vvfat.c block: do not set BDS read_only if copy_on_read enabled 2017-04-24 15:09:33 -04:00
vxhs.c block/vxhs.c: Add support for a new block device type called "vxhs" 2017-04-24 15:08:42 -04:00
win32-aio.c block: explicitly acquire aiocontext in aio callbacks that need it 2017-02-21 11:39:39 +00:00
write-threshold.c block: use bdrv_add_before_write_notifier 2016-10-07 13:34:07 +02:00