Commit 9a665b2b authored by Peter Lieven's avatar Peter Lieven Committed by Kevin Wolf
Browse files

block: complete all IOs before .bdrv_truncate



bdrv_truncate() invalidates the bdrv_check_request() result for
in-flight requests, so there should better be none.

Cc: qemu-stable@nongnu.org
Signed-off-by: default avatarPeter Lieven <pl@kamp.de>
Reported-by: default avatarKevin Wolf <kwolf@redhat.com>
Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent 02700315
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -2427,6 +2427,10 @@ int bdrv_truncate(BlockDriverState *bs, int64_t offset)
        return -EACCES;
    if (bdrv_in_use(bs))
        return -EBUSY;

    /* There better not be any in-flight IOs when we truncate the device. */
    bdrv_drain_all();

    ret = drv->bdrv_truncate(bs, offset);
    if (ret == 0) {
        ret = refresh_total_sectors(bs, offset >> BDRV_SECTOR_BITS);