[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PULL 03/69] block: move restarting of throttled reqs to bl
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PULL 03/69] block: move restarting of throttled reqs to block/throttle-groups.c |
Date: |
Thu, 12 May 2016 16:34:43 +0200 |
From: Paolo Bonzini <address@hidden>
We want to remove throttled_reqs from block/io.c. This is the easy
part---hide the handling of throttled_reqs during disable/enable of
throttling within throttle-groups.c.
Signed-off-by: Paolo Bonzini <address@hidden>
Acked-by: Stefan Hajnoczi <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
block/io.c | 15 +--------------
block/throttle-groups.c | 14 ++++++++++++++
include/block/throttle-groups.h | 1 +
3 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/block/io.c b/block/io.c
index 691baa6..9201b89 100644
--- a/block/io.c
+++ b/block/io.c
@@ -62,28 +62,15 @@ static int coroutine_fn
bdrv_co_do_write_zeroes(BlockDriverState *bs,
void bdrv_set_io_limits(BlockDriverState *bs,
ThrottleConfig *cfg)
{
- int i;
-
throttle_group_config(bs, cfg);
-
- for (i = 0; i < 2; i++) {
- qemu_co_enter_next(&bs->throttled_reqs[i]);
- }
}
static void bdrv_start_throttled_reqs(BlockDriverState *bs)
{
bool enabled = bs->io_limits_enabled;
- int i;
bs->io_limits_enabled = false;
-
- for (i = 0; i < 2; i++) {
- while (qemu_co_enter_next(&bs->throttled_reqs[i])) {
- ;
- }
- }
-
+ throttle_group_restart_bs(bs);
bs->io_limits_enabled = enabled;
}
diff --git a/block/throttle-groups.c b/block/throttle-groups.c
index 4920e09..b796f6b 100644
--- a/block/throttle-groups.c
+++ b/block/throttle-groups.c
@@ -313,6 +313,17 @@ void coroutine_fn
throttle_group_co_io_limits_intercept(BlockDriverState *bs,
qemu_mutex_unlock(&tg->lock);
}
+void throttle_group_restart_bs(BlockDriverState *bs)
+{
+ int i;
+
+ for (i = 0; i < 2; i++) {
+ while (qemu_co_enter_next(&bs->throttled_reqs[i])) {
+ ;
+ }
+ }
+}
+
/* Update the throttle configuration for a particular group. Similar
* to throttle_config(), but guarantees atomicity within the
* throttling group.
@@ -335,6 +346,9 @@ void throttle_group_config(BlockDriverState *bs,
ThrottleConfig *cfg)
}
throttle_config(ts, tt, cfg);
qemu_mutex_unlock(&tg->lock);
+
+ qemu_co_enter_next(&bs->throttled_reqs[0]);
+ qemu_co_enter_next(&bs->throttled_reqs[1]);
}
/* Get the throttle configuration from a particular group. Similar to
diff --git a/include/block/throttle-groups.h b/include/block/throttle-groups.h
index aba28f3..395f72d 100644
--- a/include/block/throttle-groups.h
+++ b/include/block/throttle-groups.h
@@ -38,6 +38,7 @@ 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 throttle_group_restart_bs(BlockDriverState *bs);
void coroutine_fn throttle_group_co_io_limits_intercept(BlockDriverState *bs,
unsigned int bytes,
--
1.8.3.1
- [Qemu-block] [PULL 00/69] Block layer patches, Kevin Wolf, 2016/05/12
- [Qemu-block] [PULL 04/69] block: extract bdrv_drain_poll/bdrv_co_yield_to_drain from bdrv_drain/bdrv_co_drain, Kevin Wolf, 2016/05/12
- [Qemu-block] [PULL 01/69] block: Don't disable I/O throttling on sync requests, Kevin Wolf, 2016/05/12
- [Qemu-block] [PULL 03/69] block: move restarting of throttled reqs to block/throttle-groups.c,
Kevin Wolf <=
- [Qemu-block] [PULL 02/69] block: make bdrv_start_throttled_reqs return void, Kevin Wolf, 2016/05/12
- [Qemu-block] [PULL 06/69] block: plug whole tree at once, introduce bdrv_io_unplugged_begin/end, Kevin Wolf, 2016/05/12
- [Qemu-block] [PULL 09/69] block: Introduce bdrv_driver_pwritev(), Kevin Wolf, 2016/05/12
- [Qemu-block] [PULL 07/69] linux-aio: make it more type safe, Kevin Wolf, 2016/05/12
- [Qemu-block] [PULL 05/69] block: introduce bdrv_no_throttling_begin/end, Kevin Wolf, 2016/05/12
- [Qemu-block] [PULL 11/69] block: Rename bdrv_co_do_preadv/writev to bdrv_co_preadv/writev, Kevin Wolf, 2016/05/12
- [Qemu-block] [PULL 08/69] block: Introduce bdrv_driver_preadv(), Kevin Wolf, 2016/05/12
- [Qemu-block] [PULL 10/69] block: Support AIO drivers in bdrv_driver_preadv/pwritev(), Kevin Wolf, 2016/05/12
- [Qemu-block] [PULL 12/69] block: Introduce .bdrv_co_preadv/pwritev BlockDriver function, Kevin Wolf, 2016/05/12
- [Qemu-block] [PULL 13/69] bochs: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/05/12