block/mirror: add block job creation flags

Add support for taking and passing forward job creation flags.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Jeff Cody <jcody@redhat.com>
Message-id: 20180906130225.5118-3-jsnow@redhat.com
Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
John Snow 2018-09-06 09:02:11 -04:00 committed by Max Reitz
parent 5360782d08
commit a1999b3348
3 changed files with 9 additions and 4 deletions

View File

@ -1639,7 +1639,8 @@ fail:
void mirror_start(const char *job_id, BlockDriverState *bs, void mirror_start(const char *job_id, BlockDriverState *bs,
BlockDriverState *target, const char *replaces, BlockDriverState *target, const char *replaces,
int64_t speed, uint32_t granularity, int64_t buf_size, int creation_flags, int64_t speed,
uint32_t granularity, int64_t buf_size,
MirrorSyncMode mode, BlockMirrorBackingMode backing_mode, MirrorSyncMode mode, BlockMirrorBackingMode backing_mode,
BlockdevOnError on_source_error, BlockdevOnError on_source_error,
BlockdevOnError on_target_error, BlockdevOnError on_target_error,
@ -1655,7 +1656,7 @@ void mirror_start(const char *job_id, BlockDriverState *bs,
} }
is_none_mode = mode == MIRROR_SYNC_MODE_NONE; is_none_mode = mode == MIRROR_SYNC_MODE_NONE;
base = mode == MIRROR_SYNC_MODE_TOP ? backing_bs(bs) : NULL; base = mode == MIRROR_SYNC_MODE_TOP ? backing_bs(bs) : NULL;
mirror_start_job(job_id, bs, JOB_DEFAULT, target, replaces, mirror_start_job(job_id, bs, creation_flags, target, replaces,
speed, granularity, buf_size, backing_mode, speed, granularity, buf_size, backing_mode,
on_source_error, on_target_error, unmap, NULL, NULL, on_source_error, on_target_error, unmap, NULL, NULL,
&mirror_job_driver, is_none_mode, base, false, &mirror_job_driver, is_none_mode, base, false,

View File

@ -3590,6 +3590,7 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
bool has_copy_mode, MirrorCopyMode copy_mode, bool has_copy_mode, MirrorCopyMode copy_mode,
Error **errp) Error **errp)
{ {
int job_flags = JOB_DEFAULT;
if (!has_speed) { if (!has_speed) {
speed = 0; speed = 0;
@ -3642,7 +3643,7 @@ static void blockdev_mirror_common(const char *job_id, BlockDriverState *bs,
* and will allow to check whether the node still exist at mirror completion * and will allow to check whether the node still exist at mirror completion
*/ */
mirror_start(job_id, bs, target, mirror_start(job_id, bs, target,
has_replaces ? replaces : NULL, has_replaces ? replaces : NULL, job_flags,
speed, granularity, buf_size, sync, backing_mode, speed, granularity, buf_size, sync, backing_mode,
on_source_error, on_target_error, unmap, filter_node_name, on_source_error, on_target_error, unmap, filter_node_name,
copy_mode, errp); copy_mode, errp);

View File

@ -1029,6 +1029,8 @@ void commit_active_start(const char *job_id, BlockDriverState *bs,
* @target: Block device to write to. * @target: Block device to write to.
* @replaces: Block graph node name to replace once the mirror is done. Can * @replaces: Block graph node name to replace once the mirror is done. Can
* only be used when full mirroring is selected. * only be used when full mirroring is selected.
* @creation_flags: Flags that control the behavior of the Job lifetime.
* See @BlockJobCreateFlags
* @speed: The maximum speed, in bytes per second, or 0 for unlimited. * @speed: The maximum speed, in bytes per second, or 0 for unlimited.
* @granularity: The chosen granularity for the dirty bitmap. * @granularity: The chosen granularity for the dirty bitmap.
* @buf_size: The amount of data that can be in flight at one time. * @buf_size: The amount of data that can be in flight at one time.
@ -1050,7 +1052,8 @@ void commit_active_start(const char *job_id, BlockDriverState *bs,
*/ */
void mirror_start(const char *job_id, BlockDriverState *bs, void mirror_start(const char *job_id, BlockDriverState *bs,
BlockDriverState *target, const char *replaces, BlockDriverState *target, const char *replaces,
int64_t speed, uint32_t granularity, int64_t buf_size, int creation_flags, int64_t speed,
uint32_t granularity, int64_t buf_size,
MirrorSyncMode mode, BlockMirrorBackingMode backing_mode, MirrorSyncMode mode, BlockMirrorBackingMode backing_mode,
BlockdevOnError on_source_error, BlockdevOnError on_source_error,
BlockdevOnError on_target_error, BlockdevOnError on_target_error,