diff options
author | Fam Zheng | 2015-06-08 07:56:08 +0200 |
---|---|---|
committer | Stefan Hajnoczi | 2015-07-02 11:06:23 +0200 |
commit | 0fc9f8ea2800b76eaea20a8a3a91fbeeb4bfa81b (patch) | |
tree | 0e38faa50c9b3d149853693e64d945b15d351405 /blockdev.c | |
parent | block: Add bdrv_get_block_status_above (diff) | |
download | qemu-0fc9f8ea2800b76eaea20a8a3a91fbeeb4bfa81b.tar.gz qemu-0fc9f8ea2800b76eaea20a8a3a91fbeeb4bfa81b.tar.xz qemu-0fc9f8ea2800b76eaea20a8a3a91fbeeb4bfa81b.zip |
qmp: Add optional bool "unmap" to drive-mirror
If specified as "true", it allows discarding on target sectors where source is
not allocated.
Signed-off-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'blockdev.c')
-rw-r--r-- | blockdev.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/blockdev.c b/blockdev.c index 4d5e016e62..7fee519a1c 100644 --- a/blockdev.c +++ b/blockdev.c @@ -2655,6 +2655,7 @@ void qmp_drive_mirror(const char *device, const char *target, bool has_buf_size, int64_t buf_size, bool has_on_source_error, BlockdevOnError on_source_error, bool has_on_target_error, BlockdevOnError on_target_error, + bool has_unmap, bool unmap, Error **errp) { BlockBackend *blk; @@ -2686,6 +2687,9 @@ void qmp_drive_mirror(const char *device, const char *target, if (!has_buf_size) { buf_size = DEFAULT_MIRROR_BUF_SIZE; } + if (!has_unmap) { + unmap = true; + } if (granularity != 0 && (granularity < 512 || granularity > 1048576 * 64)) { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "granularity", @@ -2827,6 +2831,7 @@ void qmp_drive_mirror(const char *device, const char *target, has_replaces ? replaces : NULL, speed, granularity, buf_size, sync, on_source_error, on_target_error, + unmap, block_job_cb, bs, &local_err); if (local_err != NULL) { bdrv_unref(target_bs); |