diff options
author | Max Reitz | 2020-06-18 17:39:28 +0200 |
---|---|---|
committer | Kevin Wolf | 2020-09-07 12:31:31 +0200 |
commit | 23b93525a2f30915f6c8418eb23db6912a3b5811 (patch) | |
tree | 8411cecf95d52bb5689cbcb157f70acc223fb3db | |
parent | block: Use CAFs when working with backing chains (diff) | |
download | qemu-23b93525a2f30915f6c8418eb23db6912a3b5811.tar.gz qemu-23b93525a2f30915f6c8418eb23db6912a3b5811.tar.xz qemu-23b93525a2f30915f6c8418eb23db6912a3b5811.zip |
block: Use bdrv_cow_child() in bdrv_co_truncate()
The condition modified here is not about potentially filtered children,
but only about COW sources (i.e. traditional backing files).
Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
-rw-r--r-- | block/io.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/block/io.c b/block/io.c index 4ee8fe5465..6f9402117e 100644 --- a/block/io.c +++ b/block/io.c @@ -3310,7 +3310,7 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child, int64_t offset, bool exact, Error **errp) { BlockDriverState *bs = child->bs; - BdrvChild *filtered; + BdrvChild *filtered, *backing; BlockDriver *drv = bs->drv; BdrvTrackedRequest req; int64_t old_size, new_bytes; @@ -3363,6 +3363,7 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child, int64_t offset, bool exact, } filtered = bdrv_filter_child(bs); + backing = bdrv_cow_child(bs); /* * If the image has a backing file that is large enough that it would @@ -3374,10 +3375,10 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child, int64_t offset, bool exact, * backing file, taking care of keeping things consistent with that backing * file is the user's responsibility. */ - if (new_bytes && bs->backing) { + if (new_bytes && backing) { int64_t backing_len; - backing_len = bdrv_getlength(backing_bs(bs)); + backing_len = bdrv_getlength(backing->bs); if (backing_len < 0) { ret = backing_len; error_setg_errno(errp, -ret, "Could not get backing file size"); |