]> git.proxmox.com Git - mirror_qemu.git/commit
block: Use tracked request for truncate
authorKevin Wolf <kwolf@redhat.com>
Tue, 26 Jun 2018 12:23:23 +0000 (14:23 +0200)
committerKevin Wolf <kwolf@redhat.com>
Fri, 29 Jun 2018 12:20:56 +0000 (14:20 +0200)
commit1bc5f09f2e1b2be8f6f737b8d5352b438fc41492
tree17c58245a6ec4d176d565aecc71d9c005a349827
parent3d9f2d2af63fda5f0404fb85ea80161837a4e4e3
block: Use tracked request for truncate

When growing an image, block drivers (especially protocol drivers) may
initialise the newly added area. I/O requests to the same area need to
wait for this initialisation to be completed so that data writes don't
get overwritten and reads don't read uninitialised data.

To avoid overhead in the fast I/O path by adding new locking in the
protocol drivers and to restrict the impact to requests that actually
touch the new area, reuse the existing tracked request infrastructure in
block/io.c and mark all discard requests as serialising.

With this change, it is safe for protocol drivers to make
.bdrv_co_truncate actually asynchronous.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
block/io.c
include/block/block_int.h