[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 09/25] blockjob: add set_speed to BlockJobDriver
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PATCH v3 09/25] blockjob: add set_speed to BlockJobDriver |
Date: |
Mon, 26 Oct 2020 20:17:59 +0300 |
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>
---
include/block/blockjob_int.h | 2 ++
blockjob.c | 6 ++++++
2 files changed, 8 insertions(+)
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);
};
/**
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;
}
--
2.21.3
- [PATCH v3 00/25] backup performance: block_status + async, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 01/25] iotests: 129 don't check backup "busy", Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 05/25] block/block-copy: add max_chunk and max_workers parameters, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 02/25] qapi: backup: add perf.use-copy-range parameter, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 03/25] block/block-copy: More explicit call_state, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 06/25] block/block-copy: add list of all call-states, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 04/25] block/block-copy: implement block_copy_async, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 08/25] block/block-copy: add block_copy_cancel, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 07/25] block/block-copy: add ratelimit to block-copy, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 09/25] blockjob: add set_speed to BlockJobDriver,
Vladimir Sementsov-Ogievskiy <=
- [PATCH v3 10/25] job: call job_enter from job_user_pause, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 11/25] qapi: backup: add max-chunk and max-workers to x-perf struct, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 12/25] iotests: 56: prepare for backup over block-copy, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 14/25] iotests: 185: prepare for backup over block-copy, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 15/25] iotests: 219: prepare for backup over block-copy, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 13/25] iotests: 129: prepare for backup over block-copy, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 17/25] block/block-copy: make progress_bytes_callback optional, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 18/25] block/backup: drop extra gotos from backup_run(), Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 19/25] backup: move to block-copy, Vladimir Sementsov-Ogievskiy, 2020/10/26
- [PATCH v3 20/25] qapi: backup: disable copy_range by default, Vladimir Sementsov-Ogievskiy, 2020/10/26