[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 93/93] block: Switch bdrv_io_limits_intercept() to by
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PULL 93/93] block: Switch bdrv_io_limits_intercept() to byte granularity |
Date: |
Fri, 24 Jan 2014 18:22:16 +0100 |
Request sizes used to be rounded down to the next sector boundary,
allowing to bypass the I/O limit. Now all requests are accounted for
with their exact byte size.
Reported-by: Wenchao Xia <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
---
block.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/block.c b/block.c
index 932ce58..cb21a5f 100644
--- a/block.c
+++ b/block.c
@@ -192,7 +192,7 @@ void bdrv_io_limits_enable(BlockDriverState *bs)
* @is_write: is the IO a write
*/
static void bdrv_io_limits_intercept(BlockDriverState *bs,
- int nb_sectors,
+ unsigned int bytes,
bool is_write)
{
/* does this io must wait */
@@ -205,9 +205,8 @@ static void bdrv_io_limits_intercept(BlockDriverState *bs,
}
/* the IO will be executed, do the accounting */
- throttle_account(&bs->throttle_state,
- is_write,
- nb_sectors * BDRV_SECTOR_SIZE);
+ throttle_account(&bs->throttle_state, is_write, bytes);
+
/* if the next request must wait -> do nothing */
if (throttle_schedule_timer(&bs->throttle_state, is_write)) {
@@ -2968,8 +2967,7 @@ static int coroutine_fn
bdrv_co_do_preadv(BlockDriverState *bs,
/* throttling disk I/O */
if (bs->io_limits_enabled) {
- /* TODO Switch to byte granularity */
- bdrv_io_limits_intercept(bs, bytes >> BDRV_SECTOR_BITS, false);
+ bdrv_io_limits_intercept(bs, bytes, false);
}
/* Align read if necessary by padding qiov */
@@ -3193,8 +3191,7 @@ static int coroutine_fn
bdrv_co_do_pwritev(BlockDriverState *bs,
/* throttling disk I/O */
if (bs->io_limits_enabled) {
- /* TODO Switch to byte granularity */
- bdrv_io_limits_intercept(bs, bytes >> BDRV_SECTOR_BITS, true);
+ bdrv_io_limits_intercept(bs, bytes, true);
}
/*
--
1.8.1.4
- [Qemu-devel] [PULL 83/93] block: Allow wait_serialising_requests() at any point, (continued)
- [Qemu-devel] [PULL 83/93] block: Allow wait_serialising_requests() at any point, Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 84/93] block: Align requests in bdrv_co_do_pwritev(), Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 85/93] block: Assert serialisation assumptions in pwritev, Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 86/93] block: Change coroutine wrapper to byte granularity, Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 87/93] block: Make bdrv_pread() a bdrv_prwv_co() wrapper, Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 88/93] block: Make bdrv_pwrite() a bdrv_prwv_co() wrapper, Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 89/93] iscsi: Set bs->request_alignment, Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 90/93] blkdebug: Make required alignment configurable, Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 92/93] qemu-iotests: Test pwritev RMW logic, Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 59/93] qmp: Allow to take external snapshots on bs graphs node., Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 93/93] block: Switch bdrv_io_limits_intercept() to byte granularity,
Kevin Wolf <=
- [Qemu-devel] [PULL 73/93] block: Introduce bdrv_aligned_preadv(), Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 74/93] block: Introduce bdrv_co_do_preadv(), Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 91/93] qemu-io: New command 'sleep', Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 60/93] block/curl: Implement the libcurl timer callback interface, Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 55/93] qmp: Add QMP query-named-block-nodes to list the named BlockDriverState nodes., Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 57/93] block: Create authorizations mechanism for external snapshot and resize., Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 75/93] block: Introduce bdrv_aligned_pwritev(), Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 58/93] qmp: Allow block_resize to manipulate bs graph nodes., Kevin Wolf, 2014/01/24
- [Qemu-devel] [PULL 56/93] qmp: Allow to change password on named block driver states., Kevin Wolf, 2014/01/24