diff options
| author | Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> | 2021-01-17 00:46:50 +0300 |
|---|---|---|
| committer | Max Reitz <mreitz@redhat.com> | 2021-01-26 14:36:37 +0100 |
| commit | e0323a045f5929721c9f4b7437229f1dbdc5b5e5 (patch) | |
| tree | a332de02f1c555f36d22d533b56296ef963c85b0 | |
| parent | a6d23d56df06027acb1202e64316b00d0c05aa75 (diff) | |
| download | focaccia-qemu-e0323a045f5929721c9f4b7437229f1dbdc5b5e5.tar.gz focaccia-qemu-e0323a045f5929721c9f4b7437229f1dbdc5b5e5.zip | |
blockjob: add set_speed to BlockJobDriver
We are going to use async block-copy call in backup, so we'll need to passthrough setting backup speed to block-copy call. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Message-Id: <20210116214705.822267-9-vsementsov@virtuozzo.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
| -rw-r--r-- | blockjob.c | 6 | ||||
| -rw-r--r-- | include/block/blockjob_int.h | 2 |
2 files changed, 8 insertions, 0 deletions
diff --git a/blockjob.c b/blockjob.c index 98ac8af982..db3a21699c 100644 --- a/blockjob.c +++ b/blockjob.c @@ -256,6 +256,7 @@ static bool job_timer_pending(Job *job) void block_job_set_speed(BlockJob *job, int64_t speed, Error **errp) { + const BlockJobDriver *drv = block_job_driver(job); int64_t old_speed = job->speed; if (job_apply_verb(&job->job, JOB_VERB_SET_SPEED, errp)) { @@ -270,6 +271,11 @@ void block_job_set_speed(BlockJob *job, int64_t speed, Error **errp) ratelimit_set_speed(&job->limit, speed, BLOCK_JOB_SLICE_TIME); job->speed = speed; + + if (drv->set_speed) { + drv->set_speed(job, speed); + } + if (speed && speed <= old_speed) { return; } diff --git a/include/block/blockjob_int.h b/include/block/blockjob_int.h index e2824a36a8..6633d83da2 100644 --- a/include/block/blockjob_int.h +++ b/include/block/blockjob_int.h @@ -52,6 +52,8 @@ struct BlockJobDriver { * besides job->blk to the new AioContext. */ void (*attached_aio_context)(BlockJob *job, AioContext *new_context); + + void (*set_speed)(BlockJob *job, int64_t speed); }; /** |