diff options
Diffstat (limited to 'include/block')
-rw-r--r-- | include/block/block.h | 3 | ||||
-rw-r--r-- | include/block/block_int.h | 7 | ||||
-rw-r--r-- | include/block/throttle-groups.h | 4 |
3 files changed, 11 insertions, 3 deletions
diff --git a/include/block/block.h b/include/block/block.h index f7680b6e68..f6fb8c497b 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -173,8 +173,9 @@ void bdrv_stats_print(Monitor *mon, const QObject *data); void bdrv_info_stats(Monitor *mon, QObject **ret_data); /* disk I/O throttling */ -void bdrv_io_limits_enable(BlockDriverState *bs); +void bdrv_io_limits_enable(BlockDriverState *bs, const char *group); void bdrv_io_limits_disable(BlockDriverState *bs); +void bdrv_io_limits_update_group(BlockDriverState *bs, const char *group); void bdrv_init(void); void bdrv_init_with_whitelist(void); diff --git a/include/block/block_int.h b/include/block/block_int.h index 8d15c7b680..b174852099 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -379,10 +379,13 @@ struct BlockDriverState { unsigned int serialising_in_flight; /* I/O throttling */ - ThrottleState throttle_state; - ThrottleTimers throttle_timers; CoQueue throttled_reqs[2]; bool io_limits_enabled; + /* The following fields are protected by the ThrottleGroup lock. + * See the ThrottleGroup documentation for details. */ + ThrottleState *throttle_state; + ThrottleTimers throttle_timers; + unsigned pending_reqs[2]; QLIST_ENTRY(BlockDriverState) round_robin; /* I/O stats (display with "info blockstats"). */ diff --git a/include/block/throttle-groups.h b/include/block/throttle-groups.h index b966ec793c..322139a7a2 100644 --- a/include/block/throttle-groups.h +++ b/include/block/throttle-groups.h @@ -36,4 +36,8 @@ void throttle_group_get_config(BlockDriverState *bs, ThrottleConfig *cfg); void throttle_group_register_bs(BlockDriverState *bs, const char *groupname); void throttle_group_unregister_bs(BlockDriverState *bs); +void coroutine_fn throttle_group_co_io_limits_intercept(BlockDriverState *bs, + unsigned int bytes, + bool is_write); + #endif |