diff options
author | Fam Zheng <famz@redhat.com> | 2018-07-10 14:31:23 +0800 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2018-07-10 16:46:22 +0200 |
commit | 5416a11eb55d46c376dde97c429b89e9b4e1a94f (patch) | |
tree | c7f58ce65327100e4acf7527c210f88b9e2e51b1 | |
parent | 0eb1e891126f0cde52e88384696ad67076bdc341 (diff) | |
download | qemu-5416a11eb55d46c376dde97c429b89e9b4e1a94f.zip |
block: Fix bdrv_co_truncate overlap check
If we are growing the image and potentially using preallocation for the
new area, we need to make sure that no write requests are made to the
"preallocated" area which is [@old_size, @offset), not
[@offset, offset * 2 - @old_size).
Signed-off-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
-rw-r--r-- | block/io.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/block/io.c b/block/io.c index 2832214db4..77d38ca1d3 100644 --- a/block/io.c +++ b/block/io.c @@ -3136,7 +3136,8 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child, int64_t offset, } bdrv_inc_in_flight(bs); - tracked_request_begin(&req, bs, offset, new_bytes, BDRV_TRACKED_TRUNCATE); + tracked_request_begin(&req, bs, offset - new_bytes, new_bytes, + BDRV_TRACKED_TRUNCATE); /* If we are growing the image and potentially using preallocation for the * new area, we need to make sure that no write requests are made to it |